equal
deleted
inserted
replaced
185 lemma content_real_eq_0: "content {a .. b::real} = 0 \<longleftrightarrow> a \<ge> b" |
185 lemma content_real_eq_0: "content {a .. b::real} = 0 \<longleftrightarrow> a \<ge> b" |
186 by (metis atLeastatMost_empty_iff2 content_empty content_real diff_self eq_iff le_cases le_iff_diff_le_0) |
186 by (metis atLeastatMost_empty_iff2 content_empty content_real diff_self eq_iff le_cases le_iff_diff_le_0) |
187 |
187 |
188 lemma property_empty_interval: "\<forall>a b. content (cbox a b) = 0 \<longrightarrow> P (cbox a b) \<Longrightarrow> P {}" |
188 lemma property_empty_interval: "\<forall>a b. content (cbox a b) = 0 \<longrightarrow> P (cbox a b) \<Longrightarrow> P {}" |
189 using content_empty unfolding empty_as_interval by auto |
189 using content_empty unfolding empty_as_interval by auto |
|
190 |
|
191 lemma interval_bounds_nz_content [simp]: |
|
192 assumes "content (cbox a b) \<noteq> 0" |
|
193 shows "interval_upperbound (cbox a b) = b" |
|
194 and "interval_lowerbound (cbox a b) = a" |
|
195 by (metis assms content_empty interval_bounds')+ |
190 |
196 |
191 subsection \<open>Gauge integral\<close> |
197 subsection \<open>Gauge integral\<close> |
192 |
198 |
193 text \<open>Case distinction to define it first on compact intervals first, then use a limit. This is only |
199 text \<open>Case distinction to define it first on compact intervals first, then use a limit. This is only |
194 much later unified. In Fremlin: Measure Theory, Volume 4I this is generalized using residual sets.\<close> |
200 much later unified. In Fremlin: Measure Theory, Volume 4I this is generalized using residual sets.\<close> |
567 done |
573 done |
568 qed |
574 qed |
569 qed |
575 qed |
570 qed |
576 qed |
571 |
577 |
572 lemma has_integral_sub: |
578 lemma has_integral_diff: |
573 "(f has_integral k) s \<Longrightarrow> (g has_integral l) s \<Longrightarrow> |
579 "(f has_integral k) s \<Longrightarrow> (g has_integral l) s \<Longrightarrow> |
574 ((\<lambda>x. f x - g x) has_integral (k - l)) s" |
580 ((\<lambda>x. f x - g x) has_integral (k - l)) s" |
575 using has_integral_add[OF _ has_integral_neg, of f k s g l] |
581 using has_integral_add[OF _ has_integral_neg, of f k s g l] |
576 by (auto simp: algebra_simps) |
582 by (auto simp: algebra_simps) |
577 |
583 |
604 with False show ?thesis by (simp add: not_integrable_integral) |
610 with False show ?thesis by (simp add: not_integrable_integral) |
605 qed |
611 qed |
606 |
612 |
607 lemma integral_diff: "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> |
613 lemma integral_diff: "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> |
608 integral s (\<lambda>x. f x - g x) = integral s f - integral s g" |
614 integral s (\<lambda>x. f x - g x) = integral s f - integral s g" |
609 by (rule integral_unique) (metis integrable_integral has_integral_sub) |
615 by (rule integral_unique) (metis integrable_integral has_integral_diff) |
610 |
616 |
611 lemma integrable_0: "(\<lambda>x. 0) integrable_on s" |
617 lemma integrable_0: "(\<lambda>x. 0) integrable_on s" |
612 unfolding integrable_on_def using has_integral_0 by auto |
618 unfolding integrable_on_def using has_integral_0 by auto |
613 |
619 |
614 lemma integrable_add: "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> (\<lambda>x. f x + g x) integrable_on s" |
620 lemma integrable_add: "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> (\<lambda>x. f x + g x) integrable_on s" |
633 lemma integrable_neg: "f integrable_on s \<Longrightarrow> (\<lambda>x. -f(x)) integrable_on s" |
639 lemma integrable_neg: "f integrable_on s \<Longrightarrow> (\<lambda>x. -f(x)) integrable_on s" |
634 unfolding integrable_on_def by(auto intro: has_integral_neg) |
640 unfolding integrable_on_def by(auto intro: has_integral_neg) |
635 |
641 |
636 lemma integrable_diff: |
642 lemma integrable_diff: |
637 "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> (\<lambda>x. f x - g x) integrable_on s" |
643 "f integrable_on s \<Longrightarrow> g integrable_on s \<Longrightarrow> (\<lambda>x. f x - g x) integrable_on s" |
638 unfolding integrable_on_def by(auto intro: has_integral_sub) |
644 unfolding integrable_on_def by(auto intro: has_integral_diff) |
639 |
645 |
640 lemma integrable_linear: |
646 lemma integrable_linear: |
641 "f integrable_on s \<Longrightarrow> bounded_linear h \<Longrightarrow> (h \<circ> f) integrable_on s" |
647 "f integrable_on s \<Longrightarrow> bounded_linear h \<Longrightarrow> (h \<circ> f) integrable_on s" |
642 unfolding integrable_on_def by(auto intro: has_integral_linear) |
648 unfolding integrable_on_def by(auto intro: has_integral_linear) |
643 |
649 |
678 |
684 |
679 lemma has_integral_eq: |
685 lemma has_integral_eq: |
680 assumes "\<And>x. x \<in> s \<Longrightarrow> f x = g x" |
686 assumes "\<And>x. x \<in> s \<Longrightarrow> f x = g x" |
681 and "(f has_integral k) s" |
687 and "(f has_integral k) s" |
682 shows "(g has_integral k) s" |
688 shows "(g has_integral k) s" |
683 using has_integral_sub[OF assms(2), of "\<lambda>x. f x - g x" 0] |
689 using has_integral_diff[OF assms(2), of "\<lambda>x. f x - g x" 0] |
684 using has_integral_is_0[of s "\<lambda>x. f x - g x"] |
690 using has_integral_is_0[of s "\<lambda>x. f x - g x"] |
685 using assms(1) |
691 using assms(1) |
686 by auto |
692 by auto |
687 |
693 |
688 lemma integrable_eq: "(\<And>x. x \<in> s \<Longrightarrow> f x = g x) \<Longrightarrow> f integrable_on s \<Longrightarrow> g integrable_on s" |
694 lemma integrable_eq: "(\<And>x. x \<in> s \<Longrightarrow> f x = g x) \<Longrightarrow> f integrable_on s \<Longrightarrow> g integrable_on s" |
772 lemma has_integral_refl[intro]: |
778 lemma has_integral_refl[intro]: |
773 fixes a :: "'a::euclidean_space" |
779 fixes a :: "'a::euclidean_space" |
774 shows "(f has_integral 0) (cbox a a)" |
780 shows "(f has_integral 0) (cbox a a)" |
775 and "(f has_integral 0) {a}" |
781 and "(f has_integral 0) {a}" |
776 proof - |
782 proof - |
777 have *: "{a} = cbox a a" |
783 show "(f has_integral 0) (cbox a a)" |
778 apply (rule set_eqI) |
784 by (rule has_integral_null) simp |
779 unfolding mem_box singleton_iff euclidean_eq_iff[where 'a='a] |
785 then show "(f has_integral 0) {a}" |
780 apply safe |
786 by simp |
781 prefer 3 |
|
782 apply (erule_tac x=b in ballE) |
|
783 apply (auto simp add: field_simps) |
|
784 done |
|
785 show "(f has_integral 0) (cbox a a)" "(f has_integral 0) {a}" |
|
786 unfolding * |
|
787 apply (rule_tac[!] has_integral_null) |
|
788 unfolding content_eq_0_interior |
|
789 unfolding interior_cbox |
|
790 using box_sing |
|
791 apply auto |
|
792 done |
|
793 qed |
787 qed |
794 |
788 |
795 lemma integrable_on_refl[intro]: "f integrable_on cbox a a" |
789 lemma integrable_on_refl[intro]: "f integrable_on cbox a a" |
796 unfolding integrable_on_def by auto |
790 unfolding integrable_on_def by auto |
797 |
791 |
992 by auto |
986 by auto |
993 show ?thesis |
987 show ?thesis |
994 unfolding k1 interval_split[OF \<open>k \<in> Basis\<close>] |
988 unfolding k1 interval_split[OF \<open>k \<in> Basis\<close>] |
995 unfolding content_eq_0_interior |
989 unfolding content_eq_0_interior |
996 unfolding interval_split[OF \<open>k \<in> Basis\<close>, symmetric] k1[symmetric] |
990 unfolding interval_split[OF \<open>k \<in> Basis\<close>, symmetric] k1[symmetric] |
997 by (rule tagged_division_split_left_inj[OF assms]) |
991 by (metis tagged_division_split_left_inj assms) |
998 qed |
992 qed |
999 |
993 |
1000 lemma tagged_division_split_right_inj_content: |
994 lemma tagged_division_split_right_inj_content: |
1001 assumes d: "d tagged_division_of i" |
995 assumes d: "d tagged_division_of i" |
1002 and "(x1, k1) \<in> d" "(x2, k2) \<in> d" "k1 \<noteq> k2" "k1 \<inter> {x. x\<bullet>k \<ge> c} = k2 \<inter> {x. x\<bullet>k \<ge> c}" "k \<in> Basis" |
996 and "(x1, k1) \<in> d" "(x2, k2) \<in> d" "k1 \<noteq> k2" "k1 \<inter> {x. x\<bullet>k \<ge> c} = k2 \<inter> {x. x\<bullet>k \<ge> c}" "k \<in> Basis" |
1006 by auto |
1000 by auto |
1007 show ?thesis |
1001 show ?thesis |
1008 unfolding k1 interval_split[OF \<open>k \<in> Basis\<close>] |
1002 unfolding k1 interval_split[OF \<open>k \<in> Basis\<close>] |
1009 unfolding content_eq_0_interior |
1003 unfolding content_eq_0_interior |
1010 unfolding interval_split[OF \<open>k \<in> Basis\<close>, symmetric] k1[symmetric] |
1004 unfolding interval_split[OF \<open>k \<in> Basis\<close>, symmetric] k1[symmetric] |
1011 by (rule tagged_division_split_right_inj[OF assms]) |
1005 by (metis tagged_division_split_right_inj assms) |
1012 qed |
1006 qed |
1013 |
1007 |
1014 lemma has_integral_split: |
1008 lemma has_integral_split: |
1015 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::real_normed_vector" |
1009 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::real_normed_vector" |
1016 assumes fi: "(f has_integral i) (cbox a b \<inter> {x. x\<bullet>k \<le> c})" |
1010 assumes fi: "(f has_integral i) (cbox a b \<inter> {x. x\<bullet>k \<le> c})" |
3147 have "f integrable_on {a..y}" |
3141 have "f integrable_on {a..y}" |
3148 using f y by (simp add: integrable_subinterval_real) |
3142 using f y by (simp add: integrable_subinterval_real) |
3149 then have Idiff: "?I a y - ?I a x = ?I x y" |
3143 then have Idiff: "?I a y - ?I a x = ?I x y" |
3150 using False x by (simp add: algebra_simps integral_combine) |
3144 using False x by (simp add: algebra_simps integral_combine) |
3151 have fux_int: "((\<lambda>u. f u - f x) has_integral integral {x..y} f - (y - x) *\<^sub>R f x) {x..y}" |
3145 have fux_int: "((\<lambda>u. f u - f x) has_integral integral {x..y} f - (y - x) *\<^sub>R f x) {x..y}" |
3152 apply (rule has_integral_sub) |
3146 apply (rule has_integral_diff) |
3153 using x y apply (force intro: integrable_integral [OF integrable_subinterval_real [OF f]]) |
3147 using x y apply (force intro: integrable_integral [OF integrable_subinterval_real [OF f]]) |
3154 using has_integral_const_real [of "f x" x y] False |
3148 using has_integral_const_real [of "f x" x y] False |
3155 apply (simp add: ) |
3149 apply (simp add: ) |
3156 done |
3150 done |
3157 show ?thesis |
3151 show ?thesis |
3165 have "f integrable_on {a..x}" |
3159 have "f integrable_on {a..x}" |
3166 using f x by (simp add: integrable_subinterval_real) |
3160 using f x by (simp add: integrable_subinterval_real) |
3167 then have Idiff: "?I a x - ?I a y = ?I y x" |
3161 then have Idiff: "?I a x - ?I a y = ?I y x" |
3168 using True x y by (simp add: algebra_simps integral_combine) |
3162 using True x y by (simp add: algebra_simps integral_combine) |
3169 have fux_int: "((\<lambda>u. f u - f x) has_integral integral {y..x} f - (x - y) *\<^sub>R f x) {y..x}" |
3163 have fux_int: "((\<lambda>u. f u - f x) has_integral integral {y..x} f - (x - y) *\<^sub>R f x) {y..x}" |
3170 apply (rule has_integral_sub) |
3164 apply (rule has_integral_diff) |
3171 using x y apply (force intro: integrable_integral [OF integrable_subinterval_real [OF f]]) |
3165 using x y apply (force intro: integrable_integral [OF integrable_subinterval_real [OF f]]) |
3172 using has_integral_const_real [of "f x" y x] True |
3166 using has_integral_const_real [of "f x" y x] True |
3173 apply (simp add: ) |
3167 apply (simp add: ) |
3174 done |
3168 done |
3175 have "norm (integral {a..x} f - integral {a..y} f - (x - y) *\<^sub>R f x) \<le> e * \<bar>y - x\<bar>" |
3169 have "norm (integral {a..x} f - integral {a..y} f - (x - y) *\<^sub>R f x) \<le> e * \<bar>y - x\<bar>" |
5067 unfolding * |
5061 unfolding * |
5068 apply rule |
5062 apply rule |
5069 done |
5063 done |
5070 qed |
5064 qed |
5071 |
5065 |
5072 lemma has_integral_restrict_univ: |
5066 lemma has_integral_restrict_UNIV: |
5073 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5067 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5074 shows "((\<lambda>x. if x \<in> s then f x else 0) has_integral i) UNIV \<longleftrightarrow> (f has_integral i) s" |
5068 shows "((\<lambda>x. if x \<in> s then f x else 0) has_integral i) UNIV \<longleftrightarrow> (f has_integral i) s" |
5075 by auto |
5069 by auto |
5076 |
5070 |
5077 lemma has_integral_on_superset: |
5071 lemma has_integral_on_superset: |
5086 using assms(1-2) |
5080 using assms(1-2) |
5087 apply auto |
5081 apply auto |
5088 done |
5082 done |
5089 then show ?thesis |
5083 then show ?thesis |
5090 using assms(3) |
5084 using assms(3) |
5091 apply (subst has_integral_restrict_univ[symmetric]) |
5085 apply (subst has_integral_restrict_UNIV[symmetric]) |
5092 apply (subst(asm) has_integral_restrict_univ[symmetric]) |
5086 apply (subst(asm) has_integral_restrict_UNIV[symmetric]) |
5093 apply auto |
5087 apply auto |
5094 done |
5088 done |
5095 qed |
5089 qed |
5096 |
5090 |
5097 lemma integrable_on_superset: |
5091 lemma integrable_on_superset: |
5106 |
5100 |
5107 lemma integral_restrict_univ[intro]: |
5101 lemma integral_restrict_univ[intro]: |
5108 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5102 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5109 shows "f integrable_on s \<Longrightarrow> integral UNIV (\<lambda>x. if x \<in> s then f x else 0) = integral s f" |
5103 shows "f integrable_on s \<Longrightarrow> integral UNIV (\<lambda>x. if x \<in> s then f x else 0) = integral s f" |
5110 apply (rule integral_unique) |
5104 apply (rule integral_unique) |
5111 unfolding has_integral_restrict_univ |
5105 unfolding has_integral_restrict_UNIV |
5112 apply auto |
5106 apply auto |
5113 done |
5107 done |
5114 |
5108 |
5115 lemma integrable_restrict_univ: |
5109 lemma integrable_restrict_UNIV: |
5116 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5110 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5117 shows "(\<lambda>x. if x \<in> s then f x else 0) integrable_on UNIV \<longleftrightarrow> f integrable_on s" |
5111 shows "(\<lambda>x. if x \<in> s then f x else 0) integrable_on UNIV \<longleftrightarrow> f integrable_on s" |
5118 unfolding integrable_on_def |
5112 unfolding integrable_on_def |
5119 by auto |
5113 by auto |
5120 |
5114 |
5162 |
5156 |
5163 lemma has_integral_spike_set_eq: |
5157 lemma has_integral_spike_set_eq: |
5164 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5158 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5165 assumes "negligible ((s - t) \<union> (t - s))" |
5159 assumes "negligible ((s - t) \<union> (t - s))" |
5166 shows "(f has_integral y) s \<longleftrightarrow> (f has_integral y) t" |
5160 shows "(f has_integral y) s \<longleftrightarrow> (f has_integral y) t" |
5167 unfolding has_integral_restrict_univ[symmetric,of f] |
5161 unfolding has_integral_restrict_UNIV[symmetric,of f] |
5168 apply (rule has_integral_spike_eq[OF assms]) |
5162 apply (rule has_integral_spike_eq[OF assms]) |
5169 by (auto split: if_split_asm) |
5163 by (auto split: if_split_asm) |
5170 |
5164 |
5171 lemma has_integral_spike_set: |
5165 lemma has_integral_spike_set: |
5172 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5166 fixes f :: "'n::euclidean_space \<Rightarrow> 'a::banach" |
5193 fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space" |
5187 fixes f :: "'n::euclidean_space \<Rightarrow> 'm::euclidean_space" |
5194 assumes k: "k \<in> Basis" |
5188 assumes k: "k \<in> Basis" |
5195 and as: "s \<subseteq> t" "(f has_integral i) s" "(f has_integral j) t" "\<forall>x\<in>t. 0 \<le> f(x)\<bullet>k" |
5189 and as: "s \<subseteq> t" "(f has_integral i) s" "(f has_integral j) t" "\<forall>x\<in>t. 0 \<le> f(x)\<bullet>k" |
5196 shows "i\<bullet>k \<le> j\<bullet>k" |
5190 shows "i\<bullet>k \<le> j\<bullet>k" |
5197 proof - |
5191 proof - |
5198 note has_integral_restrict_univ[symmetric, of f] |
5192 note has_integral_restrict_UNIV[symmetric, of f] |
5199 note as(2-3)[unfolded this] note * = has_integral_component_le[OF k this] |
5193 note as(2-3)[unfolded this] note * = has_integral_component_le[OF k this] |
5200 show ?thesis |
5194 show ?thesis |
5201 apply (rule *) |
5195 apply (rule *) |
5202 using as(1,4) |
5196 using as(1,4) |
5203 apply auto |
5197 apply auto |
5665 assumes "(f has_integral i) s" |
5659 assumes "(f has_integral i) s" |
5666 and "(f has_integral j) t" |
5660 and "(f has_integral j) t" |
5667 and "negligible (s \<inter> t)" |
5661 and "negligible (s \<inter> t)" |
5668 shows "(f has_integral (i + j)) (s \<union> t)" |
5662 shows "(f has_integral (i + j)) (s \<union> t)" |
5669 proof - |
5663 proof - |
5670 note * = has_integral_restrict_univ[symmetric, of f] |
5664 note * = has_integral_restrict_UNIV[symmetric, of f] |
5671 show ?thesis |
5665 show ?thesis |
5672 unfolding * |
5666 unfolding * |
5673 apply (rule has_integral_spike[OF assms(3)]) |
5667 apply (rule has_integral_spike[OF assms(3)]) |
5674 defer |
5668 defer |
5675 apply (rule has_integral_add[OF assms(1-2)[unfolded *]]) |
5669 apply (rule has_integral_add[OF assms(1-2)[unfolded *]]) |
5698 assumes "finite t" |
5692 assumes "finite t" |
5699 and "\<forall>s\<in>t. (f has_integral (i s)) s" |
5693 and "\<forall>s\<in>t. (f has_integral (i s)) s" |
5700 and "\<forall>s\<in>t. \<forall>s'\<in>t. s \<noteq> s' \<longrightarrow> negligible (s \<inter> s')" |
5694 and "\<forall>s\<in>t. \<forall>s'\<in>t. s \<noteq> s' \<longrightarrow> negligible (s \<inter> s')" |
5701 shows "(f has_integral (sum i t)) (\<Union>t)" |
5695 shows "(f has_integral (sum i t)) (\<Union>t)" |
5702 proof - |
5696 proof - |
5703 note * = has_integral_restrict_univ[symmetric, of f] |
5697 note * = has_integral_restrict_UNIV[symmetric, of f] |
5704 have **: "negligible (\<Union>((\<lambda>(a,b). a \<inter> b) ` {(a,b). a \<in> t \<and> b \<in> {y. y \<in> t \<and> a \<noteq> y}}))" |
5698 have **: "negligible (\<Union>((\<lambda>(a,b). a \<inter> b) ` {(a,b). a \<in> t \<and> b \<in> {y. y \<in> t \<and> a \<noteq> y}}))" |
5705 apply (rule negligible_Union) |
5699 apply (rule negligible_Union) |
5706 apply (rule finite_imageI) |
5700 apply (rule finite_imageI) |
5707 apply (rule finite_subset[of _ "t \<times> t"]) |
5701 apply (rule finite_subset[of _ "t \<times> t"]) |
5708 defer |
5702 defer |
6539 note int = assms(2)[unfolded integrable_alt[of _ s],THEN conjunct1,rule_format] |
6533 note int = assms(2)[unfolded integrable_alt[of _ s],THEN conjunct1,rule_format] |
6540 have ifif: "\<And>k t. (\<lambda>x. if x \<in> t then if x \<in> s then f k x else 0 else 0) = |
6534 have ifif: "\<And>k t. (\<lambda>x. if x \<in> t then if x \<in> s then f k x else 0 else 0) = |
6541 (\<lambda>x. if x \<in> t \<inter> s then f k x else 0)" |
6535 (\<lambda>x. if x \<in> t \<inter> s then f k x else 0)" |
6542 by (rule ext) auto |
6536 by (rule ext) auto |
6543 have int': "\<And>k a b. f k integrable_on cbox a b \<inter> s" |
6537 have int': "\<And>k a b. f k integrable_on cbox a b \<inter> s" |
6544 apply (subst integrable_restrict_univ[symmetric]) |
6538 apply (subst integrable_restrict_UNIV[symmetric]) |
6545 apply (subst ifif[symmetric]) |
6539 apply (subst ifif[symmetric]) |
6546 apply (subst integrable_restrict_univ) |
6540 apply (subst integrable_restrict_UNIV) |
6547 apply (rule int) |
6541 apply (rule int) |
6548 done |
6542 done |
6549 have "\<And>a b. (\<lambda>x. if x \<in> s then g x else 0) integrable_on cbox a b \<and> |
6543 have "\<And>a b. (\<lambda>x. if x \<in> s then g x else 0) integrable_on cbox a b \<and> |
6550 ((\<lambda>k. integral (cbox a b) (\<lambda>x. if x \<in> s then f k x else 0)) \<longlongrightarrow> |
6544 ((\<lambda>k. integral (cbox a b) (\<lambda>x. if x \<in> s then f k x else 0)) \<longlongrightarrow> |
6551 integral (cbox a b) (\<lambda>x. if x \<in> s then g x else 0)) sequentially" |
6545 integral (cbox a b) (\<lambda>x. if x \<in> s then g x else 0)) sequentially" |
7235 interpret bounded_bilinear prod by fact |
7229 interpret bounded_bilinear prod by fact |
7236 have "((\<lambda>x. prod (f x) (g' x) + prod (f' x) (g x)) has_integral |
7230 have "((\<lambda>x. prod (f x) (g' x) + prod (f' x) (g x)) has_integral |
7237 (prod (f b) (g b) - prod (f a) (g a))) {a..b}" |
7231 (prod (f b) (g b) - prod (f a) (g a))) {a..b}" |
7238 using deriv by (intro fundamental_theorem_of_calculus_interior_strong[OF s le]) |
7232 using deriv by (intro fundamental_theorem_of_calculus_interior_strong[OF s le]) |
7239 (auto intro!: continuous_intros continuous_on has_vector_derivative) |
7233 (auto intro!: continuous_intros continuous_on has_vector_derivative) |
7240 from has_integral_sub[OF this int] show ?thesis by (simp add: algebra_simps) |
7234 from has_integral_diff[OF this int] show ?thesis by (simp add: algebra_simps) |
7241 qed |
7235 qed |
7242 |
7236 |
7243 lemma integration_by_parts_interior: |
7237 lemma integration_by_parts_interior: |
7244 fixes prod :: "_ \<Rightarrow> _ \<Rightarrow> 'b :: banach" |
7238 fixes prod :: "_ \<Rightarrow> _ \<Rightarrow> 'b :: banach" |
7245 assumes "bounded_bilinear (prod)" "a \<le> b" |
7239 assumes "bounded_bilinear (prod)" "a \<le> b" |