equal
deleted
inserted
replaced
232 by (rtac ([UN_least, succI1 RS UN_upper] MRS equalityI) 1); |
232 by (rtac ([UN_least, succI1 RS UN_upper] MRS equalityI) 1); |
233 by (etac succE 1); |
233 by (etac succE 1); |
234 by (Blast_tac 1); |
234 by (Blast_tac 1); |
235 by (etac (rank_lt RS leI RS succ_leI RS le_imp_subset) 1); |
235 by (etac (rank_lt RS leI RS succ_leI RS le_imp_subset) 1); |
236 qed "rank_succ"; |
236 qed "rank_succ"; |
|
237 Addsimps [rank_0, rank_succ]; |
237 |
238 |
238 Goal "rank(Union(A)) = (UN x:A. rank(x))"; |
239 Goal "rank(Union(A)) = (UN x:A. rank(x))"; |
239 by (rtac equalityI 1); |
240 by (rtac equalityI 1); |
240 by (rtac (rank_mono RS le_imp_subset RS UN_least) 2); |
241 by (rtac (rank_mono RS le_imp_subset RS UN_least) 2); |
241 by (etac Union_upper 2); |
242 by (etac Union_upper 2); |
262 |
263 |
263 Goalw [Pair_def] "rank(b) < rank(<a,b>)"; |
264 Goalw [Pair_def] "rank(b) < rank(<a,b>)"; |
264 by (rtac (consI1 RS consI2 RS rank_lt RS lt_trans) 1); |
265 by (rtac (consI1 RS consI2 RS rank_lt RS lt_trans) 1); |
265 by (rtac (consI1 RS consI2 RS rank_lt) 1); |
266 by (rtac (consI1 RS consI2 RS rank_lt) 1); |
266 qed "rank_pair2"; |
267 qed "rank_pair2"; |
|
268 |
|
269 (*Not clear how to remove the P(a) condition, since the "then" part |
|
270 must refer to "a"*) |
|
271 Goal "P(a) ==> (THE x. P(x)) = (if (EX!x. P(x)) then a else 0)"; |
|
272 by (asm_simp_tac (simpset() addsimps [the_0, the_equality2]) 1); |
|
273 qed "the_equality_if"; |
|
274 |
|
275 (*The premise is needed not just to fix i but to ensure f~=0*) |
|
276 Goalw [apply_def] "i : domain(f) ==> rank(f`i) < rank(f)"; |
|
277 by (Clarify_tac 1); |
|
278 by (subgoal_tac "rank(y) < rank(f)" 1); |
|
279 by (blast_tac (claset() addIs [lt_trans, rank_lt, rank_pair2]) 2); |
|
280 by (subgoal_tac "0 < rank(f)" 1); |
|
281 by (etac (Ord_rank RS Ord_0_le RS lt_trans1) 2); |
|
282 by (asm_simp_tac (simpset() addsimps [the_equality_if]) 1); |
|
283 qed "rank_apply"; |
|
284 |
267 |
285 |
268 (*** Corollaries of leastness ***) |
286 (*** Corollaries of leastness ***) |
269 |
287 |
270 Goal "A:B ==> eclose(A)<=eclose(B)"; |
288 Goal "A:B ==> eclose(A)<=eclose(B)"; |
271 by (rtac (Transset_eclose RS eclose_least) 1); |
289 by (rtac (Transset_eclose RS eclose_least) 1); |