equal
deleted
inserted
replaced
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 |