equal
deleted
inserted
replaced
301 val lemma = result(); |
301 val lemma = result(); |
302 |
302 |
303 Goal "(A,m): cardR ==> (ALL n. (A,n) : cardR --> n=m)"; |
303 Goal "(A,m): cardR ==> (ALL n. (A,n) : cardR --> n=m)"; |
304 by (etac cardR.induct 1); |
304 by (etac cardR.induct 1); |
305 by (safe_tac (claset() addSEs [cardR_insertE])); |
305 by (safe_tac (claset() addSEs [cardR_insertE])); |
306 by (rename_tac "B b m" 1); |
306 by (rename_tac "B b m" 1 THEN case_tac "a = b" 1); |
307 by (case_tac "a = b" 1); |
|
308 by (subgoal_tac "A = B" 1); |
307 by (subgoal_tac "A = B" 1); |
309 by (blast_tac (claset() addEs [equalityE]) 2); |
308 by (blast_tac (claset() addEs [equalityE]) 2); |
310 by (Blast_tac 1); |
309 by (Blast_tac 1); |
311 by (subgoal_tac "EX C. A = insert b C & B = insert a C" 1); |
310 by (subgoal_tac "EX C. A = insert b C & B = insert a C" 1); |
312 by (res_inst_tac [("x","A Int B")] exI 2); |
311 by (res_inst_tac [("x","A Int B")] exI 2); |
568 (*force simplification of "card A < card (insert ...)"*) |
567 (*force simplification of "card A < card (insert ...)"*) |
569 by (etac rev_mp 1); |
568 by (etac rev_mp 1); |
570 by (asm_simp_tac (simpset() addsimps [less_Suc_eq_le]) 1); |
569 by (asm_simp_tac (simpset() addsimps [less_Suc_eq_le]) 1); |
571 by (rtac impI 1); |
570 by (rtac impI 1); |
572 (** LEVEL 10 **) |
571 (** LEVEL 10 **) |
573 by (rename_tac "Aa xa ya Ab xb yb" 1); |
572 by (rename_tac "Aa xa ya Ab xb yb" 1 THEN case_tac "xa=xb" 1); |
574 by (case_tac "xa=xb" 1); |
|
575 by (subgoal_tac "Aa = Ab" 1); |
573 by (subgoal_tac "Aa = Ab" 1); |
576 by (blast_tac (claset() addSEs [equalityE]) 2); |
574 by (blast_tac (claset() addSEs [equalityE]) 2); |
577 by (Blast_tac 1); |
575 by (Blast_tac 1); |
578 (*case xa ~= xb*) |
576 (*case xa ~= xb*) |
579 by (subgoal_tac "Aa-{xb} = Ab-{xa} & xb : Aa & xa : Ab" 1); |
577 by (subgoal_tac "Aa-{xb} = Ab-{xa} & xb : Aa & xa : Ab" 1); |