Two results suggested by Florian Kammueller
authorpaulson
Mon, 26 May 1997 12:36:56 +0200
changeset 3340 a886795c9dce
parent 3339 cfa72a70f2b5
child 3341 89fe22bf9f54
Two results suggested by Florian Kammueller
src/HOL/Finite.ML
--- a/src/HOL/Finite.ML	Mon May 26 12:36:16 1997 +0200
+++ b/src/HOL/Finite.ML	Mon May 26 12:36:56 1997 +0200
@@ -150,6 +150,15 @@
 by (ALLGOALS Asm_simp_tac);
 qed "finite_imageI";
 
+(*The powerset of a finite set is finite*)
+goal Finite.thy "!!A. finite A ==> finite(Pow A)";
+by (etac finite_induct 1);
+by (ALLGOALS 
+    (asm_simp_tac
+     (!simpset addsimps [finite_UnI, finite_imageI, Pow_insert])));
+qed "finite_PowI";
+AddSIs [finite_PowI];
+
 val major::prems = goalw Finite.thy [finite_def]
     "[| finite A;                                       \
 \       P(A);                                           \
@@ -310,6 +319,19 @@
 Addsimps [card_insert];
 
 
+goal Finite.thy "!!A. finite(A) ==> inj_onto f A --> card (f `` A) = card A";
+by (etac finite_induct 1);
+by (ALLGOALS Asm_simp_tac);
+by (Step_tac 1);
+bw inj_onto_def;
+by (Blast_tac 1);
+by (stac card_insert_disjoint 1);
+by (etac finite_imageI 1);
+by (Blast_tac 1);
+by (Blast_tac 1);
+qed_spec_mp "card_image";
+
+
 goal Finite.thy  "!!A. finite A ==> !B. B <= A --> card(B) <= card(A)";
 by (etac finite_induct 1);
 by (Simp_tac 1);