equal
deleted
inserted
replaced
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); |