src/HOL/Analysis/Interval_Integral.thy
changeset 70136 f03a01a18c6e
parent 69683 8b3458ca0762
child 70365 4df0628e8545
equal deleted inserted replaced
70135:ad6d4a14adb5 70136:f03a01a18c6e
   127     by (intro that) fact+
   127     by (intro that) fact+
   128 qed
   128 qed
   129 
   129 
   130 (* TODO: in this definition, it would be more natural if einterval a b included a and b when
   130 (* TODO: in this definition, it would be more natural if einterval a b included a and b when
   131    they are real. *)
   131    they are real. *)
   132 definition%important interval_lebesgue_integral :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a) \<Rightarrow> 'a::{banach, second_countable_topology}" where
   132 definition\<^marker>\<open>tag important\<close> interval_lebesgue_integral :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a) \<Rightarrow> 'a::{banach, second_countable_topology}" where
   133   "interval_lebesgue_integral M a b f =
   133   "interval_lebesgue_integral M a b f =
   134     (if a \<le> b then (LINT x:einterval a b|M. f x) else - (LINT x:einterval b a|M. f x))"
   134     (if a \<le> b then (LINT x:einterval a b|M. f x) else - (LINT x:einterval b a|M. f x))"
   135 
   135 
   136 syntax
   136 syntax
   137   "_ascii_interval_lebesgue_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real measure \<Rightarrow> real \<Rightarrow> real"
   137   "_ascii_interval_lebesgue_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real measure \<Rightarrow> real \<Rightarrow> real"
   138   ("(5LINT _=_.._|_. _)" [0,60,60,61,100] 60)
   138   ("(5LINT _=_.._|_. _)" [0,60,60,61,100] 60)
   139 
   139 
   140 translations
   140 translations
   141   "LINT x=a..b|M. f" == "CONST interval_lebesgue_integral M a b (\<lambda>x. f)"
   141   "LINT x=a..b|M. f" == "CONST interval_lebesgue_integral M a b (\<lambda>x. f)"
   142 
   142 
   143 definition%important interval_lebesgue_integrable :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a::{banach, second_countable_topology}) \<Rightarrow> bool" where
   143 definition\<^marker>\<open>tag important\<close> interval_lebesgue_integrable :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a::{banach, second_countable_topology}) \<Rightarrow> bool" where
   144   "interval_lebesgue_integrable M a b f =
   144   "interval_lebesgue_integrable M a b f =
   145     (if a \<le> b then set_integrable M (einterval a b) f else set_integrable M (einterval b a) f)"
   145     (if a \<le> b then set_integrable M (einterval a b) f else set_integrable M (einterval b a) f)"
   146 
   146 
   147 syntax
   147 syntax
   148   "_ascii_interval_lebesgue_borel_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real"
   148   "_ascii_interval_lebesgue_borel_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real"
   299 lemma interval_integral_to_infinity_eq: "(LINT x=ereal a..\<infinity> | M. f x) = (LINT x : {a<..} | M. f x)"
   299 lemma interval_integral_to_infinity_eq: "(LINT x=ereal a..\<infinity> | M. f x) = (LINT x : {a<..} | M. f x)"
   300   unfolding interval_lebesgue_integral_def by auto
   300   unfolding interval_lebesgue_integral_def by auto
   301 
   301 
   302 proposition interval_integrable_to_infinity_eq: "(interval_lebesgue_integrable M a \<infinity> f) =
   302 proposition interval_integrable_to_infinity_eq: "(interval_lebesgue_integrable M a \<infinity> f) =
   303   (set_integrable M {a<..} f)"
   303   (set_integrable M {a<..} f)"
   304   unfolding%unimportant interval_lebesgue_integrable_def by auto
   304   unfolding interval_lebesgue_integrable_def by auto
   305 
   305 
   306 subsection\<open>Basic properties of integration over an interval wrt lebesgue measure\<close>
   306 subsection\<open>Basic properties of integration over an interval wrt lebesgue measure\<close>
   307 
   307 
   308 lemma interval_integral_zero [simp]:
   308 lemma interval_integral_zero [simp]:
   309   fixes a b :: ereal
   309   fixes a b :: ereal
  1081 
  1081 
  1082 proposition interval_integral_norm:
  1082 proposition interval_integral_norm:
  1083   fixes f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}"
  1083   fixes f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}"
  1084   shows "interval_lebesgue_integrable lborel a b f \<Longrightarrow> a \<le> b \<Longrightarrow>
  1084   shows "interval_lebesgue_integrable lborel a b f \<Longrightarrow> a \<le> b \<Longrightarrow>
  1085     norm (LBINT t=a..b. f t) \<le> LBINT t=a..b. norm (f t)"
  1085     norm (LBINT t=a..b. f t) \<le> LBINT t=a..b. norm (f t)"
  1086   using%unimportant integral_norm_bound[of lborel "\<lambda>x. indicator (einterval a b) x *\<^sub>R f x"]
  1086   using integral_norm_bound[of lborel "\<lambda>x. indicator (einterval a b) x *\<^sub>R f x"]
  1087   by%unimportant (auto simp: interval_lebesgue_integral_def interval_lebesgue_integrable_def set_lebesgue_integral_def)
  1087   by (auto simp: interval_lebesgue_integral_def interval_lebesgue_integrable_def set_lebesgue_integral_def)
  1088 
  1088 
  1089 proposition interval_integral_norm2:
  1089 proposition interval_integral_norm2:
  1090   "interval_lebesgue_integrable lborel a b f \<Longrightarrow>
  1090   "interval_lebesgue_integrable lborel a b f \<Longrightarrow>
  1091     norm (LBINT t=a..b. f t) \<le> \<bar>LBINT t=a..b. norm (f t)\<bar>"
  1091     norm (LBINT t=a..b. f t) \<le> \<bar>LBINT t=a..b. norm (f t)\<bar>"
  1092 proof (induct a b rule: linorder_wlog)
  1092 proof (induct a b rule: linorder_wlog)