Theorem: intervalIntegral.integral_add_adjacent_intervals_cancel
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: have hac := hab.trans hbc
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
⊢ (((∫ (x : ℝ) in a..b, f x ∂μ) + ∫ (x : ℝ) in b..c, f x ∂μ) + ∫ (x : ℝ) in c..a, f x ∂μ) = 0

tactic: simp only [intervalIntegral, sub_add_sub_comm, sub_eq_zero]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ (((∫ (x : ℝ) in a..b, f x ∂μ) + ∫ (x : ℝ) in b..c, f x ∂μ) + ∫ (x : ℝ) in c..a, f x ∂μ) = 0

tactic: iterate 4 rw [← integral_union]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ (((∫ (x : ℝ) in Ioc a b, f x ∂μ) + ∫ (x : ℝ) in Ioc b c, f x ∂μ) + ∫ (x : ℝ) in Ioc c a, f x ∂μ) =
    ((∫ (x : ℝ) in Ioc b a, f x ∂μ) + ∫ (x : ℝ) in Ioc c b, f x ∂μ) + ∫ (x : ℝ) in Ioc a c, f x ∂μ

tactic: all_goals
  simp [*, MeasurableSet.union, measurableSet_Ioc, Ioc_disjoint_Ioc_same,
    Ioc_disjoint_Ioc_same.symm, hab.1, hab.2, hbc.1, hbc.2, hac.1, hac.2]
state_before: case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc b a ∪ Ioc c b) (Ioc a c)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc a c)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b a ∪ Ioc c b)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc a c)

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc b a) (Ioc c b)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc c b)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b a)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc c b)

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc a b ∪ Ioc b c) (Ioc c a)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc c a)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc a b ∪ Ioc b c)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc c a)

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc a b) (Ioc b c)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc b c)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc a b)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b c)

tactic: rw [← integral_union]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ (∫ (x : ℝ) in Ioc a b ∪ Ioc b c ∪ Ioc c a, f x ∂μ) =
    (∫ (x : ℝ) in Ioc b a ∪ Ioc c b, f x ∂μ) + ∫ (x : ℝ) in Ioc a c, f x ∂μ

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc b a) (Ioc c b)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc c b)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b a)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc c b)

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc a b ∪ Ioc b c) (Ioc c a)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc c a)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc a b ∪ Ioc b c)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc c a)

case hst
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Disjoint (Ioc a b) (Ioc b c)

case ht
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ MeasurableSet (Ioc b c)

case hfs
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc a b)

case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b c)

tactic: suffices Ioc a b ∪ Ioc b c ∪ Ioc c a = Ioc b a ∪ Ioc c b ∪ Ioc a c by rw [this]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ (∫ (x : ℝ) in Ioc a b ∪ Ioc b c ∪ Ioc c a, f x ∂μ) = ∫ (x : ℝ) in Ioc b a ∪ Ioc c b ∪ Ioc a c, f x ∂μ

tactic: rw [Ioc_union_Ioc_union_Ioc_cycle, union_right_comm, Ioc_union_Ioc_union_Ioc_cycle,
  min_left_comm, max_left_comm]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ Ioc a b ∪ Ioc b c ∪ Ioc c a = Ioc b a ∪ Ioc c b ∪ Ioc a c

tactic: rw [this]
state_before: ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
this : Ioc a b ∪ Ioc b c ∪ Ioc c a = Ioc b a ∪ Ioc c b ∪ Ioc a c
⊢ (∫ (x : ℝ) in Ioc a b ∪ Ioc b c ∪ Ioc c a, f x ∂μ) = ∫ (x : ℝ) in Ioc b a ∪ Ioc c b ∪ Ioc a c, f x ∂μ

tactic: simp [*, MeasurableSet.union, measurableSet_Ioc, Ioc_disjoint_Ioc_same,
  Ioc_disjoint_Ioc_same.symm, hab.1, hab.2, hbc.1, hbc.2, hac.1, hac.2]
state_before: case hft
ι : Type ?u.15209936
𝕜 : Type ?u.15209939
E : Type u_1
F : Type ?u.15209945
A : Type ?u.15209948
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d : ℝ
f g : ℝ → E
μ : MeasureTheory.Measure ℝ
hab : IntervalIntegrable f μ a b
hbc : IntervalIntegrable f μ b c
hac : IntervalIntegrable f μ a c
⊢ IntegrableOn (fun x => f x) (Ioc b c)