src/ZF/AC/AC10_AC15.ML
changeset 9305 3dfae8f90dcf
parent 6070 032babd0120b
child 11317 7f9e4c389318
equal deleted inserted replaced
9304:342cbcb9c0d8 9305:3dfae8f90dcf
   185 by (etac allE 1);
   185 by (etac allE 1);
   186 by (rtac impI 1);
   186 by (rtac impI 1);
   187 by (mp_tac 1);
   187 by (mp_tac 1);
   188 by (etac exE 1);
   188 by (etac exE 1);
   189 by (res_inst_tac [("x","lam x:A. {f`x}")] exI 1);
   189 by (res_inst_tac [("x","lam x:A. {f`x}")] exI 1);
   190 by (asm_full_simp_tac (simpset() addsimps
   190 by (asm_simp_tac (simpset() addsimps
   191                 [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
   191 		  [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
   192                 singletonI RS not_emptyI]) 1);
   192 		   singletonI RS not_emptyI]) 1);
   193 by (fast_tac (claset() addSEs [apply_type]) 1);
       
   194 qed "AC1_AC13";
   193 qed "AC1_AC13";
   195 
   194 
   196 (* ********************************************************************** *)
   195 (* ********************************************************************** *)
   197 (* AC13(m) ==> AC13(n) for m <= n                                         *)
   196 (* AC13(m) ==> AC13(n) for m <= n                                         *)
   198 (* ********************************************************************** *)
   197 (* ********************************************************************** *)
   233 Goal "[| A~=0; A lepoll 1 |] ==> EX a. A={a}";
   232 Goal "[| A~=0; A lepoll 1 |] ==> EX a. A={a}";
   234 by (fast_tac (claset() addSEs [not_emptyE, lepoll_1_is_sing]) 1);
   233 by (fast_tac (claset() addSEs [not_emptyE, lepoll_1_is_sing]) 1);
   235 qed "lemma_aux";
   234 qed "lemma_aux";
   236 
   235 
   237 Goal "ALL B:A. f(B)~=0 & f(B)<=B & f(B) lepoll 1  \
   236 Goal "ALL B:A. f(B)~=0 & f(B)<=B & f(B) lepoll 1  \
   238 \               ==> (lam x:A. THE y. f(x)={y}) : (PROD X:A. X)";
   237 \     ==> (lam x:A. THE y. f(x)={y}) : (PROD X:A. X)";
   239 by (rtac lam_type 1);
   238 by (rtac lam_type 1);
   240 by (dtac bspec 1 THEN (assume_tac 1));
   239 by (dtac bspec 1 THEN (assume_tac 1));
   241 by (REPEAT (etac conjE 1));
   240 by (REPEAT (etac conjE 1));
   242 by (eresolve_tac [lemma_aux RS exE] 1 THEN (assume_tac 1));
   241 by (eresolve_tac [lemma_aux RS exE] 1 THEN (assume_tac 1));
   243 by (asm_full_simp_tac (simpset() addsimps [the_element]) 1);
   242 by (asm_full_simp_tac (simpset() addsimps [the_element]) 1);
   244 by (fast_tac (claset() addEs [ssubst]) 1);
       
   245 val lemma = result();
   243 val lemma = result();
   246 
   244 
   247 Goalw AC_defs "AC13(1) ==> AC1";
   245 Goalw AC_defs "AC13(1) ==> AC1";
   248 by (fast_tac (claset() addSEs [lemma]) 1);
   246 by (fast_tac (claset() addSEs [lemma]) 1);
   249 qed "AC13_AC1";
   247 qed "AC13_AC1";