147 (* Rules nedded to prove lemma1 *) |
147 (* Rules nedded to prove lemma1 *) |
148 val snd_lepoll_SigmaI = prod_lepoll_self RS |
148 val snd_lepoll_SigmaI = prod_lepoll_self RS |
149 ((prod_commute_eqpoll RS eqpoll_imp_lepoll) RSN (2,lepoll_trans)); |
149 ((prod_commute_eqpoll RS eqpoll_imp_lepoll) RSN (2,lepoll_trans)); |
150 |
150 |
151 |
151 |
|
152 Goal "[|0 \\<notin> A; B \\<in> A|] ==> nat \\<lesssim> ((nat \\<rightarrow> Union(A)) \\<times> B) \\<times> nat"; |
|
153 by (blast_tac (claset() addDs [Sigma_fun_space_not0] |
|
154 addIs [snd_lepoll_SigmaI]) 1); |
|
155 qed "nat_lepoll_lemma"; |
|
156 |
|
157 |
152 Goal "[| 0~:A; A~=0; \ |
158 Goal "[| 0~:A; A~=0; \ |
153 \ C = {((nat->Union(A))*B)*nat. B:A} Un \ |
159 \ C = {((nat->Union(A))*B)*nat. B:A} Un \ |
154 \ {cons(0,((nat->Union(A))*B)*nat). B:A}; \ |
160 \ {cons(0,((nat->Union(A))*B)*nat). B:A}; \ |
155 \ B1: C; B2: C |] \ |
161 \ B1: C; B2: C |] \ |
156 \ ==> B1 eqpoll B2"; |
162 \ ==> B1 eqpoll B2"; |
157 by (blast_tac (claset() addSIs [nat_cons_eqpoll RS eqpoll_trans] |
163 by (blast_tac |
158 addDs [Sigma_fun_space_not0] |
164 (claset() addSIs [nat_lepoll_lemma, nat_cons_eqpoll RS eqpoll_trans, |
159 addIs [eqpoll_trans, eqpoll_sym, snd_lepoll_SigmaI, |
165 eqpoll_refl RSN (2, prod_eqpoll_cong)] |
160 eqpoll_refl RSN (2, prod_eqpoll_cong), |
166 addIs [eqpoll_trans, eqpoll_sym, Sigma_fun_space_eqpoll]) 1); |
161 Sigma_fun_space_eqpoll]) 1); |
|
162 val lemma1 = result(); |
167 val lemma1 = result(); |
163 |
168 |
164 Goal "ALL B1:{(F*B)*N. B:A} Un {cons(0,(F*B)*N). B:A}. \ |
169 Goal "ALL B1:{(F*B)*N. B:A} Un {cons(0,(F*B)*N). B:A}. \ |
165 \ ALL B2:{(F*B)*N. B:A} \ |
170 \ ALL B2:{(F*B)*N. B:A} \ |
166 \ Un {cons(0,(F*B)*N). B:A}. f`<B1,B2> : bij(B1, B2) \ |
171 \ Un {cons(0,(F*B)*N). B:A}. f`<B1,B2> : bij(B1, B2) \ |