28 |
28 |
29 Goal "|X| = |Y| <-> X eqpoll Y"; |
29 Goal "|X| = |Y| <-> X eqpoll Y"; |
30 by (blast_tac (claset() addIs [cardinal_cong, cardinal_eqE]) 1); |
30 by (blast_tac (claset() addIs [cardinal_cong, cardinal_eqE]) 1); |
31 qed "cardinal_eqpoll_iff"; |
31 qed "cardinal_eqpoll_iff"; |
32 |
32 |
33 Goal |
33 Goal "[| |A|=|B|; |C|=|D|; A Int C = 0; B Int D = 0 |] ==> \ |
34 "!!A. [| |A|=|B|; |C|=|D|; A Int C = 0; B Int D = 0 |] ==> \ |
|
35 \ |A Un C| = |B Un D|"; |
34 \ |A Un C| = |B Un D|"; |
36 by (asm_full_simp_tac (simpset() addsimps [cardinal_eqpoll_iff, |
35 by (asm_full_simp_tac (simpset() addsimps [cardinal_eqpoll_iff, |
37 eqpoll_disjoint_Un]) 1); |
36 eqpoll_disjoint_Un]) 1); |
38 qed "cardinal_disjoint_Un"; |
37 qed "cardinal_disjoint_Un"; |
39 |
38 |
104 by (rewtac lepoll_def); |
103 by (rewtac lepoll_def); |
105 by (etac exI 1); |
104 by (etac exI 1); |
106 qed "surj_implies_cardinal_le"; |
105 qed "surj_implies_cardinal_le"; |
107 |
106 |
108 (*Kunen's Lemma 10.21*) |
107 (*Kunen's Lemma 10.21*) |
109 Goal |
108 Goal "[| InfCard(K); ALL i:K. |X(i)| le K |] ==> |UN i:K. X(i)| le K"; |
110 "!!K. [| InfCard(K); ALL i:K. |X(i)| le K |] ==> |UN i:K. X(i)| le K"; |
|
111 by (asm_full_simp_tac (simpset() addsimps [InfCard_is_Card, le_Card_iff]) 1); |
109 by (asm_full_simp_tac (simpset() addsimps [InfCard_is_Card, le_Card_iff]) 1); |
112 by (rtac lepoll_trans 1); |
110 by (rtac lepoll_trans 1); |
113 by (resolve_tac [InfCard_square_eq RS eqpoll_imp_lepoll] 2); |
111 by (resolve_tac [InfCard_square_eq RS eqpoll_imp_lepoll] 2); |
114 by (asm_simp_tac (simpset() addsimps [InfCard_is_Card, Card_cardinal_eq]) 2); |
112 by (asm_simp_tac (simpset() addsimps [InfCard_is_Card, Card_cardinal_eq]) 2); |
115 by (rewtac lepoll_def); |
113 by (rewtac lepoll_def); |
132 by (etac conjunct2 1); |
130 by (etac conjunct2 1); |
133 by (asm_simp_tac (simpset() addsimps [left_inverse]) 1); |
131 by (asm_simp_tac (simpset() addsimps [left_inverse]) 1); |
134 qed "cardinal_UN_le"; |
132 qed "cardinal_UN_le"; |
135 |
133 |
136 (*The same again, using csucc*) |
134 (*The same again, using csucc*) |
137 Goal |
135 Goal "[| InfCard(K); ALL i:K. |X(i)| < csucc(K) |] ==> \ |
138 "!!K. [| InfCard(K); ALL i:K. |X(i)| < csucc(K) |] ==> \ |
|
139 \ |UN i:K. X(i)| < csucc(K)"; |
136 \ |UN i:K. X(i)| < csucc(K)"; |
140 by (asm_full_simp_tac |
137 by (asm_full_simp_tac |
141 (simpset() addsimps [Card_lt_csucc_iff, cardinal_UN_le, |
138 (simpset() addsimps [Card_lt_csucc_iff, cardinal_UN_le, |
142 InfCard_is_Card, Card_cardinal]) 1); |
139 InfCard_is_Card, Card_cardinal]) 1); |
143 qed "cardinal_UN_lt_csucc"; |
140 qed "cardinal_UN_lt_csucc"; |
144 |
141 |
145 (*The same again, for a union of ordinals. In use, j(i) is a bit like rank(i), |
142 (*The same again, for a union of ordinals. In use, j(i) is a bit like rank(i), |
146 the least ordinal j such that i:Vfrom(A,j). *) |
143 the least ordinal j such that i:Vfrom(A,j). *) |
147 Goal |
144 Goal "[| InfCard(K); ALL i:K. j(i) < csucc(K) |] ==> \ |
148 "!!K. [| InfCard(K); ALL i:K. j(i) < csucc(K) |] ==> \ |
|
149 \ (UN i:K. j(i)) < csucc(K)"; |
145 \ (UN i:K. j(i)) < csucc(K)"; |
150 by (resolve_tac [cardinal_UN_lt_csucc RS Card_lt_imp_lt] 1); |
146 by (resolve_tac [cardinal_UN_lt_csucc RS Card_lt_imp_lt] 1); |
151 by (assume_tac 1); |
147 by (assume_tac 1); |
152 by (blast_tac (claset() addIs [Ord_cardinal_le RS lt_trans1] addEs [ltE]) 1); |
148 by (blast_tac (claset() addIs [Ord_cardinal_le RS lt_trans1] addEs [ltE]) 1); |
153 by (blast_tac (claset() addSIs [Ord_UN] addEs [ltE]) 1); |
149 by (blast_tac (claset() addSIs [Ord_UN] addEs [ltE]) 1); |
176 (simpset() addsimps [inj_is_fun RS apply_rangeI, left_inverse]) 1); |
172 (simpset() addsimps [inj_is_fun RS apply_rangeI, left_inverse]) 1); |
177 val inj_UN_subset = result(); |
173 val inj_UN_subset = result(); |
178 |
174 |
179 (*Simpler to require |W|=K; we'd have a bijection; but the theorem would |
175 (*Simpler to require |W|=K; we'd have a bijection; but the theorem would |
180 be weaker.*) |
176 be weaker.*) |
181 Goal |
177 Goal "[| InfCard(K); |W| le K; ALL w:W. j(w) < csucc(K) |] ==> \ |
182 "!!K. [| InfCard(K); |W| le K; ALL w:W. j(w) < csucc(K) |] ==> \ |
|
183 \ (UN w:W. j(w)) < csucc(K)"; |
178 \ (UN w:W. j(w)) < csucc(K)"; |
184 by (excluded_middle_tac "W=0" 1); |
179 by (excluded_middle_tac "W=0" 1); |
185 by (asm_simp_tac (*solve the easy 0 case*) |
180 by (asm_simp_tac (*solve the easy 0 case*) |
186 (simpset() addsimps [UN_0, InfCard_is_Card, Card_is_Ord RS Card_csucc, |
181 (simpset() addsimps [UN_0, InfCard_is_Card, Card_is_Ord RS Card_csucc, |
187 Card_is_Ord, Ord_0_lt_csucc]) 2); |
182 Card_is_Ord, Ord_0_lt_csucc]) 2); |