src/HOL/Finite.ML
changeset 7821 a8717f53036c
parent 7499 23e090051cb8
child 7834 915be5b9dc6f
equal deleted inserted replaced
7820:cad7cc30fa40 7821:a8717f53036c
   410 
   410 
   411 Goal "finite A ==> card(insert x A) = (if x:A then card A else Suc(card(A)))";
   411 Goal "finite A ==> card(insert x A) = (if x:A then card A else Suc(card(A)))";
   412 by (asm_simp_tac (simpset() addsimps [insert_absorb]) 1);
   412 by (asm_simp_tac (simpset() addsimps [insert_absorb]) 1);
   413 qed "card_insert_if";
   413 qed "card_insert_if";
   414 
   414 
   415 Goal "[| finite A; x: A |] ==> Suc(card(A-{x})) = card A";
   415 Goal "[| finite A; x: A |] ==> Suc (card (A-{x})) = card A";
   416 by (res_inst_tac [("t", "A")] (insert_Diff RS subst) 1);
   416 by (res_inst_tac [("t", "A")] (insert_Diff RS subst) 1);
   417 by (assume_tac 1);
   417 by (assume_tac 1);
   418 by (Asm_simp_tac 1);
   418 by (Asm_simp_tac 1);
   419 qed "card_Suc_Diff1";
   419 qed "card_Suc_Diff1";
       
   420 
       
   421 Goal "[| finite A; x: A |] ==> card (A-{x}) = card A - 1";
       
   422 by (asm_simp_tac (simpset() addsimps [card_Suc_Diff1 RS sym]) 1);
       
   423 qed "card_Diff_singleton";
   420 
   424 
   421 Goal "finite A ==> card(insert x A) = Suc(card(A-{x}))";
   425 Goal "finite A ==> card(insert x A) = Suc(card(A-{x}))";
   422 by (asm_simp_tac (simpset() addsimps [card_insert_if,card_Suc_Diff1]) 1);
   426 by (asm_simp_tac (simpset() addsimps [card_insert_if,card_Suc_Diff1]) 1);
   423 qed "card_insert";
   427 qed "card_insert";
   424 
   428 
   490 by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff]) 1);
   494 by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff]) 1);
   491 by (case_tac "A=F" 1);
   495 by (case_tac "A=F" 1);
   492 by (ALLGOALS Asm_simp_tac);
   496 by (ALLGOALS Asm_simp_tac);
   493 qed_spec_mp "psubset_card" ;
   497 qed_spec_mp "psubset_card" ;
   494 
   498 
   495 Goal "!!X. [| A <= B; card B <= card A; finite B |] ==> A = B";
   499 Goal "[| A <= B; card B <= card A; finite B |] ==> A = B";
   496 by (case_tac "A < B" 1);
   500 by (case_tac "A < B" 1);
   497 by (datac psubset_card 1 1);
   501 by (datac psubset_card 1 1);
   498 by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [psubset_eq])));
   502 by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [psubset_eq])));
   499 qed "card_seteq";
   503 qed "card_seteq";
   500 
   504