src/HOL/Probability/Interval_Integral.thy
changeset 61973 0c7e865fa7cb
parent 61969 e01015e49041
child 62083 7582b39f51ed
equal deleted inserted replaced
61972:a70b89a3e02e 61973:0c7e865fa7cb
   620   fixes f F :: "real \<Rightarrow> real" and a b :: ereal
   620   fixes f F :: "real \<Rightarrow> real" and a b :: ereal
   621   assumes "a < b"
   621   assumes "a < b"
   622   assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV F x :> f x" 
   622   assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV F x :> f x" 
   623   assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x" 
   623   assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x" 
   624   assumes f_nonneg: "AE x in lborel. a < ereal x \<longrightarrow> ereal x < b \<longrightarrow> 0 \<le> f x"
   624   assumes f_nonneg: "AE x in lborel. a < ereal x \<longrightarrow> ereal x < b \<longrightarrow> 0 \<le> f x"
   625   assumes A: "((F \<circ> real_of_ereal) ---> A) (at_right a)"
   625   assumes A: "((F \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"
   626   assumes B: "((F \<circ> real_of_ereal) ---> B) (at_left b)"
   626   assumes B: "((F \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"
   627   shows
   627   shows
   628     "set_integrable lborel (einterval a b) f" 
   628     "set_integrable lborel (einterval a b) f" 
   629     "(LBINT x=a..b. f x) = B - A"
   629     "(LBINT x=a..b. f x) = B - A"
   630 proof -
   630 proof -
   631   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this
   631   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this
   667   fixes f F :: "real \<Rightarrow> 'a::euclidean_space" and a b :: ereal
   667   fixes f F :: "real \<Rightarrow> 'a::euclidean_space" and a b :: ereal
   668   assumes "a < b"
   668   assumes "a < b"
   669   assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> (F has_vector_derivative f x) (at x)" 
   669   assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> (F has_vector_derivative f x) (at x)" 
   670   assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x" 
   670   assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x" 
   671   assumes f_integrable: "set_integrable lborel (einterval a b) f"
   671   assumes f_integrable: "set_integrable lborel (einterval a b) f"
   672   assumes A: "((F \<circ> real_of_ereal) ---> A) (at_right a)"
   672   assumes A: "((F \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"
   673   assumes B: "((F \<circ> real_of_ereal) ---> B) (at_left b)"
   673   assumes B: "((F \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"
   674   shows "(LBINT x=a..b. f x) = B - A"
   674   shows "(LBINT x=a..b. f x) = B - A"
   675 proof -
   675 proof -
   676   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this
   676   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this
   677   have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"
   677   have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"
   678     by (rule order_less_le_trans, rule approx, force)
   678     by (rule order_less_le_trans, rule approx, force)
   832   assumes "a < b" 
   832   assumes "a < b" 
   833   and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"
   833   and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"
   834   and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"
   834   and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"
   835   and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"
   835   and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"
   836   and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"
   836   and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"
   837   and A: "((ereal \<circ> g \<circ> real_of_ereal) ---> A) (at_right a)"
   837   and A: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"
   838   and B: "((ereal \<circ> g \<circ> real_of_ereal) ---> B) (at_left b)"
   838   and B: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"
   839   and integrable: "set_integrable lborel (einterval a b) (\<lambda>x. g' x *\<^sub>R f (g x))"
   839   and integrable: "set_integrable lborel (einterval a b) (\<lambda>x. g' x *\<^sub>R f (g x))"
   840   and integrable2: "set_integrable lborel (einterval A B) (\<lambda>x. f x)"
   840   and integrable2: "set_integrable lborel (einterval A B) (\<lambda>x. f x)"
   841   shows "(LBINT x=A..B. f x) = (LBINT x=a..b. g' x *\<^sub>R f (g x))"
   841   shows "(LBINT x=A..B. f x) = (LBINT x=a..b. g' x *\<^sub>R f (g x))"
   842 proof -
   842 proof -
   843   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx [simp] = this
   843   from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx [simp] = this
   933   and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"
   933   and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"
   934   and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"
   934   and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"
   935   and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"
   935   and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"
   936   and f_nonneg: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> 0 \<le> f (g x)" (* TODO: make this AE? *)
   936   and f_nonneg: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> 0 \<le> f (g x)" (* TODO: make this AE? *)
   937   and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"
   937   and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"
   938   and A: "((ereal \<circ> g \<circ> real_of_ereal) ---> A) (at_right a)"
   938   and A: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"
   939   and B: "((ereal \<circ> g \<circ> real_of_ereal) ---> B) (at_left b)"
   939   and B: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"
   940   and integrable_fg: "set_integrable lborel (einterval a b) (\<lambda>x. f (g x) * g' x)"
   940   and integrable_fg: "set_integrable lborel (einterval a b) (\<lambda>x. f (g x) * g' x)"
   941   shows 
   941   shows 
   942     "set_integrable lborel (einterval A B) f"
   942     "set_integrable lborel (einterval A B) f"
   943     "(LBINT x=A..B. f x) = (LBINT x=a..b. (f (g x) * g' x))"
   943     "(LBINT x=A..B. f x) = (LBINT x=a..b. (f (g x) * g' x))"
   944 proof -
   944 proof -