Theorem: intervalIntegral.sub_le_integral_of_hasDeriv_right_of_le
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: obtain rfl | a_lt_b := hab.eq_or_lt
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: set s := {t | g b - g t ≤ ∫ u in t..b, φ u} ∩ Icc a b
state_before: case inr
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: have s_closed : IsClosed s := by
  have : ContinuousOn (fun t => (g b - g t, ∫ u in t..b, φ u)) (Icc a b) := by
    rw [← uIcc_of_le hab] at hcont φint ⊢
    exact (continuousOn_const.sub hcont).prod (continuousOn_primitive_interval_left φint)
  simp only [inter_comm]
  exact this.preimage_closed_of_closed isClosed_Icc isClosed_le_prod
state_before: case inr
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: have A : closure (Ioc a b) ⊆ s := by
  apply s_closed.closure_subset_iff.2
  intro t ht
  refine' ⟨_, ⟨ht.1.le, ht.2⟩⟩
  exact
    sub_le_integral_of_hasDeriv_right_of_le_Ico ht.2 (hcont.mono (Icc_subset_Icc ht.1.le le_rfl))
      (fun x hx => hderiv x ⟨ht.1.trans_le hx.1, hx.2⟩)
      (φint.mono_set (Icc_subset_Icc ht.1.le le_rfl)) fun x hx => hφg x ⟨ht.1.trans_le hx.1, hx.2⟩
state_before: case inr
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: rw [closure_Ioc a_lt_b.ne] at A
state_before: case inr
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A✝ : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
A : closure (Ioc a b) ⊆ s
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: exact (A (left_mem_Icc.2 hab)).1
state_before: case inr
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A✝ : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
A : Icc a b ⊆ s
⊢ g b - g a ≤ ∫ (y : ℝ) in a..b, φ y

tactic: simp
state_before: case inl
ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a : ℝ
hab : a ≤ a
hcont : ContinuousOn g (Icc a a)
hderiv : ∀ (x : ℝ), x ∈ Ioo a a → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a a)
hφg : ∀ (x : ℝ), x ∈ Ioo a a → g' x ≤ φ x
⊢ g a - g a ≤ ∫ (y : ℝ) in a..a, φ y

tactic: have : ContinuousOn (fun t => (g b - g t, ∫ u in t..b, φ u)) (Icc a b) := by
  rw [← uIcc_of_le hab] at hcont φint ⊢
  exact (continuousOn_const.sub hcont).prod (continuousOn_primitive_interval_left φint)
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
⊢ IsClosed s

tactic: simp only [inter_comm]
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
this : ContinuousOn (fun t => (g b - g t, ∫ (u : ℝ) in t..b, φ u)) (Icc a b)
⊢ IsClosed s

tactic: exact this.preimage_closed_of_closed isClosed_Icc isClosed_le_prod
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
this : ContinuousOn (fun t => (g b - g t, ∫ (u : ℝ) in t..b, φ u)) (Icc a b)
⊢ IsClosed (Icc a b ∩ {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u})

tactic: rw [← uIcc_of_le hab] at hcont φint ⊢
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
⊢ ContinuousOn (fun t => (g b - g t, ∫ (u : ℝ) in t..b, φ u)) (Icc a b)

tactic: exact (continuousOn_const.sub hcont).prod (continuousOn_primitive_interval_left φint)
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g [[a, b]]
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ [[a, b]]
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
⊢ ContinuousOn (fun t => (g b - g t, ∫ (u : ℝ) in t..b, φ u)) [[a, b]]

tactic: apply s_closed.closure_subset_iff.2
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
⊢ closure (Ioc a b) ⊆ s

tactic: intro t ht
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
⊢ Ioc a b ⊆ s

tactic: refine' ⟨_, ⟨ht.1.le, ht.2⟩⟩
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
t : ℝ
ht : t ∈ Ioc a b
⊢ t ∈ s

tactic: exact
  sub_le_integral_of_hasDeriv_right_of_le_Ico ht.2 (hcont.mono (Icc_subset_Icc ht.1.le le_rfl))
    (fun x hx => hderiv x ⟨ht.1.trans_le hx.1, hx.2⟩)
    (φint.mono_set (Icc_subset_Icc ht.1.le le_rfl)) fun x hx => hφg x ⟨ht.1.trans_le hx.1, hx.2⟩
state_before: ι : Type ?u.1825631
𝕜 : Type ?u.1825634
E : Type ?u.1825637
F : Type ?u.1825640
A : Type ?u.1825643
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f : ℝ → E
g' g φ : ℝ → ℝ
a b : ℝ
hab : a ≤ b
hcont : ContinuousOn g (Icc a b)
hderiv : ∀ (x : ℝ), x ∈ Ioo a b → HasDerivWithinAt g (g' x) (Ioi x) x
φint : IntegrableOn φ (Icc a b)
hφg : ∀ (x : ℝ), x ∈ Ioo a b → g' x ≤ φ x
a_lt_b : a < b
s : Set ℝ := {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u} ∩ Icc a b
s_closed : IsClosed s
t : ℝ
ht : t ∈ Ioc a b
⊢ t ∈ {t | g b - g t ≤ ∫ (u : ℝ) in t..b, φ u}