src/HOL/Analysis/Bounded_Continuous_Function.thy
changeset 70136 f03a01a18c6e
parent 69861 62e47f06d22c
child 70619 191bb458b95c
equal deleted inserted replaced
70135:ad6d4a14adb5 70136:f03a01a18c6e
     5     Henstock_Kurzweil_Integration
     5     Henstock_Kurzweil_Integration
     6 begin
     6 begin
     7 
     7 
     8 subsection \<open>Definition\<close>
     8 subsection \<open>Definition\<close>
     9 
     9 
    10 definition%important "bcontfun = {f. continuous_on UNIV f \<and> bounded (range f)}"
    10 definition\<^marker>\<open>tag important\<close> "bcontfun = {f. continuous_on UNIV f \<and> bounded (range f)}"
    11 
    11 
    12 typedef (overloaded) ('a, 'b) bcontfun ("(_ \<Rightarrow>\<^sub>C /_)" [22, 21] 21) =
    12 typedef (overloaded) ('a, 'b) bcontfun ("(_ \<Rightarrow>\<^sub>C /_)" [22, 21] 21) =
    13   "bcontfun::('a::topological_space \<Rightarrow> 'b::metric_space) set"
    13   "bcontfun::('a::topological_space \<Rightarrow> 'b::metric_space) set"
    14   morphisms apply_bcontfun Bcontfun
    14   morphisms apply_bcontfun Bcontfun
    15   by (auto intro: continuous_intros simp: bounded_def bcontfun_def)
    15   by (auto intro: continuous_intros simp: bounded_def bcontfun_def)
    39 
    39 
    40 (* TODO: Generalize to uniform spaces? *)
    40 (* TODO: Generalize to uniform spaces? *)
    41 instantiation bcontfun :: (topological_space, metric_space) metric_space
    41 instantiation bcontfun :: (topological_space, metric_space) metric_space
    42 begin
    42 begin
    43 
    43 
    44 lift_definition%important dist_bcontfun :: "'a \<Rightarrow>\<^sub>C 'b \<Rightarrow> 'a \<Rightarrow>\<^sub>C 'b \<Rightarrow> real"
    44 lift_definition\<^marker>\<open>tag important\<close> dist_bcontfun :: "'a \<Rightarrow>\<^sub>C 'b \<Rightarrow> 'a \<Rightarrow>\<^sub>C 'b \<Rightarrow> real"
    45   is "\<lambda>f g. (SUP x. dist (f x) (g x))" .
    45   is "\<lambda>f g. (SUP x. dist (f x) (g x))" .
    46 
    46 
    47 definition uniformity_bcontfun :: "('a \<Rightarrow>\<^sub>C 'b \<times> 'a \<Rightarrow>\<^sub>C 'b) filter"
    47 definition uniformity_bcontfun :: "('a \<Rightarrow>\<^sub>C 'b \<times> 'a \<Rightarrow>\<^sub>C 'b) filter"
    48   where "uniformity_bcontfun = (INF e\<in>{0 <..}. principal {(x, y). dist x y < e})"
    48   where "uniformity_bcontfun = (INF e\<in>{0 <..}. principal {(x, y). dist x y < e})"
    49 
    49 
   173 qed
   173 qed
   174 
   174 
   175 
   175 
   176 subsection \<open>Complete Space\<close>
   176 subsection \<open>Complete Space\<close>
   177 
   177 
   178 instance%important bcontfun :: (metric_space, complete_space) complete_space
   178 instance\<^marker>\<open>tag important\<close> bcontfun :: (metric_space, complete_space) complete_space
   179 proof%unimportant
   179 proof
   180   fix f :: "nat \<Rightarrow> ('a, 'b) bcontfun"
   180   fix f :: "nat \<Rightarrow> ('a, 'b) bcontfun"
   181   assume "Cauchy f"  \<comment> \<open>Cauchy equals uniform convergence\<close>
   181   assume "Cauchy f"  \<comment> \<open>Cauchy equals uniform convergence\<close>
   182   then obtain g where "uniform_limit UNIV f g sequentially"
   182   then obtain g where "uniform_limit UNIV f g sequentially"
   183     using uniformly_convergent_eq_cauchy[of "\<lambda>_. True" f]
   183     using uniformly_convergent_eq_cauchy[of "\<lambda>_. True" f]
   184     unfolding Cauchy_def uniform_limit_sequentially_iff
   184     unfolding Cauchy_def uniform_limit_sequentially_iff
   189   then show "convergent f"
   189   then show "convergent f"
   190     by (intro convergentI)
   190     by (intro convergentI)
   191 qed
   191 qed
   192 
   192 
   193 
   193 
   194 subsection%unimportant \<open>Supremum norm for a normed vector space\<close>
   194 subsection\<^marker>\<open>tag unimportant\<close> \<open>Supremum norm for a normed vector space\<close>
   195 
   195 
   196 instantiation%unimportant bcontfun :: (topological_space, real_normed_vector) real_vector
   196 instantiation\<^marker>\<open>tag unimportant\<close> bcontfun :: (topological_space, real_normed_vector) real_vector
   197 begin
   197 begin
   198 
   198 
   199 lemma uminus_cont: "f \<in> bcontfun \<Longrightarrow> (\<lambda>x. - f x) \<in> bcontfun" for f::"'a \<Rightarrow> 'b"
   199 lemma uminus_cont: "f \<in> bcontfun \<Longrightarrow> (\<lambda>x. - f x) \<in> bcontfun" for f::"'a \<Rightarrow> 'b"
   200   by (auto simp: bcontfun_def intro!: continuous_intros)
   200   by (auto simp: bcontfun_def intro!: continuous_intros)
   201 
   201 
   245 
   245 
   246 lemma bounded_norm_le_SUP_norm:
   246 lemma bounded_norm_le_SUP_norm:
   247   "bounded (range f) \<Longrightarrow> norm (f x) \<le> (SUP x. norm (f x))"
   247   "bounded (range f) \<Longrightarrow> norm (f x) \<le> (SUP x. norm (f x))"
   248   by (auto intro!: cSUP_upper bounded_imp_bdd_above simp: bounded_norm_comp)
   248   by (auto intro!: cSUP_upper bounded_imp_bdd_above simp: bounded_norm_comp)
   249 
   249 
   250 instantiation%unimportant bcontfun :: (topological_space, real_normed_vector) real_normed_vector
   250 instantiation\<^marker>\<open>tag unimportant\<close> bcontfun :: (topological_space, real_normed_vector) real_normed_vector
   251 begin
   251 begin
   252 
   252 
   253 definition norm_bcontfun :: "('a, 'b) bcontfun \<Rightarrow> real"
   253 definition norm_bcontfun :: "('a, 'b) bcontfun \<Rightarrow> real"
   254   where "norm_bcontfun f = dist f 0"
   254   where "norm_bcontfun f = dist f 0"
   255 
   255 
   288   assumes "\<And>x. norm (apply_bcontfun f x) \<le> b"
   288   assumes "\<And>x. norm (apply_bcontfun f x) \<le> b"
   289   shows "norm f \<le> b"
   289   shows "norm f \<le> b"
   290   using dist_bound[of f 0 b] assms
   290   using dist_bound[of f 0 b] assms
   291   by (simp add: dist_norm)
   291   by (simp add: dist_norm)
   292 
   292 
   293 subsection%unimportant \<open>(bounded) continuous extenstion\<close>
   293 subsection\<^marker>\<open>tag unimportant\<close> \<open>(bounded) continuous extenstion\<close>
   294 
   294 
   295 lemma integral_clamp:
   295 lemma integral_clamp:
   296   "integral {t0::real..clamp t0 t1 x} f =
   296   "integral {t0::real..clamp t0 t1 x} f =
   297     (if x < t0 then 0 else if x \<le> t1 then integral {t0..x} f else integral {t0..t1} f)"
   297     (if x < t0 then 0 else if x \<le> t1 then integral {t0..x} f else integral {t0..t1} f)"
   298   by (auto simp: clamp_def)
   298   by (auto simp: clamp_def)