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); |