Re: [isabelle-dev] lemma addition

2013-08-01 Thread Makarius

On Thu, 25 Jul 2013, Lars Noschinski wrote:


On 25.07.2013 04:16, Christian Sternagel wrote:

While the following lemma is proved automatically

lemma converse_subset:
A¯ ⊆ B¯ ⟷ A ⊆ B by auto

I'm not sure exactly how, since simp_trace shows no application of
simplification rules and neither of the rules suggested by different
ATPs through sledgehammer are -- as far as I can tell -- automatic rules
in the sense of [intro], [elim], [dest].


auto's call to safe splits it to

goal (2 subgoals):
 1. ⋀a b. A¯ ⊆ B¯ ⟹ (a, b) ∈ A ⟹ (a, b) ∈ B
 2. ⋀a b. A ⊆ B ⟹ (b, a) ∈ A ⟹ (b, a) ∈ B

Both of which are discharged by blast. If we look at the theorems blast 
uses to prove


  ⋀a b. A¯ ⊆ B¯ ⟹ (a, b) ∈ A ⟹ (a, b) ∈ B

(how this can be done is described in Section 3.7 of the Isabelle 
Cookbook), we see that Relation.converse_iff plays a role, which was 
declared with the iff attribute.


I did not understand this mysterious reference.  Which version of the 
Cookbook, which page exactly?


Using only canonical information reveals these possibilities that might be 
little known:


  * print_options: blast_trace, blast_stats, but this looks a bit chatty
and of limited practical use

  * method step (see isar-ref manual)

lemma A¯ ⊆ B¯ ⟷ A ⊆ B
  apply step
  apply step
  apply step
  apply step
  apply step
  apply step
  apply step
  apply step
  apply step
  done

Note that these steps refer to the classic Classical Reasoner by Larry 
(safe, fast, best), while blast might work slightly differently.


(This refers to Isabelle/b7a83845bc93.)


Makarius
___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev


Re: [isabelle-dev] lemma addition

2013-08-01 Thread Lars Noschinski

On 01.08.2013 17:19, Makarius wrote:

Both of which are discharged by blast. If we look at the theorems
blast uses to prove

⋀a b. A¯ ⊆ B¯ ⟹ (a, b) ∈ A ⟹ (a, b) ∈ B

(how this can be done is described in Section 3.7 of the Isabelle
Cookbook), we see that Relation.converse_iff plays a role, which was
declared with the iff attribute.


I did not understand this mysterious reference. Which version of the
Cookbook, which page exactly?


It is less mysterious than other references on this list...

Section 3.7, p. 66ff in [1] gives recipes how proof terms can be 
inspected. It is what worked best for me for getting ideas of blast proofs.


` Using only canonical information reveals these possibilities that might

be little known:

* print_options: blast_trace, blast_stats, but this looks a bit chatty
and of limited practical use


They seem to be mostly useful for debugging blast itself.

[1] 
http://www4.in.tum.de/~urbanc/cgi-bin/repos.cgi/isabelle-cookbook/file/95d6853dec4a/progtutorial.pdf


  -- Lars
___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev


Re: [isabelle-dev] lemma addition

2013-07-25 Thread Lars Noschinski

On 25.07.2013 04:16, Christian Sternagel wrote:

While the following lemma is proved automatically

lemma converse_subset:
A¯ ⊆ B¯ ⟷ A ⊆ B by auto

I'm not sure exactly how, since simp_trace shows no application of
simplification rules and neither of the rules suggested by different
ATPs through sledgehammer are -- as far as I can tell -- automatic rules
in the sense of [intro], [elim], [dest].


auto's call to safe splits it to

goal (2 subgoals):
 1. ⋀a b. A¯ ⊆ B¯ ⟹ (a, b) ∈ A ⟹ (a, b) ∈ B
 2. ⋀a b. A ⊆ B ⟹ (b, a) ∈ A ⟹ (b, a) ∈ B

Both of which are discharged by blast. If we look at the theorems blast 
uses to prove


  ⋀a b. A¯ ⊆ B¯ ⟹ (a, b) ∈ A ⟹ (a, b) ∈ B

(how this can be done is described in Section 3.7 of the Isabelle 
Cookbook), we see that Relation.converse_iff plays a role, which was 
declared with the iff attribute.


  -- Lars
___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev


Re: [isabelle-dev] lemma addition

2013-07-25 Thread Dmitriy Traytel

Am 25.07.2013 04:16, schrieb Christian Sternagel:

Dear developers,

While the following lemma is proved automatically

  lemma converse_subset:
  A¯ ⊆ B¯ ⟷ A ⊆ B by auto

I'm not sure exactly how, since simp_trace shows no application of 
simplification rules and neither of the rules suggested by different 
ATPs through sledgehammer are -- as far as I can tell -- automatic 
rules in the sense of [intro], [elim], [dest].


Sledgehammer indicates that the following lemmas are relevant in the 
proof:


always: converse_Un converse_converse
plus either of:
  - inf_absorb2 and inf_le1
  - subset_Un_eq
  - le_iff_inf

Anyway, I found this lemma useful to have around explicitly. Maybe it 
could be added to Relation.thy? Any thoughts?
I think the usual policy is to have at least two applications before 
adding such a lemma. However we use the corresponding lemma about 
conversep in the (co)datatype package. Since the latter will sooner or 
later become part of the HOL session anyway, I think it's fine to add 
both versions to Relation.thy. I'll do that (under the name 
converse(p)_mono).


Dmitriy

PS: for me this looks like an isabelle-users thread ;-)

___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev