text\<open>These two are cited in Benzmueller and Kohlhase's system description of
LEO, CADE-15, 1998 (page 139-143) as theorems LEO could not prove.\<close> lemma"(X = Y \ Z) \ (Y \ X \ Z \ X \ (\V. Y \ V \ Z \ V \ X \ V))" by (blast intro!: equalityI)
text\<open>the dual of the previous one\<close> lemma"(X = Y \ Z) \ (X \ Y \ X \ Z \ (\V. V \ Y \ V \ Z \ V \ X))" by (blast intro!: equalityI)
text\<open>trivial example of term synthesis: apparently hard for some provers!\<close>
schematic_goal "a \ b \ a:?X \ b \ ?X" by blast
text\<open>Nice blast benchmark. Proved in 0.3s; old tactics can't manage it!\<close> lemma"\x \ S. \y \ S. x \ y \ \z. S \ {z}" by blast
text\<open>variant of the benchmark above\<close> lemma"\x \ S. \(S) \ x \ \z. S \ {z}" by blast
(*Example 12 (credited to Peter Andrews) from W. Bledsoe. A Maximal Method for Set Variables in Automatic Theorem-proving. In: J. Hayes and D. Michie and L. Mikulich, eds. Machine Intelligence 9.
Ellis Horwood, 53-100 (1979). *) lemma"(\F. {x} \ F \ {y} \ F) \ (\A. x \ A \ y \ A)" by best
text\<open>A characterization of functions suggested by Tobias Nipkow\<close> lemma"r \ domain(r)->B \ r \ domain(r)*B \ (\X. r `` (r -`` X) \ X)" by (unfold Pi_def function_def, best)
subsection\<open>Composition of homomorphisms is a Homomorphism\<close>
text\<open>Given as a challenge problem in
R. Boyer et al.,
Set Theoryin First-Order Logic: Clauses for Gödel's Axioms,
JAR 2 (1986), 287-327\<close>
(*Force helps prove conditions of rewrites such as comp_fun_apply, since
rewriting does not instantiate Vars.*) lemma"(\A f B g. hom(A,f,B,g) =
{H \<in> A->B. f \<in> A*A->A \<and> g \<in> B*B->B \<and>
(\<forall>x \<in> A. \<forall>y \<in> A. H`(f`\<langle>x,y\<rangle>) = g`<H`x,H`y>)}) \<longrightarrow>
J \<in> hom(A,f,B,g) \<and> K \<in> hom(B,g,C,h) \<longrightarrow>
(K O J) \<in> hom(A,f,C,h)" by force
text\<open>Another version, with meta-level rewriting\<close> lemma"(\A f B g. hom(A,f,B,g) \
{H \<in> A->B. f \<in> A*A->A \<and> g \<in> B*B->B \<and>
(\<forall>x \<in> A. \<forall>y \<in> A. H`(f`\<langle>x,y\<rangle>) = g`<H`x,H`y>)}) \<Longrightarrow> J \<in> hom(A,f,B,g) \<and> K \<in> hom(B,g,C,h) \<longrightarrow> (K O J) \<in> hom(A,f,C,h)" by force
subsection\<open>Pastre's Examples\<close>
text\<open>D Pastre. Automatic theorem proving in set theory.
Artificial Intelligence, 10:1--27, 1978.
Previously, these were doneusing ML code, but blast manages fine.\<close>
lemma pastre1: "\(h O g O f) \ inj(A,A);
(f O h O g) \<in> surj(B,B);
(g O f O h) \<in> surj(C,C);
f \<in> A->B; g \<in> B->C; h \<in> C->A\<rbrakk> \<Longrightarrow> h \<in> bij(C,A)" by (unfold bij_def, blast)
lemma pastre3: "\(h O g O f) \ surj(A,A);
(f O h O g) \<in> surj(B,B);
(g O f O h) \<in> inj(C,C);
f \<in> A->B; g \<in> B->C; h \<in> C->A\<rbrakk> \<Longrightarrow> h \<in> bij(C,A)" by (unfold bij_def, blast)
lemma pastre4: "\(h O g O f) \ surj(A,A);
(f O h O g) \<in> inj(B,B);
(g O f O h) \<in> inj(C,C);
f \<in> A->B; g \<in> B->C; h \<in> C->A\<rbrakk> \<Longrightarrow> h \<in> bij(C,A)" by (unfold bij_def, blast)
lemma pastre5: "\(h O g O f) \ inj(A,A);
(f O h O g) \<in> surj(B,B);
(g O f O h) \<in> inj(C,C);
f \<in> A->B; g \<in> B->C; h \<in> C->A\<rbrakk> \<Longrightarrow> h \<in> bij(C,A)" by (unfold bij_def, blast)
lemma pastre6: "\(h O g O f) \ inj(A,A);
(f O h O g) \<in> inj(B,B);
(g O f O h) \<in> surj(C,C);
f \<in> A->B; g \<in> B->C; h \<in> C->A\<rbrakk> \<Longrightarrow> h \<in> bij(C,A)" by (unfold bij_def, blast)
end
[ zur Elbe Produktseite wechseln0.20Quellennavigators
Analyse erneut starten
]