src/ZF/CardinalArith.ML
changeset 12089 34e7693271a9
parent 9907 473a6604da94
child 12152 46f128d8133c
equal deleted inserted replaced
12088:6f463d16cbd0 12089:34e7693271a9
   741 by (etac Fin.induct 1);
   741 by (etac Fin.induct 1);
   742 by (Simp_tac 1);
   742 by (Simp_tac 1);
   743 by (blast_tac (claset() addIs [Fin.consI, impOfSubs Fin_mono]) 1);
   743 by (blast_tac (claset() addIs [Fin.consI, impOfSubs Fin_mono]) 1);
   744 qed "Finite_Union";
   744 qed "Finite_Union";
   745 
   745 
       
   746 (* Induction principle for Finite(A), by Sidi Ehmety *)
       
   747 val major::prems =  Goal
       
   748 "[| Finite(A); P(0); \
       
   749 \  !! x B.   [|  Finite(B); x ~: B; P(B) |] \
       
   750 \            ==> P(cons(x, B)) |] \
       
   751 \      ==> P(A)";
       
   752 by (resolve_tac [major RS Finite_into_Fin RS Fin_induct] 1);
       
   753 by (ALLGOALS(resolve_tac prems));
       
   754 by (ALLGOALS(asm_simp_tac (simpset() addsimps [Fin_into_Finite])));
       
   755 qed "Finite_induct";
       
   756 
   746 
   757 
   747 (** Removing elements from a finite set decreases its cardinality **)
   758 (** Removing elements from a finite set decreases its cardinality **)
   748 
   759 
   749 Goal "A: Fin(U) ==> x~:A --> ~ cons(x,A) lepoll A";
   760 Goal "A: Fin(U) ==> x~:A --> ~ cons(x,A) lepoll A";
   750 by (etac Fin_induct 1);
   761 by (etac Fin_induct 1);