src/HOL/Analysis/Lebesgue_Integral_Substitution.thy
changeset 69180 922833cc6839
parent 67976 75b94eb58c3d
child 69517 dc20f278e8f3
equal deleted inserted replaced
69179:dff89effe26b 69180:922833cc6839
     4     Provides lemmas for integration by substitution for the basic integral types.
     4     Provides lemmas for integration by substitution for the basic integral types.
     5     Note that the substitution function must have a nonnegative derivative.
     5     Note that the substitution function must have a nonnegative derivative.
     6     This could probably be weakened somehow.
     6     This could probably be weakened somehow.
     7 *)
     7 *)
     8 
     8 
     9 section \<open>Integration by Substition\<close>
     9 section \<open>Integration by Substition for the Lebesgue integral\<close>
    10 
    10 
    11 theory Lebesgue_Integral_Substitution
    11 theory Lebesgue_Integral_Substitution
    12 imports Interval_Integral
    12 imports Interval_Integral
    13 begin
    13 begin
    14 
    14 
   276          (auto split: split_indicator simp: derivg_nonneg mult_ac)
   276          (auto split: split_indicator simp: derivg_nonneg mult_ac)
   277     finally show ?case by simp
   277     finally show ?case by simp
   278   qed
   278   qed
   279 qed
   279 qed
   280 
   280 
   281 lemma nn_integral_substitution:
   281 theorem nn_integral_substitution:
   282   fixes f :: "real \<Rightarrow> real"
   282   fixes f :: "real \<Rightarrow> real"
   283   assumes Mf[measurable]: "set_borel_measurable borel {g a..g b} f"
   283   assumes Mf[measurable]: "set_borel_measurable borel {g a..g b} f"
   284   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   284   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   285   assumes contg': "continuous_on {a..b} g'"
   285   assumes contg': "continuous_on {a..b} g'"
   286   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   286   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   315   also have "... = \<integral>\<^sup>+x. ennreal (f (g x) * g' x * indicator {a..b} x) \<partial>lborel"
   315   also have "... = \<integral>\<^sup>+x. ennreal (f (g x) * g' x * indicator {a..b} x) \<partial>lborel"
   316     by (intro nn_integral_cong) (auto simp: mult.commute derivg_nonneg ennreal_mult' split: split_indicator)
   316     by (intro nn_integral_cong) (auto simp: mult.commute derivg_nonneg ennreal_mult' split: split_indicator)
   317   finally show ?thesis .
   317   finally show ?thesis .
   318 qed auto
   318 qed auto
   319 
   319 
   320 lemma integral_substitution:
   320 theorem integral_substitution:
   321   assumes integrable: "set_integrable lborel {g a..g b} f"
   321   assumes integrable: "set_integrable lborel {g a..g b} f"
   322   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   322   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   323   assumes contg': "continuous_on {a..b} g'"
   323   assumes contg': "continuous_on {a..b} g'"
   324   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   324   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   325   assumes "a \<le> b"
   325   assumes "a \<le> b"
   382     by (subst real_lebesgue_integral_def) (simp_all add: field_simps)
   382     by (subst real_lebesgue_integral_def) (simp_all add: field_simps)
   383   finally show "(LBINT x. f x * indicator {g a..g b} x) =
   383   finally show "(LBINT x. f x * indicator {g a..g b} x) =
   384                      (LBINT x. f (g x) * g' x * indicator {a..b} x)" .
   384                      (LBINT x. f (g x) * g' x * indicator {a..b} x)" .
   385 qed
   385 qed
   386 
   386 
   387 lemma interval_integral_substitution:
   387 theorem interval_integral_substitution:
   388   assumes integrable: "set_integrable lborel {g a..g b} f"
   388   assumes integrable: "set_integrable lborel {g a..g b} f"
   389   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   389   assumes derivg: "\<And>x. x \<in> {a..b} \<Longrightarrow> (g has_real_derivative g' x) (at x)"
   390   assumes contg': "continuous_on {a..b} g'"
   390   assumes contg': "continuous_on {a..b} g'"
   391   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   391   assumes derivg_nonneg: "\<And>x. x \<in> {a..b} \<Longrightarrow> g' x \<ge> 0"
   392   assumes "a \<le> b"
   392   assumes "a \<le> b"