src/ZF/AC/AC10_AC15.ML
changeset 1200 d4551b1a6da7
parent 1196 d43c1f7a53fe
child 1204 a4253da68be2
equal deleted inserted replaced
1199:c8e58352b1a5 1200:d4551b1a6da7
   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";