src/HOL/Analysis/Bochner_Integration.thy
changeset 68072 493b818e8e10
parent 67399 eab6ce8368fa
child 68073 fad29d2a17a5
equal deleted inserted replaced
68001:0a2a1b6507c1 68072:493b818e8e10
   392        (auto simp: simple_bochner_integrable_compose2 elim: simple_bochner_integrable.cases)
   392        (auto simp: simple_bochner_integrable_compose2 elim: simple_bochner_integrable.cases)
   393   ultimately show ?thesis
   393   ultimately show ?thesis
   394     by (simp add: sum.distrib[symmetric] scaleR_add_right)
   394     by (simp add: sum.distrib[symmetric] scaleR_add_right)
   395 qed
   395 qed
   396 
   396 
   397 lemma (in linear) simple_bochner_integral_linear:
   397 lemma simple_bochner_integral_linear:
       
   398   assumes "linear f"
   398   assumes g: "simple_bochner_integrable M g"
   399   assumes g: "simple_bochner_integrable M g"
   399   shows "simple_bochner_integral M (\<lambda>x. f (g x)) = f (simple_bochner_integral M g)"
   400   shows "simple_bochner_integral M (\<lambda>x. f (g x)) = f (simple_bochner_integral M g)"
   400 proof -
   401 proof -
       
   402   interpret linear f by fact
   401   from g have "simple_bochner_integral M (\<lambda>x. f (g x)) =
   403   from g have "simple_bochner_integral M (\<lambda>x. f (g x)) =
   402     (\<Sum>y\<in>g ` space M. measure M {x \<in> space M. g x = y} *\<^sub>R f y)"
   404     (\<Sum>y\<in>g ` space M. measure M {x \<in> space M. g x = y} *\<^sub>R f y)"
   403     by (intro simple_bochner_integral_partition)
   405     by (intro simple_bochner_integral_partition)
   404        (auto simp: simple_bochner_integrable_compose2[where p="\<lambda>x y. f x"] zero
   406        (auto simp: simple_bochner_integrable_compose2[where p="\<lambda>x y. f x"] zero
   405              elim: simple_bochner_integrable.cases)
   407              elim: simple_bochner_integrable.cases)
   406   also have "\<dots> = f (simple_bochner_integral M g)"
   408   also have "\<dots> = f (simple_bochner_integral M g)"
   407     by (simp add: simple_bochner_integral_def sum scaleR)
   409     by (simp add: simple_bochner_integral_def sum scale)
   408   finally show ?thesis .
   410   finally show ?thesis .
   409 qed
   411 qed
   410 
   412 
   411 lemma simple_bochner_integral_minus:
   413 lemma simple_bochner_integral_minus:
   412   assumes f: "simple_bochner_integrable M f"
   414   assumes f: "simple_bochner_integrable M f"
   413   shows "simple_bochner_integral M (\<lambda>x. - f x) = - simple_bochner_integral M f"
   415   shows "simple_bochner_integral M (\<lambda>x. - f x) = - simple_bochner_integral M f"
   414 proof -
   416 proof -
   415   interpret linear uminus by unfold_locales auto
   417   from linear_uminus f show ?thesis
   416   from f show ?thesis
       
   417     by (rule simple_bochner_integral_linear)
   418     by (rule simple_bochner_integral_linear)
   418 qed
   419 qed
   419 
   420 
   420 lemma simple_bochner_integral_diff:
   421 lemma simple_bochner_integral_diff:
   421   assumes f: "simple_bochner_integrable M f" and g: "simple_bochner_integrable M g"
   422   assumes f: "simple_bochner_integrable M f" and g: "simple_bochner_integrable M g"
   644       using ennreal_tendsto_cmult[OF _ f_s] by simp
   645       using ennreal_tendsto_cmult[OF _ f_s] by simp
   645   qed
   646   qed
   646 
   647 
   647   assume "(\<lambda>i. simple_bochner_integral M (s i)) \<longlonglongrightarrow> x"
   648   assume "(\<lambda>i. simple_bochner_integral M (s i)) \<longlonglongrightarrow> x"
   648   with s show "(\<lambda>i. simple_bochner_integral M (\<lambda>x. T (s i x))) \<longlonglongrightarrow> T x"
   649   with s show "(\<lambda>i. simple_bochner_integral M (\<lambda>x. T (s i x))) \<longlonglongrightarrow> T x"
   649     by (auto intro!: T.tendsto simp: T.simple_bochner_integral_linear)
   650     by (auto intro!: T.tendsto simp: simple_bochner_integral_linear T.linear_axioms)
   650 qed
   651 qed
   651 
   652 
   652 lemma has_bochner_integral_zero[intro]: "has_bochner_integral M (\<lambda>x. 0) 0"
   653 lemma has_bochner_integral_zero[intro]: "has_bochner_integral M (\<lambda>x. 0) 0"
   653   by (auto intro!: has_bochner_integral.intros[where s="\<lambda>_ _. 0"]
   654   by (auto intro!: has_bochner_integral.intros[where s="\<lambda>_ _. 0"]
   654            simp: zero_ennreal_def[symmetric] simple_bochner_integrable.simps
   655            simp: zero_ennreal_def[symmetric] simple_bochner_integrable.simps