src/ZF/ZF.ML
changeset 825 76d9575950f2
parent 775 7b60621e2bad
child 854 2e3ca37dfa14
equal deleted inserted replaced
824:120fc7e857ba 825:76d9575950f2
     1 (*  Title: 	ZF/zf.ML
     1 (*  Title: 	ZF/ZF.ML
     2     ID:         $Id$
     2     ID:         $Id$
     3     Author: 	Lawrence C Paulson and Martin D Coen, CU Computer Laboratory
     3     Author: 	Lawrence C Paulson and Martin D Coen, CU Computer Laboratory
     4     Copyright   1994  University of Cambridge
     4     Copyright   1994  University of Cambridge
     5 
     5 
     6 Basic introduction and elimination rules for Zermelo-Fraenkel Set Theory 
     6 Basic introduction and elimination rules for Zermelo-Fraenkel Set Theory 
     7 *)
     7 *)
     8 
     8 
     9 open ZF;
     9 open ZF;
    10 
    10 
       
    11 
       
    12 (*Useful examples:  singletonI RS subst_elem,  subst_elem RSN (2,IntI) *)
       
    13 goal ZF.thy "!!a b A. [| b:A;  a=b |] ==> a:A";
       
    14 by (etac ssubst 1);
       
    15 by (assume_tac 1);
       
    16 val subst_elem = result();
    11 
    17 
    12 (*** Bounded universal quantifier ***)
    18 (*** Bounded universal quantifier ***)
    13 
    19 
    14 qed_goalw "ballI" ZF.thy [Ball_def]
    20 qed_goalw "ballI" ZF.thy [Ball_def]
    15     "[| !!x. x:A ==> P(x) |] ==> ALL x:A. P(x)"
    21     "[| !!x. x:A ==> P(x) |] ==> ALL x:A. P(x)"
   394 
   400 
   395 qed_goal "equals0D" ZF.thy "[| A=0;  a:A |] ==> P"
   401 qed_goal "equals0D" ZF.thy "[| A=0;  a:A |] ==> P"
   396  (fn [major,minor]=>
   402  (fn [major,minor]=>
   397   [ (rtac (minor RS (major RS equalityD1 RS subsetD RS emptyE)) 1) ]);
   403   [ (rtac (minor RS (major RS equalityD1 RS subsetD RS emptyE)) 1) ]);
   398 
   404 
       
   405 qed_goal "not_emptyI" ZF.thy "!!A a. a:A ==> A ~= 0"
       
   406  (fn _ => [REPEAT (ares_tac [notI, equals0D] 1)]);
       
   407 
       
   408 qed_goal "not_emptyE" ZF.thy "[| A ~= 0;  !!x. x:A ==> R |] ==> R";
       
   409  (fn [major,minor]=>
       
   410   [ rtac ([major, equals0I] MRS swap) 1,
       
   411     swap_res_tac [minor] 1,
       
   412     assume_tac 1 ]);
       
   413 
       
   414 (*Can replace most uses by eq_cs (which is ZF_cs addSIs [equalityI])*)
   399 (*A claset that leaves <= formulae unchanged!*)
   415 (*A claset that leaves <= formulae unchanged!*)
   400 val subset0_cs = FOL_cs
   416 val subset0_cs = FOL_cs
   401   addSIs [ballI, InterI, CollectI, PowI, empty_subsetI]
   417   addSIs [ballI, InterI, CollectI, PowI, empty_subsetI]
   402   addIs [bexI, UnionI, ReplaceI, RepFunI]
   418   addIs [bexI, UnionI, ReplaceI, RepFunI]
   403   addSEs [bexE, make_elim PowD, UnionE, ReplaceE2, RepFunE,
   419   addSEs [bexE, make_elim PowD, UnionE, ReplaceE2, RepFunE,