# HG changeset patch # User huffman # Date 1244309314 25200 # Node ID 10080e31b294b2858426dc5536ce060f3c1254c8 # Parent 5691ccb8d6b52bd17bd2381a880897d60ce346ca lemmas islimptI, islimptE; generalize open_inter_closure_subset diff -r 5691ccb8d6b5 -r 10080e31b294 src/HOL/Library/Topology_Euclidean_Space.thy --- a/src/HOL/Library/Topology_Euclidean_Space.thy Sat Jun 06 09:11:12 2009 -0700 +++ b/src/HOL/Library/Topology_Euclidean_Space.thy Sat Jun 06 10:28:34 2009 -0700 @@ -546,9 +546,14 @@ (infixr "islimpt" 60) where "x islimpt S \ (\T. x\T \ open T \ (\y\S. y\T \ y\x))" - (* FIXME: Sure this form is OK????*) -lemma islimptE: assumes "x islimpt S" and "x \ T" and "open T" - obtains "(\y\S. y\T \ y\x)" +lemma islimptI: + assumes "\T. x \ T \ open T \ \y\S. y \ T \ y \ x" + shows "x islimpt S" + using assms unfolding islimpt_def by auto + +lemma islimptE: + assumes "x islimpt S" and "x \ T" and "open T" + obtains y where "y \ S" and "y \ T" and "y \ x" using assms unfolding islimpt_def by auto lemma islimpt_subset: "x islimpt S \ S \ T ==> x islimpt T" by (auto simp add: islimpt_def) @@ -909,31 +914,23 @@ by auto lemma open_inter_closure_subset: - fixes S :: "'a::metric_space set" - (* FIXME: generalize to topological_space *) - shows "open S \ (S \ (closure T)) \ closure(S \ T)" + "open S \ (S \ (closure T)) \ closure(S \ T)" proof fix x assume as: "open S" "x \ S \ closure T" { assume *:"x islimpt T" - { fix e::real - assume "e > 0" - from as `open S` obtain e' where "e' > 0" and e':"\x'. dist x' x < e' \ x' \ S" - unfolding open_dist - by auto - let ?e = "min e e'" - from `e>0` `e'>0` have "?e > 0" - by simp - then obtain y where y:"y\T" "y \ x \ dist y x < ?e" - using islimpt_approachable[of x T] using * - by blast - hence "\x'\S \ T. x' \ x \ dist x' x < e" using e' - using y - by(rule_tac x=y in bexI, simp+) - } - hence "x islimpt S \ T" - using islimpt_approachable[of x "S \ T"] - by blast + have "x islimpt (S \ T)" + proof (rule islimptI) + fix A + assume "x \ A" "open A" + with as have "x \ A \ S" "open (A \ S)" + by (simp_all add: open_inter) + with * obtain y where "y \ T" "y \ A \ S" "y \ x" + by (rule islimptE) + hence "y \ S \ T" "y \ A \ y \ x" + by simp_all + thus "\y\(S \ T). y \ A \ y \ x" .. + qed } then show "x \ closure (S \ T)" using as unfolding closure_def