Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/Isabelle/ZF/ex/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 6 kB image not shown  

Quelle  misc.thy   Sprache: Isabelle

 
(*  Title:      ZF/ex/misc.thy
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
    Copyright   1993  University of Cambridge

Composition of homomorphisms, Pastre's examples, ...
*)


sectionMiscellaneous ZF Examples

theory misc imports ZF begin

subsectionVarious Small Problems

textThe singleton problems are much harder in HOL.
lemma singleton_example_1:
     "\x \ S. \y \ S. x \ y \ \z. S \ {z}"
  by blast

lemma singleton_example_2:
     "\x \ S. \S \ x \ \z. S \ {z}"
  🍋 Variant of the problem above.
  by blast

lemma "\!x. f (g(x)) = x \ \!y. g (f(y)) = y"
  🍋 A unique fixpoint theorem --- fast/best/auto all fail. 
  apply (erule ex1E, rule ex1I, erule subst_context)
  apply (rule subst, assumption, erule allE, rule subst_context, erule mp)
  apply (erule subst_context)
  done


textA weird property of ordered pairs.
lemma "b\c \ \a,b\ \ \a,c\ = \a,a\"
by (simp add: Pair_def Int_cons_left Int_cons_right doubleton_eq_iff, blast)

textThese two are cited in Benzmueller and Kohlhase's system description of
 LEO, CADE-15, 1998 (page 139-143) as theorems LEO could not prove.
lemma "(X = Y \ Z) \ (Y \ X \ Z \ X \ (\V. Y \ V \ Z \ V \ X \ V))"
by (blast intro!: equalityI)

textthe dual of the previous one
lemma "(X = Y \ Z) \ (X \ Y \ X \ Z \ (\V. V \ Y \ V \ Z \ V \ X))"
by (blast intro!: equalityI)

texttrivial example of term synthesis: apparently hard for some provers!
schematic_goal "a \ b \ a:?X \ b \ ?X"
by blast

textNice blast benchmark.  Proved in 0.3s; old tactics can't manage it!\
lemma "\x \ S. \y \ S. x \ y \ \z. S \ {z}"
by blast

textvariant of the benchmark above
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

textA characterization of functions suggested by Tobias Nipkow
lemma "r \ domain(r)->B \ r \ domain(r)*B \ (\X. r `` (r -`` X) \ X)"
by (unfold Pi_def function_def, best)


subsectionComposition of homomorphisms is a Homomorphism

textGiven as a challenge problem in
  R. Boyer et al.,
  Set Theory in First-Order Logic: Clauses for Gödel's Axioms,
  JAR 2 (1986), 287-327

textcollecting the relevant lemmas
declare comp_fun [simp] SigmaI [simp] apply_funtype [simp]

(*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  A->B. f  A*A->A  g  B*B->B   
                     ( A.  A. H`(f`x,y) = g`<H`x,H`y>)})   
       J  hom(A,f,B,g)  K  hom(B,g,C,h)    
       (K O J)  hom(A,f,C,h)"
by force

textAnother version, with meta-level rewriting
lemma "(\A f B g. hom(A,f,B,g) \
           {H  A->B. f  A*A->A  g  B*B->B   
                     ( A.  A. H`(f`x,y) = g`<H`x,H`y>)}) 
       ==> J  hom(A,f,B,g)  K  hom(B,g,C,h)  (K O J)  hom(A,f,C,h)"
by force


subsectionPastre's Examples\

textD Pastre.  Automatic theorem proving in set theory
        Artificial Intelligence, 10:1--27, 1978.
Previously, these were done using ML code, but blast manages fine.

lemmas compIs [intro] = comp_surj comp_inj comp_fun [intro]
lemmas compDs [dest] =  comp_mem_injD1 comp_mem_surjD1 
                        comp_mem_injD2 comp_mem_surjD2

lemma pastre1: 
    "\(h O g O f) \ inj(A,A);
        (f O h O g)  surj(B,B);          
        (g O f O h)  surj(C,C);          
        f  A->B;  g  B->C;  h  C->A] ==> h  bij(C,A)"
by (unfold bij_def, blast)

lemma pastre3: 
    "\(h O g O f) \ surj(A,A);
        (f O h O g)  surj(B,B);          
        (g O f O h)  inj(C,C);           
        f  A->B;  g  B->C;  h  C->A] ==> h  bij(C,A)"
by (unfold bij_def, blast)

lemma pastre4: 
    "\(h O g O f) \ surj(A,A);
        (f O h O g)  inj(B,B);           
        (g O f O h)  inj(C,C);           
        f  A->B;  g  B->C;  h  C->A] ==> h  bij(C,A)"
by (unfold bij_def, blast)

lemma pastre5: 
    "\(h O g O f) \ inj(A,A);
        (f O h O g)  surj(B,B);          
        (g O f O h)  inj(C,C);           
        f  A->B;  g  B->C;  h  C->A] ==> h  bij(C,A)"
by (unfold bij_def, blast)

lemma pastre6: 
    "\(h O g O f) \ inj(A,A);
        (f O h O g)  inj(B,B);           
        (g O f O h)  surj(C,C);          
        f  A->B;  g  B->C;  h  C->A] ==> h  bij(C,A)"
by (unfold bij_def, blast)


end


Messung V0.5
C=96 H=100 G=97

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.