108 goal thy "!!A. [| EX f. ALL B:{cons(0, x*nat). x:A}. \ |
108 goal thy "!!A. [| EX f. ALL B:{cons(0, x*nat). x:A}. \ |
109 \ pairwise_disjoint(f`B) & \ |
109 \ pairwise_disjoint(f`B) & \ |
110 \ sets_of_size_between(f`B, 2, succ(n)) & \ |
110 \ sets_of_size_between(f`B, 2, succ(n)) & \ |
111 \ Union(f`B)=B; n:nat |] \ |
111 \ Union(f`B)=B; n:nat |] \ |
112 \ ==> EX f. ALL B:A. f`B ~= 0 & f`B <= B & f`B lepoll n"; |
112 \ ==> EX f. ALL B:A. f`B ~= 0 & f`B <= B & f`B lepoll n"; |
113 by (fast_tac (empty_cs addSDs [lemma3, bspec, theI] |
113 by (fast_tac (empty_cs addSDs [lemma3, theI] addDs [bspec] |
114 addSEs [exE, conjE] |
114 addSEs [exE, conjE] |
115 addSIs [exI, ballI, lemma5]) 1); |
115 addIs [exI, ballI, lemma5]) 1); |
116 val ex_fun_AC13_AC15 = result(); |
116 val ex_fun_AC13_AC15 = result(); |
117 |
117 |
118 (* ********************************************************************** *) |
118 (* ********************************************************************** *) |
119 (* The target proofs *) |
119 (* The target proofs *) |
120 (* ********************************************************************** *) |
120 (* ********************************************************************** *) |
168 |
168 |
169 goalw thy AC_defs "!!n. [| n:nat; 1 le n; AC10(n) |] ==> AC13(n)"; |
169 goalw thy AC_defs "!!n. [| n:nat; 1 le n; AC10(n) |] ==> AC13(n)"; |
170 by (safe_tac ZF_cs); |
170 by (safe_tac ZF_cs); |
171 by (fast_tac (empty_cs addSEs [allE, cons_times_nat_not_Finite RSN (2, impE), |
171 by (fast_tac (empty_cs addSEs [allE, cons_times_nat_not_Finite RSN (2, impE), |
172 ex_fun_AC13_AC15]) 1); |
172 ex_fun_AC13_AC15]) 1); |
173 val AC10_imp_AC13 = result(); |
173 qed "AC10_AC13"; |
174 |
174 |
175 (* ********************************************************************** *) |
175 (* ********************************************************************** *) |
176 (* The proofs needed in the second case, not in the first *) |
176 (* The proofs needed in the second case, not in the first *) |
177 (* ********************************************************************** *) |
177 (* ********************************************************************** *) |
178 |
178 |
244 by (fast_tac (AC_cs addEs [ssubst]) 1); |
244 by (fast_tac (AC_cs addEs [ssubst]) 1); |
245 val lemma = result(); |
245 val lemma = result(); |
246 |
246 |
247 goalw thy AC_defs "!!Z. AC13(1) ==> AC1"; |
247 goalw thy AC_defs "!!Z. AC13(1) ==> AC1"; |
248 by (fast_tac (AC_cs addSEs [lemma]) 1); |
248 by (fast_tac (AC_cs addSEs [lemma]) 1); |
249 qed "AC13(1)_AC1"; |
249 qed "AC13_AC1"; |
250 |
250 |
251 (* ********************************************************************** *) |
251 (* ********************************************************************** *) |
252 (* AC11 ==> AC14 *) |
252 (* AC11 ==> AC14 *) |
253 (* ********************************************************************** *) |
253 (* ********************************************************************** *) |
254 |
254 |
255 goalw thy [AC11_def, AC14_def] "!!Z. AC11 ==> AC14"; |
255 goalw thy [AC11_def, AC14_def] "!!Z. AC11 ==> AC14"; |
256 by (fast_tac (ZF_cs addSIs [AC10_imp_AC13]) 1); |
256 by (fast_tac (ZF_cs addSIs [AC10_AC13]) 1); |
257 qed "AC11_AC14"; |
257 qed "AC11_AC14"; |