| author | fleury <Mathias.Fleury@mpi-inf.mpg.de> | 
| Sun, 18 Sep 2016 11:31:19 +0200 | |
| changeset 63908 | ca41b6670904 | 
| parent 63886 | 685fb01256af | 
| child 63941 | f353674c2528 | 
| permissions | -rw-r--r-- | 
| 63627 | 1  | 
(* Title: HOL/Analysis/Interval_Integral.thy  | 
| 63329 | 2  | 
Author: Jeremy Avigad (CMU), Johannes Hölzl (TUM), Luke Serafin (CMU)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
3  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
4  | 
Lebesgue integral over an interval (with endpoints possibly +-\<infinity>)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
5  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
6  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
7  | 
theory Interval_Integral  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
8  | 
imports Set_Integral  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
9  | 
begin  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
10  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
11  | 
lemma continuous_on_vector_derivative:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
12  | 
"(\<And>x. x \<in> S \<Longrightarrow> (f has_vector_derivative f' x) (at x within S)) \<Longrightarrow> continuous_on S f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
13  | 
by (auto simp: continuous_on_eq_continuous_within intro!: has_vector_derivative_continuous)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
14  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
15  | 
lemma has_vector_derivative_weaken:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
16  | 
fixes x D and f g s t  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
17  | 
assumes f: "(f has_vector_derivative D) (at x within t)"  | 
| 63329 | 18  | 
and "x \<in> s" "s \<subseteq> t"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
19  | 
and "\<And>x. x \<in> s \<Longrightarrow> f x = g x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
20  | 
shows "(g has_vector_derivative D) (at x within s)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
21  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
22  | 
have "(f has_vector_derivative D) (at x within s) \<longleftrightarrow> (g has_vector_derivative D) (at x within s)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
23  | 
unfolding has_vector_derivative_def has_derivative_iff_norm  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
24  | 
using assms by (intro conj_cong Lim_cong_within refl) auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
25  | 
then show ?thesis  | 
| 61808 | 26  | 
using has_vector_derivative_within_subset[OF f \<open>s \<subseteq> t\<close>] by simp  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
27  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
28  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
29  | 
definition "einterval a b = {x. a < ereal x \<and> ereal x < b}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
30  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
31  | 
lemma einterval_eq[simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
32  | 
  shows einterval_eq_Icc: "einterval (ereal a) (ereal b) = {a <..< b}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
33  | 
    and einterval_eq_Ici: "einterval (ereal a) \<infinity> = {a <..}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
34  | 
    and einterval_eq_Iic: "einterval (- \<infinity>) (ereal b) = {..< b}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
35  | 
and einterval_eq_UNIV: "einterval (- \<infinity>) \<infinity> = UNIV"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
36  | 
by (auto simp: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
37  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
38  | 
lemma einterval_same: "einterval a a = {}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
39  | 
by (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
40  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
41  | 
lemma einterval_iff: "x \<in> einterval a b \<longleftrightarrow> a < ereal x \<and> ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
42  | 
by (simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
43  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
44  | 
lemma einterval_nonempty: "a < b \<Longrightarrow> \<exists>c. c \<in> einterval a b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
45  | 
by (cases a b rule: ereal2_cases, auto simp: einterval_def intro!: dense gt_ex lt_ex)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
46  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
47  | 
lemma open_einterval[simp]: "open (einterval a b)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
48  | 
by (cases a b rule: ereal2_cases)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
49  | 
(auto simp: einterval_def intro!: open_Collect_conj open_Collect_less continuous_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
50  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
51  | 
lemma borel_einterval[measurable]: "einterval a b \<in> sets borel"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
52  | 
unfolding einterval_def by measurable  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
53  | 
|
| 63329 | 54  | 
(*  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
55  | 
Approximating a (possibly infinite) interval  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
56  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
57  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
58  | 
lemma filterlim_sup1: "(LIM x F. f x :> G1) \<Longrightarrow> (LIM x F. f x :> (sup G1 G2))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
59  | 
unfolding filterlim_def by (auto intro: le_supI1)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
60  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
61  | 
lemma ereal_incseq_approx:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
62  | 
fixes a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
63  | 
assumes "a < b"  | 
| 63329 | 64  | 
obtains X :: "nat \<Rightarrow> real" where  | 
| 61969 | 65  | 
"incseq X" "\<And>i. a < X i" "\<And>i. X i < b" "X \<longlonglongrightarrow> b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
66  | 
proof (cases b)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
67  | 
case PInf  | 
| 61808 | 68  | 
with \<open>a < b\<close> have "a = -\<infinity> \<or> (\<exists>r. a = ereal r)"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
69  | 
by (cases a) auto  | 
| 61969 | 70  | 
moreover have "(\<lambda>x. ereal (real (Suc x))) \<longlonglongrightarrow> \<infinity>"  | 
| 
61609
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
71  | 
apply (subst LIMSEQ_Suc_iff)  | 
| 
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
72  | 
apply (simp add: Lim_PInfty)  | 
| 
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
73  | 
using nat_ceiling_le_eq by blast  | 
| 61969 | 74  | 
moreover have "\<And>r. (\<lambda>x. ereal (r + real (Suc x))) \<longlonglongrightarrow> \<infinity>"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
75  | 
apply (subst LIMSEQ_Suc_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
76  | 
apply (subst Lim_PInfty)  | 
| 
59587
 
8ea7b22525cb
Removed the obsolete functions "natfloor" and "natceiling"
 
nipkow 
parents: 
59092 
diff
changeset
 | 
77  | 
apply (metis add.commute diff_le_eq nat_ceiling_le_eq ereal_less_eq(3))  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
78  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
79  | 
ultimately show thesis  | 
| 
61609
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
80  | 
by (intro that[of "\<lambda>i. real_of_ereal a + Suc i"])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
81  | 
(auto simp: incseq_def PInf)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
82  | 
next  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
83  | 
case (real b')  | 
| 63040 | 84  | 
define d where "d = b' - (if a = -\<infinity> then b' - 1 else real_of_ereal a)"  | 
| 61808 | 85  | 
with \<open>a < b\<close> have a': "0 < d"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
86  | 
by (cases a) (auto simp: real)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
87  | 
moreover  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
88  | 
have "\<And>i r. r < b' \<Longrightarrow> (b' - r) * 1 < (b' - r) * real (Suc (Suc i))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
89  | 
by (intro mult_strict_left_mono) auto  | 
| 61808 | 90  | 
with \<open>a < b\<close> a' have "\<And>i. a < ereal (b' - d / real (Suc (Suc i)))"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
91  | 
by (cases a) (auto simp: real d_def field_simps)  | 
| 61969 | 92  | 
moreover have "(\<lambda>i. b' - d / Suc (Suc i)) \<longlonglongrightarrow> b'"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
93  | 
apply (subst filterlim_sequentially_Suc)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
94  | 
apply (subst filterlim_sequentially_Suc)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
95  | 
apply (rule tendsto_eq_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
96  | 
apply (auto intro!: tendsto_divide_0[OF tendsto_const] filterlim_sup1  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
97  | 
simp: at_infinity_eq_at_top_bot filterlim_real_sequentially)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
98  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
99  | 
ultimately show thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
100  | 
by (intro that[of "\<lambda>i. b' - d / Suc (Suc i)"])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
101  | 
(auto simp add: real incseq_def intro!: divide_left_mono)  | 
| 61808 | 102  | 
qed (insert \<open>a < b\<close>, auto)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
103  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
104  | 
lemma ereal_decseq_approx:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
105  | 
fixes a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
106  | 
assumes "a < b"  | 
| 63329 | 107  | 
obtains X :: "nat \<Rightarrow> real" where  | 
| 61969 | 108  | 
"decseq X" "\<And>i. a < X i" "\<And>i. X i < b" "X \<longlonglongrightarrow> a"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
109  | 
proof -  | 
| 61808 | 110  | 
have "-b < -a" using \<open>a < b\<close> by simp  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
111  | 
from ereal_incseq_approx[OF this] guess X .  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
112  | 
then show thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
113  | 
apply (intro that[of "\<lambda>i. - X i"])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
114  | 
apply (auto simp add: uminus_ereal.simps[symmetric] decseq_def incseq_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
115  | 
simp del: uminus_ereal.simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
116  | 
apply (metis ereal_minus_less_minus ereal_uminus_uminus ereal_Lim_uminus)+  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
117  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
118  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
119  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
120  | 
lemma einterval_Icc_approximation:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
121  | 
fixes a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
122  | 
assumes "a < b"  | 
| 63329 | 123  | 
obtains u l :: "nat \<Rightarrow> real" where  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
124  | 
    "einterval a b = (\<Union>i. {l i .. u i})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
125  | 
"incseq u" "decseq l" "\<And>i. l i < u i" "\<And>i. a < l i" "\<And>i. u i < b"  | 
| 61969 | 126  | 
"l \<longlonglongrightarrow> a" "u \<longlonglongrightarrow> b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
127  | 
proof -  | 
| 61808 | 128  | 
from dense[OF \<open>a < b\<close>] obtain c where "a < c" "c < b" by safe  | 
129  | 
from ereal_incseq_approx[OF \<open>c < b\<close>] guess u . note u = this  | 
|
130  | 
from ereal_decseq_approx[OF \<open>a < c\<close>] guess l . note l = this  | 
|
131  | 
  { fix i from less_trans[OF \<open>l i < c\<close> \<open>c < u i\<close>] have "l i < u i" by simp }
 | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
132  | 
  have "einterval a b = (\<Union>i. {l i .. u i})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
133  | 
proof (auto simp: einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
134  | 
fix x assume "a < ereal x" "ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
135  | 
have "eventually (\<lambda>i. ereal (l i) < ereal x) sequentially"  | 
| 61808 | 136  | 
using l(4) \<open>a < ereal x\<close> by (rule order_tendstoD)  | 
| 63329 | 137  | 
moreover  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
138  | 
have "eventually (\<lambda>i. ereal x < ereal (u i)) sequentially"  | 
| 61808 | 139  | 
using u(4) \<open>ereal x< b\<close> by (rule order_tendstoD)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
140  | 
ultimately have "eventually (\<lambda>i. l i < x \<and> x < u i) sequentially"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
141  | 
by eventually_elim auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
142  | 
then show "\<exists>i. l i \<le> x \<and> x \<le> u i"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
143  | 
by (auto intro: less_imp_le simp: eventually_sequentially)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
144  | 
next  | 
| 63329 | 145  | 
fix x i assume "l i \<le> x" "x \<le> u i"  | 
| 61808 | 146  | 
with \<open>a < ereal (l i)\<close> \<open>ereal (u i) < b\<close>  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
147  | 
show "a < ereal x" "ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
148  | 
by (auto simp del: ereal_less_eq(3) simp add: ereal_less_eq(3)[symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
149  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
150  | 
show thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
151  | 
by (intro that) fact+  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
152  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
153  | 
|
| 63329 | 154  | 
(* TODO: in this definition, it would be more natural if einterval a b included a and b when  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
155  | 
they are real. *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
156  | 
definition interval_lebesgue_integral :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a) \<Rightarrow> 'a::{banach, second_countable_topology}" where
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
157  | 
"interval_lebesgue_integral M a b f =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
158  | 
(if a \<le> b then (LINT x:einterval a b|M. f x) else - (LINT x:einterval b a|M. f x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
159  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
160  | 
syntax  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
161  | 
"_ascii_interval_lebesgue_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real measure \<Rightarrow> real \<Rightarrow> real"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
162  | 
  ("(5LINT _=_.._|_. _)" [0,60,60,61,100] 60)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
163  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
164  | 
translations  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
165  | 
"LINT x=a..b|M. f" == "CONST interval_lebesgue_integral M a b (\<lambda>x. f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
166  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
167  | 
definition interval_lebesgue_integrable :: "real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> 'a::{banach, second_countable_topology}) \<Rightarrow> bool" where
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
168  | 
"interval_lebesgue_integrable M a b f =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
169  | 
(if a \<le> b then set_integrable M (einterval a b) f else set_integrable M (einterval b a) f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
170  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
171  | 
syntax  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
172  | 
"_ascii_interval_lebesgue_borel_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real \<Rightarrow> real"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
173  | 
  ("(4LBINT _=_.._. _)" [0,60,60,61] 60)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
174  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
175  | 
translations  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
176  | 
"LBINT x=a..b. f" == "CONST interval_lebesgue_integral CONST lborel a b (\<lambda>x. f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
177  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
178  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
179  | 
Basic properties of integration over an interval.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
180  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
181  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
182  | 
lemma interval_lebesgue_integral_cong:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
183  | 
"a \<le> b \<Longrightarrow> (\<And>x. x \<in> einterval a b \<Longrightarrow> f x = g x) \<Longrightarrow> einterval a b \<in> sets M \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
184  | 
interval_lebesgue_integral M a b f = interval_lebesgue_integral M a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
185  | 
by (auto intro: set_lebesgue_integral_cong simp: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
186  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
187  | 
lemma interval_lebesgue_integral_cong_AE:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
188  | 
"f \<in> borel_measurable M \<Longrightarrow> g \<in> borel_measurable M \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
189  | 
a \<le> b \<Longrightarrow> AE x \<in> einterval a b in M. f x = g x \<Longrightarrow> einterval a b \<in> sets M \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
190  | 
interval_lebesgue_integral M a b f = interval_lebesgue_integral M a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
191  | 
by (auto intro: set_lebesgue_integral_cong_AE simp: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
192  | 
|
| 62083 | 193  | 
lemma interval_integrable_mirror:  | 
194  | 
shows "interval_lebesgue_integrable lborel a b (\<lambda>x. f (-x)) \<longleftrightarrow>  | 
|
195  | 
interval_lebesgue_integrable lborel (-b) (-a) f"  | 
|
196  | 
proof -  | 
|
197  | 
have *: "indicator (einterval a b) (- x) = (indicator (einterval (-b) (-a)) x :: real)"  | 
|
198  | 
for a b :: ereal and x :: real  | 
|
199  | 
by (cases a b rule: ereal2_cases) (auto simp: einterval_def split: split_indicator)  | 
|
200  | 
show ?thesis  | 
|
201  | 
unfolding interval_lebesgue_integrable_def  | 
|
202  | 
using lborel_integrable_real_affine_iff[symmetric, of "-1" "\<lambda>x. indicator (einterval _ _) x *\<^sub>R f x" 0]  | 
|
203  | 
by (simp add: *)  | 
|
204  | 
qed  | 
|
205  | 
||
| 63329 | 206  | 
lemma interval_lebesgue_integral_add [intro, simp]:  | 
207  | 
fixes M a b f  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
208  | 
assumes "interval_lebesgue_integrable M a b f" "interval_lebesgue_integrable M a b g"  | 
| 63329 | 209  | 
shows "interval_lebesgue_integrable M a b (\<lambda>x. f x + g x)" and  | 
210  | 
"interval_lebesgue_integral M a b (\<lambda>x. f x + g x) =  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
211  | 
interval_lebesgue_integral M a b f + interval_lebesgue_integral M a b g"  | 
| 63329 | 212  | 
using assms by (auto simp add: interval_lebesgue_integral_def interval_lebesgue_integrable_def  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
213  | 
field_simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
214  | 
|
| 63329 | 215  | 
lemma interval_lebesgue_integral_diff [intro, simp]:  | 
216  | 
fixes M a b f  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
217  | 
assumes "interval_lebesgue_integrable M a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
218  | 
"interval_lebesgue_integrable M a b g"  | 
| 63329 | 219  | 
shows "interval_lebesgue_integrable M a b (\<lambda>x. f x - g x)" and  | 
220  | 
"interval_lebesgue_integral M a b (\<lambda>x. f x - g x) =  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
221  | 
interval_lebesgue_integral M a b f - interval_lebesgue_integral M a b g"  | 
| 63329 | 222  | 
using assms by (auto simp add: interval_lebesgue_integral_def interval_lebesgue_integrable_def  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
223  | 
field_simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
224  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
225  | 
lemma interval_lebesgue_integrable_mult_right [intro, simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
226  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
227  | 
shows "(c \<noteq> 0 \<Longrightarrow> interval_lebesgue_integrable M a b f) \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
228  | 
interval_lebesgue_integrable M a b (\<lambda>x. c * f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
229  | 
by (simp add: interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
230  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
231  | 
lemma interval_lebesgue_integrable_mult_left [intro, simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
232  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
233  | 
shows "(c \<noteq> 0 \<Longrightarrow> interval_lebesgue_integrable M a b f) \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
234  | 
interval_lebesgue_integrable M a b (\<lambda>x. f x * c)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
235  | 
by (simp add: interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
236  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
237  | 
lemma interval_lebesgue_integrable_divide [intro, simp]:  | 
| 
59867
 
58043346ca64
given up separate type classes demanding `inverse 0 = 0`
 
haftmann 
parents: 
59587 
diff
changeset
 | 
238  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, field, second_countable_topology}"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
239  | 
shows "(c \<noteq> 0 \<Longrightarrow> interval_lebesgue_integrable M a b f) \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
240  | 
interval_lebesgue_integrable M a b (\<lambda>x. f x / c)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
241  | 
by (simp add: interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
242  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
243  | 
lemma interval_lebesgue_integral_mult_right [simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
244  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
245  | 
shows "interval_lebesgue_integral M a b (\<lambda>x. c * f x) =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
246  | 
c * interval_lebesgue_integral M a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
247  | 
by (simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
248  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
249  | 
lemma interval_lebesgue_integral_mult_left [simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
250  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
251  | 
shows "interval_lebesgue_integral M a b (\<lambda>x. f x * c) =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
252  | 
interval_lebesgue_integral M a b f * c"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
253  | 
by (simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
254  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
255  | 
lemma interval_lebesgue_integral_divide [simp]:  | 
| 
59867
 
58043346ca64
given up separate type classes demanding `inverse 0 = 0`
 
haftmann 
parents: 
59587 
diff
changeset
 | 
256  | 
  fixes M a b c and f :: "real \<Rightarrow> 'a::{banach, real_normed_field, field, second_countable_topology}"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
257  | 
shows "interval_lebesgue_integral M a b (\<lambda>x. f x / c) =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
258  | 
interval_lebesgue_integral M a b f / c"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
259  | 
by (simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
260  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
261  | 
lemma interval_lebesgue_integral_uminus:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
262  | 
"interval_lebesgue_integral M a b (\<lambda>x. - f x) = - interval_lebesgue_integral M a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
263  | 
by (auto simp add: interval_lebesgue_integral_def interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
264  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
265  | 
lemma interval_lebesgue_integral_of_real:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
266  | 
"interval_lebesgue_integral M a b (\<lambda>x. complex_of_real (f x)) =  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
267  | 
of_real (interval_lebesgue_integral M a b f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
268  | 
unfolding interval_lebesgue_integral_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
269  | 
by (auto simp add: interval_lebesgue_integral_def set_integral_complex_of_real)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
270  | 
|
| 63329 | 271  | 
lemma interval_lebesgue_integral_le_eq:  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
272  | 
fixes a b f  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
273  | 
assumes "a \<le> b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
274  | 
shows "interval_lebesgue_integral M a b f = (LINT x : einterval a b | M. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
275  | 
using assms by (auto simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
276  | 
|
| 63329 | 277  | 
lemma interval_lebesgue_integral_gt_eq:  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
278  | 
fixes a b f  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
279  | 
assumes "a > b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
280  | 
shows "interval_lebesgue_integral M a b f = -(LINT x : einterval b a | M. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
281  | 
using assms by (auto simp add: interval_lebesgue_integral_def less_imp_le einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
282  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
283  | 
lemma interval_lebesgue_integral_gt_eq':  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
284  | 
fixes a b f  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
285  | 
assumes "a > b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
286  | 
shows "interval_lebesgue_integral M a b f = - interval_lebesgue_integral M b a f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
287  | 
using assms by (auto simp add: interval_lebesgue_integral_def less_imp_le einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
288  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
289  | 
lemma interval_integral_endpoints_same [simp]: "(LBINT x=a..a. f x) = 0"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
290  | 
by (simp add: interval_lebesgue_integral_def einterval_same)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
291  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
292  | 
lemma interval_integral_endpoints_reverse: "(LBINT x=a..b. f x) = -(LBINT x=b..a. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
293  | 
by (cases a b rule: linorder_cases) (auto simp: interval_lebesgue_integral_def einterval_same)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
294  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
295  | 
lemma interval_integrable_endpoints_reverse:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
296  | 
"interval_lebesgue_integrable lborel a b f \<longleftrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
297  | 
interval_lebesgue_integrable lborel b a f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
298  | 
by (cases a b rule: linorder_cases) (auto simp: interval_lebesgue_integrable_def einterval_same)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
299  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
300  | 
lemma interval_integral_reflect:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
301  | 
"(LBINT x=a..b. f x) = (LBINT x=-b..-a. f (-x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
302  | 
proof (induct a b rule: linorder_wlog)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
303  | 
case (sym a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
304  | 
by (auto simp add: interval_lebesgue_integral_def interval_integrable_endpoints_reverse  | 
| 62390 | 305  | 
split: if_split_asm)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
306  | 
next  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
307  | 
case (le a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
308  | 
unfolding interval_lebesgue_integral_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
309  | 
by (subst set_integral_reflect)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
310  | 
(auto simp: interval_lebesgue_integrable_def einterval_iff  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
311  | 
ereal_uminus_le_reorder ereal_uminus_less_reorder not_less  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
312  | 
uminus_ereal.simps[symmetric]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
313  | 
simp del: uminus_ereal.simps  | 
| 
63886
 
685fb01256af
move Henstock-Kurzweil integration after Lebesgue_Measure; replace content by abbreviation measure lborel
 
hoelzl 
parents: 
63627 
diff
changeset
 | 
314  | 
intro!: Bochner_Integration.integral_cong  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
315  | 
split: split_indicator)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
316  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
317  | 
|
| 
61897
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
318  | 
lemma interval_lebesgue_integral_0_infty:  | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
319  | 
  "interval_lebesgue_integrable M 0 \<infinity> f \<longleftrightarrow> set_integrable M {0<..} f"
 | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
320  | 
  "interval_lebesgue_integral M 0 \<infinity> f = (LINT x:{0<..}|M. f x)"
 | 
| 63329 | 321  | 
unfolding zero_ereal_def  | 
| 
61897
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
322  | 
by (auto simp: interval_lebesgue_integral_le_eq interval_lebesgue_integrable_def)  | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
323  | 
|
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
324  | 
lemma interval_integral_to_infinity_eq: "(LINT x=ereal a..\<infinity> | M. f x) = (LINT x : {a<..} | M. f x)"
 | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
325  | 
unfolding interval_lebesgue_integral_def by auto  | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
326  | 
|
| 63329 | 327  | 
lemma interval_integrable_to_infinity_eq: "(interval_lebesgue_integrable M a \<infinity> f) =  | 
| 
61897
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
328  | 
  (set_integrable M {a<..} f)"
 | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
329  | 
unfolding interval_lebesgue_integrable_def by auto  | 
| 
 
bc0fc5499085
Bochner integral: prove dominated convergence at_top
 
hoelzl 
parents: 
61882 
diff
changeset
 | 
330  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
331  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
332  | 
Basic properties of integration over an interval wrt lebesgue measure.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
333  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
334  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
335  | 
lemma interval_integral_zero [simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
336  | 
fixes a b :: ereal  | 
| 63329 | 337  | 
shows"LBINT x=a..b. 0 = 0"  | 
338  | 
unfolding interval_lebesgue_integral_def einterval_eq  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
339  | 
by simp  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
340  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
341  | 
lemma interval_integral_const [intro, simp]:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
342  | 
fixes a b c :: real  | 
| 63329 | 343  | 
shows "interval_lebesgue_integrable lborel a b (\<lambda>x. c)" and "LBINT x=a..b. c = c * (b - a)"  | 
344  | 
unfolding interval_lebesgue_integral_def interval_lebesgue_integrable_def einterval_eq  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
345  | 
by (auto simp add: less_imp_le field_simps measure_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
346  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
347  | 
lemma interval_integral_cong_AE:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
348  | 
assumes [measurable]: "f \<in> borel_measurable borel" "g \<in> borel_measurable borel"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
349  | 
assumes "AE x \<in> einterval (min a b) (max a b) in lborel. f x = g x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
350  | 
shows "interval_lebesgue_integral lborel a b f = interval_lebesgue_integral lborel a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
351  | 
using assms  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
352  | 
proof (induct a b rule: linorder_wlog)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
353  | 
case (sym a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
354  | 
by (simp add: min.commute max.commute interval_integral_endpoints_reverse[of a b])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
355  | 
next  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
356  | 
case (le a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
357  | 
by (auto simp: interval_lebesgue_integral_def max_def min_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
358  | 
intro!: set_lebesgue_integral_cong_AE)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
359  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
360  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
361  | 
lemma interval_integral_cong:  | 
| 63329 | 362  | 
assumes "\<And>x. x \<in> einterval (min a b) (max a b) \<Longrightarrow> f x = g x"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
363  | 
shows "interval_lebesgue_integral lborel a b f = interval_lebesgue_integral lborel a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
364  | 
using assms  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
365  | 
proof (induct a b rule: linorder_wlog)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
366  | 
case (sym a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
367  | 
by (simp add: min.commute max.commute interval_integral_endpoints_reverse[of a b])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
368  | 
next  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
369  | 
case (le a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
370  | 
by (auto simp: interval_lebesgue_integral_def max_def min_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
371  | 
intro!: set_lebesgue_integral_cong)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
372  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
373  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
374  | 
lemma interval_lebesgue_integrable_cong_AE:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
375  | 
"f \<in> borel_measurable lborel \<Longrightarrow> g \<in> borel_measurable lborel \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
376  | 
AE x \<in> einterval (min a b) (max a b) in lborel. f x = g x \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
377  | 
interval_lebesgue_integrable lborel a b f = interval_lebesgue_integrable lborel a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
378  | 
apply (simp add: interval_lebesgue_integrable_def )  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
379  | 
apply (intro conjI impI set_integrable_cong_AE)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
380  | 
apply (auto simp: min_def max_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
381  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
382  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
383  | 
lemma interval_integrable_abs_iff:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
384  | 
fixes f :: "real \<Rightarrow> real"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
385  | 
shows "f \<in> borel_measurable lborel \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
386  | 
interval_lebesgue_integrable lborel a b (\<lambda>x. \<bar>f x\<bar>) = interval_lebesgue_integrable lborel a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
387  | 
unfolding interval_lebesgue_integrable_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
388  | 
by (subst (1 2) set_integrable_abs_iff') simp_all  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
389  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
390  | 
lemma interval_integral_Icc:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
391  | 
fixes a b :: real  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
392  | 
  shows "a \<le> b \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {a..b}. f x)"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
393  | 
  by (auto intro!: set_integral_discrete_difference[where X="{a, b}"]
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
394  | 
simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
395  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
396  | 
lemma interval_integral_Icc':  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
397  | 
  "a \<le> b \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {x. a \<le> ereal x \<and> ereal x \<le> b}. f x)"
 | 
| 
61609
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
398  | 
  by (auto intro!: set_integral_discrete_difference[where X="{real_of_ereal a, real_of_ereal b}"]
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
399  | 
simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
400  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
401  | 
lemma interval_integral_Ioc:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
402  | 
  "a \<le> b \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {a<..b}. f x)"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
403  | 
  by (auto intro!: set_integral_discrete_difference[where X="{a, b}"]
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
404  | 
simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
405  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
406  | 
(* TODO: other versions as well? *) (* Yes: I need the Icc' version. *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
407  | 
lemma interval_integral_Ioc':  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
408  | 
  "a \<le> b \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {x. a < ereal x \<and> ereal x \<le> b}. f x)"
 | 
| 
61609
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
409  | 
  by (auto intro!: set_integral_discrete_difference[where X="{real_of_ereal a, real_of_ereal b}"]
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
410  | 
simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
411  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
412  | 
lemma interval_integral_Ico:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
413  | 
  "a \<le> b \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {a..<b}. f x)"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
414  | 
  by (auto intro!: set_integral_discrete_difference[where X="{a, b}"]
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
415  | 
simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
416  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
417  | 
lemma interval_integral_Ioi:  | 
| 61882 | 418  | 
  "\<bar>a\<bar> < \<infinity> \<Longrightarrow> (LBINT x=a..\<infinity>. f x) = (LBINT x : {real_of_ereal a <..}. f x)"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
419  | 
by (auto simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
420  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
421  | 
lemma interval_integral_Ioo:  | 
| 61882 | 422  | 
  "a \<le> b \<Longrightarrow> \<bar>a\<bar> < \<infinity> ==> \<bar>b\<bar> < \<infinity> \<Longrightarrow> (LBINT x=a..b. f x) = (LBINT x : {real_of_ereal a <..< real_of_ereal b}. f x)"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
423  | 
by (auto simp add: interval_lebesgue_integral_def einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
424  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
425  | 
lemma interval_integral_discrete_difference:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
426  | 
  fixes f :: "real \<Rightarrow> 'b::{banach, second_countable_topology}" and a b :: ereal
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
427  | 
assumes "countable X"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
428  | 
and eq: "\<And>x. a \<le> b \<Longrightarrow> a < x \<Longrightarrow> x < b \<Longrightarrow> x \<notin> X \<Longrightarrow> f x = g x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
429  | 
and anti_eq: "\<And>x. b \<le> a \<Longrightarrow> b < x \<Longrightarrow> x < a \<Longrightarrow> x \<notin> X \<Longrightarrow> f x = g x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
430  | 
  assumes "\<And>x. x \<in> X \<Longrightarrow> emeasure M {x} = 0" "\<And>x. x \<in> X \<Longrightarrow> {x} \<in> sets M"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
431  | 
shows "interval_lebesgue_integral M a b f = interval_lebesgue_integral M a b g"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
432  | 
unfolding interval_lebesgue_integral_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
433  | 
apply (intro if_cong refl arg_cong[where f="\<lambda>x. - x"] integral_discrete_difference[of X] assms)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
434  | 
apply (auto simp: eq anti_eq einterval_iff split: split_indicator)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
435  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
436  | 
|
| 63329 | 437  | 
lemma interval_integral_sum:  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
438  | 
fixes a b c :: ereal  | 
| 63329 | 439  | 
assumes integrable: "interval_lebesgue_integrable lborel (min a (min b c)) (max a (max b c)) f"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
440  | 
shows "(LBINT x=a..b. f x) + (LBINT x=b..c. f x) = (LBINT x=a..c. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
441  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
442  | 
let ?I = "\<lambda>a b. LBINT x=a..b. f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
443  | 
  { fix a b c :: ereal assume "interval_lebesgue_integrable lborel a c f" "a \<le> b" "b \<le> c"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
444  | 
then have ord: "a \<le> b" "b \<le> c" "a \<le> c" and f': "set_integrable lborel (einterval a c) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
445  | 
by (auto simp: interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
446  | 
then have f: "set_borel_measurable borel (einterval a c) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
447  | 
by (drule_tac borel_measurable_integrable) simp  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
448  | 
have "(LBINT x:einterval a c. f x) = (LBINT x:einterval a b \<union> einterval b c. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
449  | 
proof (rule set_integral_cong_set)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
450  | 
show "AE x in lborel. (x \<in> einterval a b \<union> einterval b c) = (x \<in> einterval a c)"  | 
| 
61609
 
77b453bd616f
Coercion "real" now has type nat => real only and is no longer overloaded. Type class "real_of" is gone. Many duplicate theorems removed.
 
paulson <lp15@cam.ac.uk> 
parents: 
59867 
diff
changeset
 | 
451  | 
using AE_lborel_singleton[of "real_of_ereal b"] ord  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
452  | 
by (cases a b c rule: ereal3_cases) (auto simp: einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
453  | 
qed (insert ord, auto intro!: set_borel_measurable_subset[OF f] simp: einterval_iff)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
454  | 
also have "\<dots> = (LBINT x:einterval a b. f x) + (LBINT x:einterval b c. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
455  | 
using ord  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
456  | 
by (intro set_integral_Un_AE) (auto intro!: set_integrable_subset[OF f'] simp: einterval_iff not_less)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
457  | 
finally have "?I a b + ?I b c = ?I a c"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
458  | 
using ord by (simp add: interval_lebesgue_integral_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
459  | 
} note 1 = this  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
460  | 
  { fix a b c :: ereal assume "interval_lebesgue_integrable lborel a c f" "a \<le> b" "b \<le> c"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
461  | 
from 1[OF this] have "?I b c + ?I a b = ?I a c"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
462  | 
by (metis add.commute)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
463  | 
} note 2 = this  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
464  | 
have 3: "\<And>a b. b \<le> a \<Longrightarrow> (LBINT x=a..b. f x) = - (LBINT x=b..a. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
465  | 
by (rule interval_integral_endpoints_reverse)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
466  | 
show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
467  | 
using integrable  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
468  | 
by (cases a b b c a c rule: linorder_le_cases[case_product linorder_le_cases linorder_cases])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
469  | 
(simp_all add: min_absorb1 min_absorb2 max_absorb1 max_absorb2 field_simps 1 2 3)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
470  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
471  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
472  | 
lemma interval_integrable_isCont:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
473  | 
  fixes a b and f :: "real \<Rightarrow> 'a::{banach, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
474  | 
shows "(\<And>x. min a b \<le> x \<Longrightarrow> x \<le> max a b \<Longrightarrow> isCont f x) \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
475  | 
interval_lebesgue_integrable lborel a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
476  | 
proof (induct a b rule: linorder_wlog)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
477  | 
case (le a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
478  | 
by (auto simp: interval_lebesgue_integrable_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
479  | 
             intro!: set_integrable_subset[OF borel_integrable_compact[of "{a .. b}"]]
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
480  | 
continuous_at_imp_continuous_on)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
481  | 
qed (auto intro: interval_integrable_endpoints_reverse[THEN iffD1])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
482  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
483  | 
lemma interval_integrable_continuous_on:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
484  | 
fixes a b :: real and f  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
485  | 
  assumes "a \<le> b" and "continuous_on {a..b} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
486  | 
shows "interval_lebesgue_integrable lborel a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
487  | 
using assms unfolding interval_lebesgue_integrable_def apply simp  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
488  | 
by (rule set_integrable_subset, rule borel_integrable_atLeastAtMost' [of a b], auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
489  | 
|
| 63329 | 490  | 
lemma interval_integral_eq_integral:  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
491  | 
fixes f :: "real \<Rightarrow> 'a::euclidean_space"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
492  | 
  shows "a \<le> b \<Longrightarrow> set_integrable lborel {a..b} f \<Longrightarrow> LBINT x=a..b. f x = integral {a..b} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
493  | 
by (subst interval_integral_Icc, simp) (rule set_borel_integral_eq_integral)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
494  | 
|
| 63329 | 495  | 
lemma interval_integral_eq_integral':  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
496  | 
fixes f :: "real \<Rightarrow> 'a::euclidean_space"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
497  | 
shows "a \<le> b \<Longrightarrow> set_integrable lborel (einterval a b) f \<Longrightarrow> LBINT x=a..b. f x = integral (einterval a b) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
498  | 
by (subst interval_lebesgue_integral_le_eq, simp) (rule set_borel_integral_eq_integral)  | 
| 63329 | 499  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
500  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
501  | 
General limit approximation arguments  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
502  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
503  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
504  | 
lemma interval_integral_Icc_approx_nonneg:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
505  | 
fixes a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
506  | 
assumes "a < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
507  | 
fixes u l :: "nat \<Rightarrow> real"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
508  | 
  assumes  approx: "einterval a b = (\<Union>i. {l i .. u i})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
509  | 
"incseq u" "decseq l" "\<And>i. l i < u i" "\<And>i. a < l i" "\<And>i. u i < b"  | 
| 61969 | 510  | 
"l \<longlonglongrightarrow> a" "u \<longlonglongrightarrow> b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
511  | 
fixes f :: "real \<Rightarrow> real"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
512  | 
  assumes f_integrable: "\<And>i. set_integrable lborel {l i..u i} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
513  | 
assumes f_nonneg: "AE x in lborel. a < ereal x \<longrightarrow> ereal x < b \<longrightarrow> 0 \<le> f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
514  | 
assumes f_measurable: "set_borel_measurable lborel (einterval a b) f"  | 
| 61969 | 515  | 
assumes lbint_lim: "(\<lambda>i. LBINT x=l i.. u i. f x) \<longlonglongrightarrow> C"  | 
| 63329 | 516  | 
shows  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
517  | 
"set_integrable lborel (einterval a b) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
518  | 
"(LBINT x=a..b. f x) = C"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
519  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
520  | 
  have 1: "\<And>i. set_integrable lborel {l i..u i} f" by (rule f_integrable)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
521  | 
  have 2: "AE x in lborel. mono (\<lambda>n. indicator {l n..u n} x *\<^sub>R f x)"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
522  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
523  | 
from f_nonneg have "AE x in lborel. \<forall>i. l i \<le> x \<longrightarrow> x \<le> u i \<longrightarrow> 0 \<le> f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
524  | 
by eventually_elim  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
525  | 
(metis approx(5) approx(6) dual_order.strict_trans1 ereal_less_eq(3) le_less_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
526  | 
then show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
527  | 
apply eventually_elim  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
528  | 
apply (auto simp: mono_def split: split_indicator)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
529  | 
apply (metis approx(3) decseqD order_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
530  | 
apply (metis approx(2) incseqD order_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
531  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
532  | 
qed  | 
| 61969 | 533  | 
  have 3: "AE x in lborel. (\<lambda>i. indicator {l i..u i} x *\<^sub>R f x) \<longlonglongrightarrow> indicator (einterval a b) x *\<^sub>R f x"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
534  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
535  | 
    { fix x i assume "l i \<le> x" "x \<le> u i"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
536  | 
then have "eventually (\<lambda>i. l i \<le> x \<and> x \<le> u i) sequentially"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
537  | 
apply (auto simp: eventually_sequentially intro!: exI[of _ i])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
538  | 
apply (metis approx(3) decseqD order_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
539  | 
apply (metis approx(2) incseqD order_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
540  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
541  | 
      then have "eventually (\<lambda>i. f x * indicator {l i..u i} x = f x) sequentially"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
542  | 
by eventually_elim auto }  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
543  | 
then show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
544  | 
unfolding approx(1) by (auto intro!: AE_I2 Lim_eventually split: split_indicator)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
545  | 
qed  | 
| 61969 | 546  | 
  have 4: "(\<lambda>i. \<integral> x. indicator {l i..u i} x *\<^sub>R f x \<partial>lborel) \<longlonglongrightarrow> C"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
547  | 
using lbint_lim by (simp add: interval_integral_Icc approx less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
548  | 
have 5: "set_borel_measurable lborel (einterval a b) f" by (rule assms)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
549  | 
have "(LBINT x=a..b. f x) = lebesgue_integral lborel (\<lambda>x. indicator (einterval a b) x *\<^sub>R f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
550  | 
using assms by (simp add: interval_lebesgue_integral_def less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
551  | 
also have "... = C" by (rule integral_monotone_convergence [OF 1 2 3 4 5])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
552  | 
finally show "(LBINT x=a..b. f x) = C" .  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
553  | 
|
| 63329 | 554  | 
show "set_integrable lborel (einterval a b) f"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
555  | 
by (rule integrable_monotone_convergence[OF 1 2 3 4 5])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
556  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
557  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
558  | 
lemma interval_integral_Icc_approx_integrable:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
559  | 
fixes u l :: "nat \<Rightarrow> real" and a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
560  | 
  fixes f :: "real \<Rightarrow> 'a::{banach, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
561  | 
assumes "a < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
562  | 
  assumes  approx: "einterval a b = (\<Union>i. {l i .. u i})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
563  | 
"incseq u" "decseq l" "\<And>i. l i < u i" "\<And>i. a < l i" "\<And>i. u i < b"  | 
| 61969 | 564  | 
"l \<longlonglongrightarrow> a" "u \<longlonglongrightarrow> b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
565  | 
assumes f_integrable: "set_integrable lborel (einterval a b) f"  | 
| 61969 | 566  | 
shows "(\<lambda>i. LBINT x=l i.. u i. f x) \<longlonglongrightarrow> (LBINT x=a..b. f x)"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
567  | 
proof -  | 
| 61969 | 568  | 
  have "(\<lambda>i. LBINT x:{l i.. u i}. f x) \<longlonglongrightarrow> (LBINT x:einterval a b. f x)"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
569  | 
proof (rule integral_dominated_convergence)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
570  | 
show "integrable lborel (\<lambda>x. norm (indicator (einterval a b) x *\<^sub>R f x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
571  | 
by (rule integrable_norm) fact  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
572  | 
show "set_borel_measurable lborel (einterval a b) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
573  | 
using f_integrable by (rule borel_measurable_integrable)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
574  | 
    then show "\<And>i. set_borel_measurable lborel {l i..u i} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
575  | 
by (rule set_borel_measurable_subset) (auto simp: approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
576  | 
    show "\<And>i. AE x in lborel. norm (indicator {l i..u i} x *\<^sub>R f x) \<le> norm (indicator (einterval a b) x *\<^sub>R f x)"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
577  | 
by (intro AE_I2) (auto simp: approx split: split_indicator)  | 
| 61969 | 578  | 
    show "AE x in lborel. (\<lambda>i. indicator {l i..u i} x *\<^sub>R f x) \<longlonglongrightarrow> indicator (einterval a b) x *\<^sub>R f x"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
579  | 
proof (intro AE_I2 tendsto_intros Lim_eventually)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
580  | 
fix x  | 
| 63329 | 581  | 
      { fix i assume "l i \<le> x" "x \<le> u i"
 | 
| 61808 | 582  | 
with \<open>incseq u\<close>[THEN incseqD, of i] \<open>decseq l\<close>[THEN decseqD, of i]  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
583  | 
have "eventually (\<lambda>i. l i \<le> x \<and> x \<le> u i) sequentially"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
584  | 
by (auto simp: eventually_sequentially decseq_def incseq_def intro: order_trans) }  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
585  | 
      then show "eventually (\<lambda>xa. indicator {l xa..u xa} x = (indicator (einterval a b) x::real)) sequentially"
 | 
| 61969 | 586  | 
using approx order_tendstoD(2)[OF \<open>l \<longlonglongrightarrow> a\<close>, of x] order_tendstoD(1)[OF \<open>u \<longlonglongrightarrow> b\<close>, of x]  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
587  | 
by (auto split: split_indicator)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
588  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
589  | 
qed  | 
| 61808 | 590  | 
with \<open>a < b\<close> \<open>\<And>i. l i < u i\<close> show ?thesis  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
591  | 
by (simp add: interval_lebesgue_integral_le_eq[symmetric] interval_integral_Icc less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
592  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
593  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
594  | 
(*  | 
| 63329 | 595  | 
A slightly stronger version of integral_FTC_atLeastAtMost and related facts,  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
596  | 
with continuous_on instead of isCont  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
597  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
598  | 
TODO: make the older versions corollaries of these (using continuous_at_imp_continuous_on, etc.)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
599  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
600  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
601  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
602  | 
TODO: many proofs below require inferences like  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
603  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
604  | 
a < ereal x \<Longrightarrow> x < y \<Longrightarrow> a < ereal y  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
605  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
606  | 
where x and y are real. These should be better automated.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
607  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
608  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
609  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
610  | 
The first Fundamental Theorem of Calculus  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
611  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
612  | 
First, for finite intervals, and then two versions for arbitrary intervals.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
613  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
614  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
615  | 
lemma interval_integral_FTC_finite:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
616  | 
fixes f F :: "real \<Rightarrow> 'a::euclidean_space" and a b :: real  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
617  | 
  assumes f: "continuous_on {min a b..max a b} f"
 | 
| 63329 | 618  | 
assumes F: "\<And>x. min a b \<le> x \<Longrightarrow> x \<le> max a b \<Longrightarrow> (F has_vector_derivative (f x)) (at x within  | 
619  | 
    {min a b..max a b})"
 | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
620  | 
shows "(LBINT x=a..b. f x) = F b - F a"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
621  | 
apply (case_tac "a \<le> b")  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
622  | 
apply (subst interval_integral_Icc, simp)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
623  | 
apply (rule integral_FTC_atLeastAtMost, assumption)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
624  | 
apply (metis F max_def min_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
625  | 
using f apply (simp add: min_absorb1 max_absorb2)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
626  | 
apply (subst interval_integral_endpoints_reverse)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
627  | 
apply (subst interval_integral_Icc, simp)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
628  | 
apply (subst integral_FTC_atLeastAtMost, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
629  | 
apply (metis F max_def min_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
630  | 
using f by (simp add: min_absorb2 max_absorb1)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
631  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
632  | 
lemma interval_integral_FTC_nonneg:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
633  | 
fixes f F :: "real \<Rightarrow> real" and a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
634  | 
assumes "a < b"  | 
| 63329 | 635  | 
assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV F x :> f x"  | 
636  | 
assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
637  | 
assumes f_nonneg: "AE x in lborel. a < ereal x \<longrightarrow> ereal x < b \<longrightarrow> 0 \<le> f x"  | 
| 61973 | 638  | 
assumes A: "((F \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"  | 
639  | 
assumes B: "((F \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
640  | 
shows  | 
| 63329 | 641  | 
"set_integrable lborel (einterval a b) f"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
642  | 
"(LBINT x=a..b. f x) = B - A"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
643  | 
proof -  | 
| 61808 | 644  | 
from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
645  | 
have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
646  | 
by (rule order_less_le_trans, rule approx, force)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
647  | 
have [simp]: "\<And>x i. x \<le> u i \<Longrightarrow> ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
648  | 
by (rule order_le_less_trans, subst ereal_less_eq(3), assumption, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
649  | 
have FTCi: "\<And>i. (LBINT x=l i..u i. f x) = F (u i) - F (l i)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
650  | 
using assms approx apply (intro interval_integral_FTC_finite)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
651  | 
apply (auto simp add: less_imp_le min_def max_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
652  | 
has_field_derivative_iff_has_vector_derivative[symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
653  | 
apply (rule continuous_at_imp_continuous_on, auto intro!: f)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
654  | 
by (rule DERIV_subset [OF F], auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
655  | 
  have 1: "\<And>i. set_integrable lborel {l i..u i} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
656  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
657  | 
    fix i show "set_integrable lborel {l i .. u i} f"
 | 
| 61808 | 658  | 
using \<open>a < l i\<close> \<open>u i < b\<close>  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
659  | 
by (intro borel_integrable_compact f continuous_at_imp_continuous_on compact_Icc ballI)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
660  | 
(auto simp del: ereal_less_eq simp add: ereal_less_eq(3)[symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
661  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
662  | 
have 2: "set_borel_measurable lborel (einterval a b) f"  | 
| 63329 | 663  | 
by (auto simp del: real_scaleR_def intro!: set_borel_measurable_continuous  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
664  | 
simp: continuous_on_eq_continuous_at einterval_iff f)  | 
| 61969 | 665  | 
have 3: "(\<lambda>i. LBINT x=l i..u i. f x) \<longlonglongrightarrow> B - A"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
666  | 
apply (subst FTCi)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
667  | 
apply (intro tendsto_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
668  | 
using B approx unfolding tendsto_at_iff_sequentially comp_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
669  | 
using tendsto_at_iff_sequentially[where 'a=real]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
670  | 
apply (elim allE[of _ "\<lambda>i. ereal (u i)"], auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
671  | 
using A approx unfolding tendsto_at_iff_sequentially comp_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
672  | 
by (elim allE[of _ "\<lambda>i. ereal (l i)"], auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
673  | 
show "(LBINT x=a..b. f x) = B - A"  | 
| 61808 | 674  | 
by (rule interval_integral_Icc_approx_nonneg [OF \<open>a < b\<close> approx 1 f_nonneg 2 3])  | 
| 63329 | 675  | 
show "set_integrable lborel (einterval a b) f"  | 
| 61808 | 676  | 
by (rule interval_integral_Icc_approx_nonneg [OF \<open>a < b\<close> approx 1 f_nonneg 2 3])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
677  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
678  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
679  | 
lemma interval_integral_FTC_integrable:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
680  | 
fixes f F :: "real \<Rightarrow> 'a::euclidean_space" and a b :: ereal  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
681  | 
assumes "a < b"  | 
| 63329 | 682  | 
assumes F: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> (F has_vector_derivative f x) (at x)"  | 
683  | 
assumes f: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f x"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
684  | 
assumes f_integrable: "set_integrable lborel (einterval a b) f"  | 
| 61973 | 685  | 
assumes A: "((F \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"  | 
686  | 
assumes B: "((F \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
687  | 
shows "(LBINT x=a..b. f x) = B - A"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
688  | 
proof -  | 
| 61808 | 689  | 
from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx = this  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
690  | 
have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
691  | 
by (rule order_less_le_trans, rule approx, force)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
692  | 
have [simp]: "\<And>x i. x \<le> u i \<Longrightarrow> ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
693  | 
by (rule order_le_less_trans, subst ereal_less_eq(3), assumption, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
694  | 
have FTCi: "\<And>i. (LBINT x=l i..u i. f x) = F (u i) - F (l i)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
695  | 
using assms approx  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
696  | 
by (auto simp add: less_imp_le min_def max_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
697  | 
intro!: f continuous_at_imp_continuous_on interval_integral_FTC_finite  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
698  | 
intro: has_vector_derivative_at_within)  | 
| 61969 | 699  | 
have "(\<lambda>i. LBINT x=l i..u i. f x) \<longlonglongrightarrow> B - A"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
700  | 
apply (subst FTCi)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
701  | 
apply (intro tendsto_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
702  | 
using B approx unfolding tendsto_at_iff_sequentially comp_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
703  | 
apply (elim allE[of _ "\<lambda>i. ereal (u i)"], auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
704  | 
using A approx unfolding tendsto_at_iff_sequentially comp_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
705  | 
by (elim allE[of _ "\<lambda>i. ereal (l i)"], auto)  | 
| 61969 | 706  | 
moreover have "(\<lambda>i. LBINT x=l i..u i. f x) \<longlonglongrightarrow> (LBINT x=a..b. f x)"  | 
| 61808 | 707  | 
by (rule interval_integral_Icc_approx_integrable [OF \<open>a < b\<close> approx f_integrable])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
708  | 
ultimately show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
709  | 
by (elim LIMSEQ_unique)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
710  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
711  | 
|
| 63329 | 712  | 
(*  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
713  | 
The second Fundamental Theorem of Calculus and existence of antiderivatives on an  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
714  | 
einterval.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
715  | 
*)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
716  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
717  | 
lemma interval_integral_FTC2:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
718  | 
fixes a b c :: real and f :: "real \<Rightarrow> 'a::euclidean_space"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
719  | 
assumes "a \<le> c" "c \<le> b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
720  | 
  and contf: "continuous_on {a..b} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
721  | 
fixes x :: real  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
722  | 
assumes "a \<le> x" and "x \<le> b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
723  | 
  shows "((\<lambda>u. LBINT y=c..u. f y) has_vector_derivative (f x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
724  | 
proof -  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
725  | 
let ?F = "(\<lambda>u. LBINT y=a..u. f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
726  | 
  have intf: "set_integrable lborel {a..b} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
727  | 
by (rule borel_integrable_atLeastAtMost', rule contf)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
728  | 
  have "((\<lambda>u. integral {a..u} f) has_vector_derivative f x) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
729  | 
apply (intro integral_has_vector_derivative)  | 
| 61808 | 730  | 
using \<open>a \<le> x\<close> \<open>x \<le> b\<close> by (intro continuous_on_subset [OF contf], auto)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
731  | 
  then have "((\<lambda>u. integral {a..u} f) has_vector_derivative (f x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
732  | 
by simp  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
733  | 
  then have "(?F has_vector_derivative (f x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
734  | 
by (rule has_vector_derivative_weaken)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
735  | 
(auto intro!: assms interval_integral_eq_integral[symmetric] set_integrable_subset [OF intf])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
736  | 
  then have "((\<lambda>x. (LBINT y=c..a. f y) + ?F x) has_vector_derivative (f x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
737  | 
by (auto intro!: derivative_eq_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
738  | 
then show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
739  | 
proof (rule has_vector_derivative_weaken)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
740  | 
    fix u assume "u \<in> {a .. b}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
741  | 
then show "(LBINT y=c..a. f y) + (LBINT y=a..u. f y) = (LBINT y=c..u. f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
742  | 
using assms  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
743  | 
apply (intro interval_integral_sum)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
744  | 
apply (auto simp add: interval_lebesgue_integrable_def simp del: real_scaleR_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
745  | 
by (rule set_integrable_subset [OF intf], auto simp add: min_def max_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
746  | 
qed (insert assms, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
747  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
748  | 
|
| 63329 | 749  | 
lemma einterval_antiderivative:  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
750  | 
fixes a b :: ereal and f :: "real \<Rightarrow> 'a::euclidean_space"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
751  | 
assumes "a < b" and contf: "\<And>x :: real. a < x \<Longrightarrow> x < b \<Longrightarrow> isCont f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
752  | 
shows "\<exists>F. \<forall>x :: real. a < x \<longrightarrow> x < b \<longrightarrow> (F has_vector_derivative f x) (at x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
753  | 
proof -  | 
| 63329 | 754  | 
from einterval_nonempty [OF \<open>a < b\<close>] obtain c :: real where [simp]: "a < c" "c < b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
755  | 
by (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
756  | 
let ?F = "(\<lambda>u. LBINT y=c..u. f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
757  | 
show ?thesis  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
758  | 
proof (rule exI, clarsimp)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
759  | 
fix x :: real  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
760  | 
assume [simp]: "a < x" "x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
761  | 
have 1: "a < min c x" by simp  | 
| 63329 | 762  | 
from einterval_nonempty [OF 1] obtain d :: real where [simp]: "a < d" "d < c" "d < x"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
763  | 
by (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
764  | 
have 2: "max c x < b" by simp  | 
| 63329 | 765  | 
from einterval_nonempty [OF 2] obtain e :: real where [simp]: "c < e" "x < e" "e < b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
766  | 
by (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
767  | 
show "(?F has_vector_derivative f x) (at x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
768  | 
(* TODO: factor out the next three lines to has_field_derivative_within_open *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
769  | 
unfolding has_vector_derivative_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
770  | 
      apply (subst has_derivative_within_open [of _ "{d<..<e}", symmetric], auto)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
771  | 
apply (subst has_vector_derivative_def [symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
772  | 
      apply (rule has_vector_derivative_within_subset [of _ _ _ "{d..e}"])
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
773  | 
apply (rule interval_integral_FTC2, auto simp add: less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
774  | 
apply (rule continuous_at_imp_continuous_on)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
775  | 
apply (auto intro!: contf)  | 
| 61808 | 776  | 
apply (rule order_less_le_trans, rule \<open>a < d\<close>, auto)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
777  | 
apply (rule order_le_less_trans) prefer 2  | 
| 61808 | 778  | 
by (rule \<open>e < b\<close>, auto)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
779  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
780  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
781  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
782  | 
(*  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
783  | 
The substitution theorem  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
784  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
785  | 
Once again, three versions: first, for finite intervals, and then two versions for  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
786  | 
arbitrary intervals.  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
787  | 
*)  | 
| 63329 | 788  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
789  | 
lemma interval_integral_substitution_finite:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
790  | 
fixes a b :: real and f :: "real \<Rightarrow> 'a::euclidean_space"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
791  | 
assumes "a \<le> b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
792  | 
  and derivg: "\<And>x. a \<le> x \<Longrightarrow> x \<le> b \<Longrightarrow> (g has_real_derivative (g' x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
793  | 
  and contf : "continuous_on (g ` {a..b}) f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
794  | 
  and contg': "continuous_on {a..b} g'"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
795  | 
shows "LBINT x=a..b. g' x *\<^sub>R f (g x) = LBINT y=g a..g b. f y"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
796  | 
proof-  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
797  | 
  have v_derivg: "\<And>x. a \<le> x \<Longrightarrow> x \<le> b \<Longrightarrow> (g has_vector_derivative (g' x)) (at x within {a..b})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
798  | 
using derivg unfolding has_field_derivative_iff_has_vector_derivative .  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
799  | 
  then have contg [simp]: "continuous_on {a..b} g"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
800  | 
by (rule continuous_on_vector_derivative) auto  | 
| 63329 | 801  | 
have 1: "\<And>u. min (g a) (g b) \<le> u \<Longrightarrow> u \<le> max (g a) (g b) \<Longrightarrow>  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
802  | 
      \<exists>x\<in>{a..b}. u = g x"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
803  | 
apply (case_tac "g a \<le> g b")  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
804  | 
apply (auto simp add: min_def max_def less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
805  | 
apply (frule (1) IVT' [of g], auto simp add: assms)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
806  | 
by (frule (1) IVT2' [of g], auto simp add: assms)  | 
| 61808 | 807  | 
  from contg \<open>a \<le> b\<close> have "\<exists>c d. g ` {a..b} = {c..d} \<and> c \<le> d"
 | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
808  | 
by (elim continuous_image_closed_interval)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
809  | 
  then obtain c d where g_im: "g ` {a..b} = {c..d}" and "c \<le> d" by auto
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
810  | 
  have "\<exists>F. \<forall>x\<in>{a..b}. (F has_vector_derivative (f (g x))) (at (g x) within (g ` {a..b}))"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
811  | 
apply (rule exI, auto, subst g_im)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
812  | 
apply (rule interval_integral_FTC2 [of c c d])  | 
| 61808 | 813  | 
using \<open>c \<le> d\<close> apply auto  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
814  | 
apply (rule continuous_on_subset [OF contf])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
815  | 
using g_im by auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
816  | 
then guess F ..  | 
| 63329 | 817  | 
then have derivF: "\<And>x. a \<le> x \<Longrightarrow> x \<le> b \<Longrightarrow>  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
818  | 
    (F has_vector_derivative (f (g x))) (at (g x) within (g ` {a..b}))" by auto
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
819  | 
  have contf2: "continuous_on {min (g a) (g b)..max (g a) (g b)} f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
820  | 
apply (rule continuous_on_subset [OF contf])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
821  | 
apply (auto simp add: image_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
822  | 
by (erule 1)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
823  | 
  have contfg: "continuous_on {a..b} (\<lambda>x. f (g x))"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
824  | 
by (blast intro: continuous_on_compose2 contf contg)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
825  | 
have "LBINT x=a..b. g' x *\<^sub>R f (g x) = F (g b) - F (g a)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
826  | 
apply (subst interval_integral_Icc, simp add: assms)  | 
| 61808 | 827  | 
apply (rule integral_FTC_atLeastAtMost[of a b "\<lambda>x. F (g x)", OF \<open>a \<le> b\<close>])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
828  | 
apply (rule vector_diff_chain_within[OF v_derivg derivF, unfolded comp_def])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
829  | 
apply (auto intro!: continuous_on_scaleR contg' contfg)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
830  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
831  | 
moreover have "LBINT y=(g a)..(g b). f y = F (g b) - F (g a)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
832  | 
apply (rule interval_integral_FTC_finite)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
833  | 
apply (rule contf2)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
834  | 
apply (frule (1) 1, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
835  | 
apply (rule has_vector_derivative_within_subset [OF derivF])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
836  | 
apply (auto simp add: image_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
837  | 
by (rule 1, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
838  | 
ultimately show ?thesis by simp  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
839  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
840  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
841  | 
(* TODO: is it possible to lift the assumption here that g' is nonnegative? *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
842  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
843  | 
lemma interval_integral_substitution_integrable:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
844  | 
fixes f :: "real \<Rightarrow> 'a::euclidean_space" and a b u v :: ereal  | 
| 63329 | 845  | 
assumes "a < b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
846  | 
and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
847  | 
and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
848  | 
and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
849  | 
and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"  | 
| 61973 | 850  | 
and A: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"  | 
851  | 
and B: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
852  | 
and integrable: "set_integrable lborel (einterval a b) (\<lambda>x. g' x *\<^sub>R f (g x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
853  | 
and integrable2: "set_integrable lborel (einterval A B) (\<lambda>x. f x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
854  | 
shows "(LBINT x=A..B. f x) = (LBINT x=a..b. g' x *\<^sub>R f (g x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
855  | 
proof -  | 
| 61808 | 856  | 
from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx [simp] = this  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
857  | 
note less_imp_le [simp]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
858  | 
have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
859  | 
by (rule order_less_le_trans, rule approx, force)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
860  | 
have [simp]: "\<And>x i. x \<le> u i \<Longrightarrow> ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
861  | 
by (rule order_le_less_trans, subst ereal_less_eq(3), assumption, rule approx)  | 
| 63329 | 862  | 
have [simp]: "\<And>i. l i < b"  | 
863  | 
apply (rule order_less_trans) prefer 2  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
864  | 
by (rule approx, auto, rule approx)  | 
| 63329 | 865  | 
have [simp]: "\<And>i. a < u i"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
866  | 
by (rule order_less_trans, rule approx, auto, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
867  | 
have [simp]: "\<And>i j. i \<le> j \<Longrightarrow> l j \<le> l i" by (rule decseqD, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
868  | 
have [simp]: "\<And>i j. i \<le> j \<Longrightarrow> u i \<le> u j" by (rule incseqD, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
869  | 
have g_nondec [simp]: "\<And>x y. a < x \<Longrightarrow> x \<le> y \<Longrightarrow> y < b \<Longrightarrow> g x \<le> g y"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
870  | 
apply (erule DERIV_nonneg_imp_nondecreasing, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
871  | 
apply (rule exI, rule conjI, rule deriv_g)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
872  | 
apply (erule order_less_le_trans, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
873  | 
apply (rule order_le_less_trans, subst ereal_less_eq(3), assumption, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
874  | 
apply (rule g'_nonneg)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
875  | 
apply (rule less_imp_le, erule order_less_le_trans, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
876  | 
by (rule less_imp_le, rule le_less_trans, subst ereal_less_eq(3), assumption, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
877  | 
  have "A \<le> B" and un: "einterval A B = (\<Union>i. {g(l i)<..<g(u i)})"
 | 
| 63329 | 878  | 
proof -  | 
| 61969 | 879  | 
have A2: "(\<lambda>i. g (l i)) \<longlonglongrightarrow> A"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
880  | 
using A apply (auto simp add: einterval_def tendsto_at_iff_sequentially comp_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
881  | 
by (drule_tac x = "\<lambda>i. ereal (l i)" in spec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
882  | 
hence A3: "\<And>i. g (l i) \<ge> A"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
883  | 
by (intro decseq_le, auto simp add: decseq_def)  | 
| 61969 | 884  | 
have B2: "(\<lambda>i. g (u i)) \<longlonglongrightarrow> B"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
885  | 
using B apply (auto simp add: einterval_def tendsto_at_iff_sequentially comp_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
886  | 
by (drule_tac x = "\<lambda>i. ereal (u i)" in spec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
887  | 
hence B3: "\<And>i. g (u i) \<le> B"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
888  | 
by (intro incseq_le, auto simp add: incseq_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
889  | 
show "A \<le> B"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
890  | 
apply (rule order_trans [OF A3 [of 0]])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
891  | 
apply (rule order_trans [OF _ B3 [of 0]])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
892  | 
by auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
893  | 
    { fix x :: real
 | 
| 63329 | 894  | 
assume "A < x" and "x < B"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
895  | 
then have "eventually (\<lambda>i. ereal (g (l i)) < x \<and> x < ereal (g (u i))) sequentially"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
896  | 
apply (intro eventually_conj order_tendstoD)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
897  | 
by (rule A2, assumption, rule B2, assumption)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
898  | 
hence "\<exists>i. g (l i) < x \<and> x < g (u i)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
899  | 
by (simp add: eventually_sequentially, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
900  | 
} note AB = this  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
901  | 
    show "einterval A B = (\<Union>i. {g(l i)<..<g(u i)})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
902  | 
apply (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
903  | 
apply (erule (1) AB)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
904  | 
apply (rule order_le_less_trans, rule A3, simp)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
905  | 
apply (rule order_less_le_trans) prefer 2  | 
| 63329 | 906  | 
by (rule B3, simp)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
907  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
908  | 
(* finally, the main argument *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
909  | 
  {
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
910  | 
fix i  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
911  | 
have "(LBINT x=l i.. u i. g' x *\<^sub>R f (g x)) = (LBINT y=g (l i)..g (u i). f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
912  | 
apply (rule interval_integral_substitution_finite, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
913  | 
apply (rule DERIV_subset)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
914  | 
unfolding has_field_derivative_iff_has_vector_derivative[symmetric]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
915  | 
apply (rule deriv_g)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
916  | 
apply (auto intro!: continuous_at_imp_continuous_on contf contg')  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
917  | 
done  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
918  | 
} note eq1 = this  | 
| 61969 | 919  | 
have "(\<lambda>i. LBINT x=l i..u i. g' x *\<^sub>R f (g x)) \<longlonglongrightarrow> (LBINT x=a..b. g' x *\<^sub>R f (g x))"  | 
| 61808 | 920  | 
apply (rule interval_integral_Icc_approx_integrable [OF \<open>a < b\<close> approx])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
921  | 
by (rule assms)  | 
| 61969 | 922  | 
hence 2: "(\<lambda>i. (LBINT y=g (l i)..g (u i). f y)) \<longlonglongrightarrow> (LBINT x=a..b. g' x *\<^sub>R f (g x))"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
923  | 
by (simp add: eq1)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
924  | 
  have incseq: "incseq (\<lambda>i. {g (l i)<..<g (u i)})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
925  | 
apply (auto simp add: incseq_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
926  | 
apply (rule order_le_less_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
927  | 
prefer 2 apply (assumption, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
928  | 
by (erule order_less_le_trans, rule g_nondec, auto)  | 
| 61969 | 929  | 
have "(\<lambda>i. (LBINT y=g (l i)..g (u i). f y)) \<longlonglongrightarrow> (LBINT x = A..B. f x)"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
930  | 
apply (subst interval_lebesgue_integral_le_eq, auto simp del: real_scaleR_def)  | 
| 61808 | 931  | 
apply (subst interval_lebesgue_integral_le_eq, rule \<open>A \<le> B\<close>)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
932  | 
apply (subst un, rule set_integral_cont_up, auto simp del: real_scaleR_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
933  | 
apply (rule incseq)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
934  | 
apply (subst un [symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
935  | 
by (rule integrable2)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
936  | 
thus ?thesis by (intro LIMSEQ_unique [OF _ 2])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
937  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
938  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
939  | 
(* TODO: the last two proofs are only slightly different. Factor out common part?  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
940  | 
An alternative: make the second one the main one, and then have another lemma  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
941  | 
that says that if f is nonnegative and all the other hypotheses hold, then it is integrable. *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
942  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
943  | 
lemma interval_integral_substitution_nonneg:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
944  | 
fixes f g g':: "real \<Rightarrow> real" and a b u v :: ereal  | 
| 63329 | 945  | 
assumes "a < b"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
946  | 
and deriv_g: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> DERIV g x :> g' x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
947  | 
and contf: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont f (g x)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
948  | 
and contg': "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> isCont g' x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
949  | 
and f_nonneg: "\<And>x. a < ereal x \<Longrightarrow> ereal x < b \<Longrightarrow> 0 \<le> f (g x)" (* TODO: make this AE? *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
950  | 
and g'_nonneg: "\<And>x. a \<le> ereal x \<Longrightarrow> ereal x \<le> b \<Longrightarrow> 0 \<le> g' x"  | 
| 61973 | 951  | 
and A: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> A) (at_right a)"  | 
952  | 
and B: "((ereal \<circ> g \<circ> real_of_ereal) \<longlongrightarrow> B) (at_left b)"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
953  | 
and integrable_fg: "set_integrable lborel (einterval a b) (\<lambda>x. f (g x) * g' x)"  | 
| 63329 | 954  | 
shows  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
955  | 
"set_integrable lborel (einterval A B) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
956  | 
"(LBINT x=A..B. f x) = (LBINT x=a..b. (f (g x) * g' x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
957  | 
proof -  | 
| 61808 | 958  | 
from einterval_Icc_approximation[OF \<open>a < b\<close>] guess u l . note approx [simp] = this  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
959  | 
note less_imp_le [simp]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
960  | 
have [simp]: "\<And>x i. l i \<le> x \<Longrightarrow> a < ereal x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
961  | 
by (rule order_less_le_trans, rule approx, force)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
962  | 
have [simp]: "\<And>x i. x \<le> u i \<Longrightarrow> ereal x < b"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
963  | 
by (rule order_le_less_trans, subst ereal_less_eq(3), assumption, rule approx)  | 
| 63329 | 964  | 
have [simp]: "\<And>i. l i < b"  | 
965  | 
apply (rule order_less_trans) prefer 2  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
966  | 
by (rule approx, auto, rule approx)  | 
| 63329 | 967  | 
have [simp]: "\<And>i. a < u i"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
968  | 
by (rule order_less_trans, rule approx, auto, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
969  | 
have [simp]: "\<And>i j. i \<le> j \<Longrightarrow> l j \<le> l i" by (rule decseqD, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
970  | 
have [simp]: "\<And>i j. i \<le> j \<Longrightarrow> u i \<le> u j" by (rule incseqD, rule approx)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
971  | 
have g_nondec [simp]: "\<And>x y. a < x \<Longrightarrow> x \<le> y \<Longrightarrow> y < b \<Longrightarrow> g x \<le> g y"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
972  | 
apply (erule DERIV_nonneg_imp_nondecreasing, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
973  | 
apply (rule exI, rule conjI, rule deriv_g)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
974  | 
apply (erule order_less_le_trans, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
975  | 
apply (rule order_le_less_trans, subst ereal_less_eq(3), assumption, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
976  | 
apply (rule g'_nonneg)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
977  | 
apply (rule less_imp_le, erule order_less_le_trans, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
978  | 
by (rule less_imp_le, rule le_less_trans, subst ereal_less_eq(3), assumption, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
979  | 
  have "A \<le> B" and un: "einterval A B = (\<Union>i. {g(l i)<..<g(u i)})"
 | 
| 63329 | 980  | 
proof -  | 
| 61969 | 981  | 
have A2: "(\<lambda>i. g (l i)) \<longlonglongrightarrow> A"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
982  | 
using A apply (auto simp add: einterval_def tendsto_at_iff_sequentially comp_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
983  | 
by (drule_tac x = "\<lambda>i. ereal (l i)" in spec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
984  | 
hence A3: "\<And>i. g (l i) \<ge> A"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
985  | 
by (intro decseq_le, auto simp add: decseq_def)  | 
| 61969 | 986  | 
have B2: "(\<lambda>i. g (u i)) \<longlonglongrightarrow> B"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
987  | 
using B apply (auto simp add: einterval_def tendsto_at_iff_sequentially comp_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
988  | 
by (drule_tac x = "\<lambda>i. ereal (u i)" in spec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
989  | 
hence B3: "\<And>i. g (u i) \<le> B"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
990  | 
by (intro incseq_le, auto simp add: incseq_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
991  | 
show "A \<le> B"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
992  | 
apply (rule order_trans [OF A3 [of 0]])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
993  | 
apply (rule order_trans [OF _ B3 [of 0]])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
994  | 
by auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
995  | 
    { fix x :: real
 | 
| 63329 | 996  | 
assume "A < x" and "x < B"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
997  | 
then have "eventually (\<lambda>i. ereal (g (l i)) < x \<and> x < ereal (g (u i))) sequentially"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
998  | 
apply (intro eventually_conj order_tendstoD)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
999  | 
by (rule A2, assumption, rule B2, assumption)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1000  | 
hence "\<exists>i. g (l i) < x \<and> x < g (u i)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1001  | 
by (simp add: eventually_sequentially, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1002  | 
} note AB = this  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1003  | 
    show "einterval A B = (\<Union>i. {g(l i)<..<g(u i)})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1004  | 
apply (auto simp add: einterval_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1005  | 
apply (erule (1) AB)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1006  | 
apply (rule order_le_less_trans, rule A3, simp)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1007  | 
apply (rule order_less_le_trans) prefer 2  | 
| 63329 | 1008  | 
by (rule B3, simp)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1009  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1010  | 
(* finally, the main argument *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1011  | 
  {
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1012  | 
fix i  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1013  | 
have "(LBINT x=l i.. u i. g' x *\<^sub>R f (g x)) = (LBINT y=g (l i)..g (u i). f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1014  | 
apply (rule interval_integral_substitution_finite, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1015  | 
apply (rule DERIV_subset, rule deriv_g, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1016  | 
apply (rule continuous_at_imp_continuous_on, auto, rule contf, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1017  | 
by (rule continuous_at_imp_continuous_on, auto, rule contg', auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1018  | 
then have "(LBINT x=l i.. u i. (f (g x) * g' x)) = (LBINT y=g (l i)..g (u i). f y)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1019  | 
by (simp add: ac_simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1020  | 
} note eq1 = this  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1021  | 
have "(\<lambda>i. LBINT x=l i..u i. f (g x) * g' x)  | 
| 61969 | 1022  | 
\<longlonglongrightarrow> (LBINT x=a..b. f (g x) * g' x)"  | 
| 61808 | 1023  | 
apply (rule interval_integral_Icc_approx_integrable [OF \<open>a < b\<close> approx])  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1024  | 
by (rule assms)  | 
| 61969 | 1025  | 
hence 2: "(\<lambda>i. (LBINT y=g (l i)..g (u i). f y)) \<longlonglongrightarrow> (LBINT x=a..b. f (g x) * g' x)"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1026  | 
by (simp add: eq1)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1027  | 
  have incseq: "incseq (\<lambda>i. {g (l i)<..<g (u i)})"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1028  | 
apply (auto simp add: incseq_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1029  | 
apply (rule order_le_less_trans)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1030  | 
prefer 2 apply assumption  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1031  | 
apply (rule g_nondec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1032  | 
by (erule order_less_le_trans, rule g_nondec, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1033  | 
have img: "\<And>x i. g (l i) \<le> x \<Longrightarrow> x \<le> g (u i) \<Longrightarrow> \<exists>c \<ge> l i. c \<le> u i \<and> x = g c"  | 
| 63329 | 1034  | 
apply (frule (1) IVT' [of g], auto)  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1035  | 
apply (rule continuous_at_imp_continuous_on, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1036  | 
by (rule DERIV_isCont, rule deriv_g, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1037  | 
have nonneg_f2: "\<And>x i. g (l i) \<le> x \<Longrightarrow> x \<le> g (u i) \<Longrightarrow> 0 \<le> f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1038  | 
by (frule (1) img, auto, rule f_nonneg, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1039  | 
have contf_2: "\<And>x i. g (l i) \<le> x \<Longrightarrow> x \<le> g (u i) \<Longrightarrow> isCont f x"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1040  | 
by (frule (1) img, auto, rule contf, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1041  | 
  have integrable: "set_integrable lborel (\<Union>i. {g (l i)<..<g (u i)}) f"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1042  | 
apply (rule pos_integrable_to_top, auto simp del: real_scaleR_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1043  | 
apply (rule incseq)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1044  | 
apply (rule nonneg_f2, erule less_imp_le, erule less_imp_le)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1045  | 
apply (rule set_integrable_subset)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1046  | 
apply (rule borel_integrable_atLeastAtMost')  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1047  | 
apply (rule continuous_at_imp_continuous_on)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1048  | 
apply (clarsimp, erule (1) contf_2, auto)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1049  | 
apply (erule less_imp_le)+  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1050  | 
using 2 unfolding interval_lebesgue_integral_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1051  | 
by auto  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1052  | 
thus "set_integrable lborel (einterval A B) f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1053  | 
by (simp add: un)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1054  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1055  | 
have "(LBINT x=A..B. f x) = (LBINT x=a..b. g' x *\<^sub>R f (g x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1056  | 
proof (rule interval_integral_substitution_integrable)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1057  | 
show "set_integrable lborel (einterval a b) (\<lambda>x. g' x *\<^sub>R f (g x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1058  | 
using integrable_fg by (simp add: ac_simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1059  | 
qed fact+  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1060  | 
then show "(LBINT x=A..B. f x) = (LBINT x=a..b. (f (g x) * g' x))"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1061  | 
by (simp add: ac_simps)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1062  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1063  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1064  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1065  | 
syntax  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1066  | 
"_complex_lebesgue_borel_integral" :: "pttrn \<Rightarrow> real \<Rightarrow> complex"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1067  | 
("(2CLBINT _. _)" [0,60] 60)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1068  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1069  | 
translations  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1070  | 
"CLBINT x. f" == "CONST complex_lebesgue_integral CONST lborel (\<lambda>x. f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1071  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1072  | 
syntax  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1073  | 
"_complex_set_lebesgue_borel_integral" :: "pttrn \<Rightarrow> real set \<Rightarrow> real \<Rightarrow> complex"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1074  | 
("(3CLBINT _:_. _)" [0,60,61] 60)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1075  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1076  | 
translations  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1077  | 
"CLBINT x:A. f" == "CONST complex_set_lebesgue_integral CONST lborel A (\<lambda>x. f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1078  | 
|
| 63329 | 1079  | 
abbreviation complex_interval_lebesgue_integral ::  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1080  | 
"real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> complex) \<Rightarrow> complex" where  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1081  | 
"complex_interval_lebesgue_integral M a b f \<equiv> interval_lebesgue_integral M a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1082  | 
|
| 63329 | 1083  | 
abbreviation complex_interval_lebesgue_integrable ::  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1084  | 
"real measure \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> (real \<Rightarrow> complex) \<Rightarrow> bool" where  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1085  | 
"complex_interval_lebesgue_integrable M a b f \<equiv> interval_lebesgue_integrable M a b f"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1086  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1087  | 
syntax  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1088  | 
"_ascii_complex_interval_lebesgue_borel_integral" :: "pttrn \<Rightarrow> ereal \<Rightarrow> ereal \<Rightarrow> real \<Rightarrow> complex"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1089  | 
  ("(4CLBINT _=_.._. _)" [0,60,60,61] 60)
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1090  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1091  | 
translations  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1092  | 
"CLBINT x=a..b. f" == "CONST complex_interval_lebesgue_integral CONST lborel a b (\<lambda>x. f)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1093  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1094  | 
lemma interval_integral_norm:  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1095  | 
  fixes f :: "real \<Rightarrow> 'a :: {banach, second_countable_topology}"
 | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1096  | 
shows "interval_lebesgue_integrable lborel a b f \<Longrightarrow> a \<le> b \<Longrightarrow>  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1097  | 
norm (LBINT t=a..b. f t) \<le> LBINT t=a..b. norm (f t)"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1098  | 
using integral_norm_bound[of lborel "\<lambda>x. indicator (einterval a b) x *\<^sub>R f x"]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1099  | 
by (auto simp add: interval_lebesgue_integral_def interval_lebesgue_integrable_def)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1100  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1101  | 
lemma interval_integral_norm2:  | 
| 63329 | 1102  | 
"interval_lebesgue_integrable lborel a b f \<Longrightarrow>  | 
| 61945 | 1103  | 
norm (LBINT t=a..b. f t) \<le> \<bar>LBINT t=a..b. norm (f t)\<bar>"  | 
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1104  | 
proof (induct a b rule: linorder_wlog)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1105  | 
case (sym a b) then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1106  | 
by (simp add: interval_integral_endpoints_reverse[of a b] interval_integrable_endpoints_reverse[of a b])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1107  | 
next  | 
| 63329 | 1108  | 
case (le a b)  | 
1109  | 
then have "\<bar>LBINT t=a..b. norm (f t)\<bar> = LBINT t=a..b. norm (f t)"  | 
|
| 
59092
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1110  | 
using integrable_norm[of lborel "\<lambda>x. indicator (einterval a b) x *\<^sub>R f x"]  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1111  | 
by (auto simp add: interval_lebesgue_integral_def interval_lebesgue_integrable_def  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1112  | 
intro!: integral_nonneg_AE abs_of_nonneg)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1113  | 
then show ?case  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1114  | 
using le by (simp add: interval_integral_norm)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1115  | 
qed  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1116  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1117  | 
(* TODO: should we have a library of facts like these? *)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1118  | 
lemma integral_cos: "t \<noteq> 0 \<Longrightarrow> LBINT x=a..b. cos (t * x) = sin (t * b) / t - sin (t * a) / t"  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1119  | 
apply (intro interval_integral_FTC_finite continuous_intros)  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1120  | 
by (auto intro!: derivative_eq_intros simp: has_field_derivative_iff_has_vector_derivative[symmetric])  | 
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1121  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1122  | 
|
| 
 
d469103c0737
add integral substitution theorems from Manuel Eberl, Jeremy Avigad, Luke Serafin, and Sudeep Kanav
 
hoelzl 
parents:  
diff
changeset
 | 
1123  | 
end  |