src/ZF/upair.ML
changeset 1609 5324067d993f
parent 1461 6bcb44e4d6e5
child 2469 b50b8c0eec01
equal deleted inserted replaced
1608:e15e8c0c1e37 1609:5324067d993f
   154 qed_goal "consCI" ZF.thy "(a~:B ==> a=b) ==> a: cons(b,B)"
   154 qed_goal "consCI" ZF.thy "(a~:B ==> a=b) ==> a: cons(b,B)"
   155  (fn [prem]=>
   155  (fn [prem]=>
   156   [ (rtac (disjCI RS (cons_iff RS iffD2)) 1),
   156   [ (rtac (disjCI RS (cons_iff RS iffD2)) 1),
   157     (etac prem 1) ]);
   157     (etac prem 1) ]);
   158 
   158 
       
   159 qed_goal "cons_neq_0" ZF.thy "cons(a,B)=0 ==> P"
       
   160  (fn [major]=>
       
   161   [ (rtac (major RS equalityD1 RS subsetD RS emptyE) 1),
       
   162     (rtac consI1 1) ]);
       
   163 
       
   164 (*Useful for rewriting*)
       
   165 qed_goal "cons_not_0" ZF.thy "cons(a,B) ~= 0"
       
   166  (fn _=> [ (rtac notI 1), (etac cons_neq_0 1) ]);
       
   167 
   159 (*** Singletons - using cons ***)
   168 (*** Singletons - using cons ***)
   160 
   169 
   161 qed_goal "singletonI" ZF.thy "a : {a}"
   170 qed_goal "singletonI" ZF.thy "a : {a}"
   162  (fn _=> [ (rtac consI1 1) ]);
   171  (fn _=> [ (rtac consI1 1) ]);
   163 
   172 
   306  (fn _=> [ (rtac notI 1), (etac succ_neq_0 1) ]);
   315  (fn _=> [ (rtac notI 1), (etac succ_neq_0 1) ]);
   307 
   316 
   308 (* succ(c) <= B ==> c : B *)
   317 (* succ(c) <= B ==> c : B *)
   309 val succ_subsetD = succI1 RSN (2,subsetD);
   318 val succ_subsetD = succI1 RSN (2,subsetD);
   310 
   319 
       
   320 (* succ(b) ~= b *)
       
   321 bind_thm ("succ_neq_self", succI1 RS mem_imp_not_eq RS not_sym);
       
   322 
       
   323 
   311 qed_goal "succ_inject" ZF.thy "!!m n. succ(m) = succ(n) ==> m=n"
   324 qed_goal "succ_inject" ZF.thy "!!m n. succ(m) = succ(n) ==> m=n"
   312  (fn _ =>
   325  (fn _ =>
   313   [ (fast_tac (lemmas_cs addSEs [succE, equalityE, make_elim succ_subsetD] 
   326   [ (fast_tac (lemmas_cs addSEs [succE, equalityE, make_elim succ_subsetD] 
   314                          addEs [mem_asym]) 1) ]);
   327                          addEs [mem_asym]) 1) ]);
   315 
   328