src/ZF/AC/DC.ML
changeset 1924 0f1a583457da
parent 1461 6bcb44e4d6e5
child 1932 cc9f1ba8f29a
equal deleted inserted replaced
1923:e100f28ffc18 1924:0f1a583457da
    52 by (rtac SigmaI 1);
    52 by (rtac SigmaI 1);
    53 by (fast_tac (AC_cs addSIs [nat_0I RS UN_I, empty_fun]) 1);
    53 by (fast_tac (AC_cs addSIs [nat_0I RS UN_I, empty_fun]) 1);
    54 by (fast_tac (AC_cs addSIs [nat_1I RS UN_I, singleton_fun RS Pi_type]
    54 by (fast_tac (AC_cs addSIs [nat_1I RS UN_I, singleton_fun RS Pi_type]
    55         addss (AC_ss addsimps [[lepoll_refl, succI1] MRS lepoll_1_is_sing,
    55         addss (AC_ss addsimps [[lepoll_refl, succI1] MRS lepoll_1_is_sing,
    56         apply_singleton_eq, image_0])) 1);
    56         apply_singleton_eq, image_0])) 1);
    57 by (asm_full_simp_tac (AC_ss addsimps [domain_0, restrict_0, domain_sing,
    57 by (asm_full_simp_tac (AC_ss addsimps [domain_0, restrict_0, domain_cons,
    58                 [lepoll_refl, succI1] MRS lepoll_1_is_sing]) 1);
    58                 [lepoll_refl, succI1] MRS lepoll_1_is_sing]) 1);
    59 val lemma1_2 = result();
    59 val lemma1_2 = result();
    60 
    60 
    61 goal thy "!!X. ALL Y:Pow(X). Y lesspoll nat --> (EX x:X. <Y, x> : R)  \
    61 goal thy "!!X. ALL Y:Pow(X). Y lesspoll nat --> (EX x:X. <Y, x> : R)  \
    62 \       ==> range({z: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
    62 \       ==> range({z: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   190 by (resolve_tac [lemma3_1 RS lemma3_2 RS ssubst] 1
   190 by (resolve_tac [lemma3_1 RS lemma3_2 RS ssubst] 1
   191         THEN REPEAT (assume_tac 1));
   191         THEN REPEAT (assume_tac 1));
   192 by (fast_tac (AC_cs addSEs [nat_succI]) 1);
   192 by (fast_tac (AC_cs addSEs [nat_succI]) 1);
   193 by (dresolve_tac [nat_succI RSN (4, lemma2)] 1
   193 by (dresolve_tac [nat_succI RSN (4, lemma2)] 1
   194         THEN REPEAT (assume_tac 1));
   194         THEN REPEAT (assume_tac 1));
   195 by (fast_tac (AC_cs addSEs [conjE, image_fun RS sym,
   195 by (fast_tac (AC_cs addSEs [nat_into_Ord RSN (2, OrdmemD) RSN 
   196         nat_into_Ord RSN (2, OrdmemD)]) 1);
   196 			    (2, image_fun RS sym)]) 1);
   197 val lemma3 = result();
   197 val lemma3 = result();
   198 
   198 
   199 goal thy "!!f. [| f:A->B; B<=C |] ==> f:A->C";
   199 goal thy "!!f. [| f:A->B; B<=C |] ==> f:A->C";
   200 by (rtac Pi_type 1 THEN (assume_tac 1));
   200 by (rtac Pi_type 1 THEN (assume_tac 1));
   201 by (fast_tac (AC_cs addSEs [apply_type]) 1);
   201 by (fast_tac (AC_cs addSEs [apply_type]) 1);