src/HOL/Analysis/Abstract_Metric_Spaces.thy
changeset 78750 f229090cb8a3
parent 78748 ca486ee0e4c5
child 80764 47c0aa388621
equal deleted inserted replaced
78749:23215f71ab69 78750:f229090cb8a3
  3369 next
  3369 next
  3370   case True then show ?thesis
  3370   case True then show ?thesis
  3371     using empty_completely_metrizable_space by auto
  3371     using empty_completely_metrizable_space by auto
  3372 qed 
  3372 qed 
  3373 
  3373 
  3374 
       
  3375 subsection \<open>The "atin-within" filter for topologies\<close>
       
  3376 
       
  3377 (*FIXME: replace original definition of atin to be an abbreviation, like at / at_within
       
  3378     ("atin (_) (_)/ within (_)" [1000, 60] 60)*)
       
  3379 definition atin_within :: "['a topology, 'a, 'a set] \<Rightarrow> 'a filter"
       
  3380   where "atin_within X a S = inf (nhdsin X a) (principal (topspace X \<inter> S - {a}))"
       
  3381 
       
  3382 lemma atin_within_UNIV [simp]:
       
  3383   shows "atin_within X a UNIV = atin X a"
       
  3384   by (simp add: atin_def atin_within_def)
       
  3385 
       
  3386 lemma eventually_atin_subtopology:
       
  3387   assumes "a \<in> topspace X"
       
  3388   shows "eventually P (atin (subtopology X S) a) \<longleftrightarrow> 
       
  3389     (a \<in> S \<longrightarrow> (\<exists>U. openin (subtopology X S) U \<and> a \<in> U \<and> (\<forall>x\<in>U - {a}. P x)))"
       
  3390   using assms by (simp add: eventually_atin)
       
  3391 
       
  3392 lemma eventually_atin_within:
       
  3393   "eventually P (atin_within X a S) \<longleftrightarrow> a \<notin> topspace X \<or> (\<exists>T. openin X T \<and> a \<in> T \<and> (\<forall>x\<in>T. x \<in> S \<and> x \<noteq> a \<longrightarrow> P x))"
       
  3394 proof (cases "a \<in> topspace X")
       
  3395   case True
       
  3396   hence "eventually P (atin_within X a S) \<longleftrightarrow> 
       
  3397          (\<exists>T. openin X T \<and> a \<in> T \<and>
       
  3398           (\<forall>x\<in>T. x \<in> topspace X \<and> x \<in> S \<and> x \<noteq> a \<longrightarrow> P x))"
       
  3399     by (simp add: atin_within_def eventually_inf_principal eventually_nhdsin)
       
  3400   also have "\<dots> \<longleftrightarrow> (\<exists>T. openin X T \<and> a \<in> T \<and> (\<forall>x\<in>T. x \<in> S \<and> x \<noteq> a \<longrightarrow> P x))"
       
  3401     using openin_subset by (intro ex_cong) auto
       
  3402   finally show ?thesis by (simp add: True)
       
  3403 qed (simp add: atin_within_def)
       
  3404 
       
  3405 lemma eventually_within_imp:
       
  3406    "eventually P (atin_within X a S) \<longleftrightarrow> eventually (\<lambda>x. x \<in> S \<longrightarrow> P x) (atin X a)"
       
  3407   by (auto simp add: eventually_atin_within eventually_atin)
       
  3408 
       
  3409 lemma limit_within_subset:
       
  3410    "\<lbrakk>limitin X f l (atin_within Y a S); T \<subseteq> S\<rbrakk> \<Longrightarrow> limitin X f l (atin_within Y a T)"
       
  3411   by (smt (verit) eventually_atin_within limitin_def subset_eq)
       
  3412 
       
  3413 lemma atin_subtopology_within:
       
  3414   assumes "a \<in> S"
       
  3415   shows "atin (subtopology X S) a = atin_within X a S"
       
  3416 proof -
       
  3417   have "eventually P (atin (subtopology X S) a) \<longleftrightarrow> eventually P (atin_within X a S)" for P
       
  3418     unfolding eventually_atin eventually_atin_within openin_subtopology
       
  3419     using assms by auto
       
  3420   then show ?thesis
       
  3421     by (meson le_filter_def order.eq_iff)
       
  3422 qed
       
  3423 
       
  3424 lemma limit_continuous_map_within:
       
  3425    "\<lbrakk>continuous_map (subtopology X S) Y f; a \<in> S; a \<in> topspace X\<rbrakk>
       
  3426     \<Longrightarrow> limitin Y f (f a) (atin_within X a S)"
       
  3427   by (metis Int_iff atin_subtopology_within continuous_map_atin topspace_subtopology)
       
  3428 
       
  3429 lemma atin_subtopology_within_if:
       
  3430   shows "atin (subtopology X S) a = (if a \<in> S then atin_within X a S else bot)"
       
  3431   by (simp add: atin_subtopology_within)
       
  3432 
       
  3433 lemma trivial_limit_atpointof_within:
       
  3434    "trivial_limit(atin_within X a S) \<longleftrightarrow>
       
  3435         (a \<notin> X derived_set_of S)"
       
  3436   by (auto simp: trivial_limit_def eventually_atin_within in_derived_set_of)
       
  3437 
       
  3438 lemma derived_set_of_trivial_limit:
       
  3439    "a \<in> X derived_set_of S \<longleftrightarrow> \<not> trivial_limit(atin_within X a S)"
       
  3440   by (simp add: trivial_limit_atpointof_within)
       
  3441 
       
  3442     
  3374     
  3443 subsection\<open>More sequential characterizations in a metric space\<close>
  3375 subsection\<open>More sequential characterizations in a metric space\<close>
  3444 
  3376 
  3445 context Metric_space
  3377 context Metric_space
  3446 begin
  3378 begin