# HG changeset patch # User nipkow # Date 1234693598 -3600 # Node ID b95f5b8b93dd4378107a0f26318e22f99c3c0ac8 # Parent 1e07290c46c3786497c6ec501e092bd0e5faac1d more finiteness diff -r 1e07290c46c3 -r b95f5b8b93dd src/HOL/Finite_Set.thy --- a/src/HOL/Finite_Set.thy Sun Feb 15 07:54:46 2009 +0100 +++ b/src/HOL/Finite_Set.thy Sun Feb 15 11:26:38 2009 +0100 @@ -140,6 +140,9 @@ "finite A = (\ (n::nat) f. A = f ` {i::nat. i finite (UNION A B) = (ALL x:A. finite (B x))" by (blast intro: finite_UN_I finite_subset) +lemma finite_Collect_bex[simp]: "finite A \ + finite{x. EX y:A. Q x y} = (ALL y:A. finite{x. Q x y})" +apply(subgoal_tac "{x. EX y:A. Q x y} = UNION A (%y. {x. Q x y})") + apply auto +done + +lemma finite_Collect_bounded_ex[simp]: "finite{y. P y} \ + finite{x. EX y. P y & Q x y} = (ALL y. P y \ finite{x. Q x y})" +apply(subgoal_tac "{x. EX y. P y & Q x y} = UNION {y. P y} (%y. {x. Q x y})") + apply auto +done + + lemma finite_Plus: "[| finite A; finite B |] ==> finite (A <+> B)" by (simp add: Plus_def) @@ -396,11 +415,6 @@ lemma finite_Collect_subsets[simp,intro]: "finite A \ finite{B. B \ A}" by(simp add: Pow_def[symmetric]) -lemma finite_bex_subset[simp]: - "finite B \ finite{x. EX A<=B. P x A} = (ALL A<=B. finite{x. P x A})" -apply(subgoal_tac "{x. EX A<=B. P x A} = (UN A:Pow B. {x. P x A})") - apply auto -done lemma finite_UnionD: "finite(\A) \ finite A" by(blast intro: finite_subset[OF subset_Pow_Union]) diff -r 1e07290c46c3 -r b95f5b8b93dd src/HOL/NSA/HyperNat.thy --- a/src/HOL/NSA/HyperNat.thy Sun Feb 15 07:54:46 2009 +0100 +++ b/src/HOL/NSA/HyperNat.thy Sun Feb 15 11:26:38 2009 +0100 @@ -286,11 +286,10 @@ by (simp add: HNatInfinite_def) lemma lemma_unbounded_set [simp]: "{n::nat. m < n} \ FreeUltrafilterNat" -apply (insert finite_atMost [of m]) -apply (simp add: atMost_def) +apply (insert finite_atMost [of m]) apply (drule FreeUltrafilterNat.finite) apply (drule FreeUltrafilterNat.not_memD) -apply (simp add: Collect_neg_eq [symmetric] linorder_not_le) +apply (simp add: Collect_neg_eq [symmetric] linorder_not_le atMost_def) done lemma Compl_Collect_le: "- {n::nat. N \ n} = {n. n < N}" diff -r 1e07290c46c3 -r b95f5b8b93dd src/HOL/SetInterval.thy --- a/src/HOL/SetInterval.thy Sun Feb 15 07:54:46 2009 +0100 +++ b/src/HOL/SetInterval.thy Sun Feb 15 11:26:38 2009 +0100 @@ -568,7 +568,6 @@ apply auto apply (case_tac xa) apply auto -apply (auto simp add: finite_M_bounded_by_nat) done lemma card_less_Suc: diff -r 1e07290c46c3 -r b95f5b8b93dd src/HOL/ex/Sublist.thy --- a/src/HOL/ex/Sublist.thy Sun Feb 15 07:54:46 2009 +0100 +++ b/src/HOL/ex/Sublist.thy Sun Feb 15 11:26:38 2009 +0100 @@ -64,8 +64,6 @@ apply (simp add: sublist_Cons) apply auto apply (auto simp add: nat.split) - apply (simp add: card_less) - apply (simp add: card_less) apply (simp add: card_less_Suc[symmetric]) apply (simp add: card_less_Suc2) done