Theorem: BoxIntegral.norm_volume_sub_integral_face_upper_sub_lower_smul_le
File: Mathlib/Analysis/BoxIntegral/DivergenceTheorem.lean

tactic: set e : ℝ → (Fin n → ℝ) → (Fin (n + 1) → ℝ) := i.insertNth (α := fun _ ↦ ℝ)
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
⊢ ‖(∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)) • ↑f' (Pi.single i 1) -
        (integral (Box.face I i) ⊥ (f ∘ Fin.insertNth i (Box.upper I i)) BoxAdditiveMap.volume -
          integral (Box.face I i) ⊥ (f ∘ Fin.insertNth i (Box.lower I i)) BoxAdditiveMap.volume)‖ ≤
    2 * ε * ↑c * ∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)

tactic: have Hl : I.lower i ∈ Icc (I.lower i) (I.upper i) := Set.left_mem_Icc.2 (I.lower_le_upper i)
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
⊢ ‖(∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)) • ↑f' (Pi.single i 1) -
        (integral (Box.face I i) ⊥ (f ∘ e (Box.upper I i)) BoxAdditiveMap.volume -
          integral (Box.face I i) ⊥ (f ∘ e (Box.lower I i)) BoxAdditiveMap.volume)‖ ≤
    2 * ε * ↑c * ∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)

tactic: have Hu : I.upper i ∈ Icc (I.lower i) (I.upper i) := Set.right_mem_Icc.2 (I.lower_le_upper i)
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
⊢ ‖(∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)) • ↑f' (Pi.single i 1) -
        (integral (Box.face I i) ⊥ (f ∘ e (Box.upper I i)) BoxAdditiveMap.volume -
          integral (Box.face I i) ⊥ (f ∘ e (Box.lower I i)) BoxAdditiveMap.volume)‖ ≤
    2 * ε * ↑c * ∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)

tactic: have Hi : ∀ x ∈ Icc (I.lower i) (I.upper i),
    Integrable.{0, u, u} (I.face i) ⊥ (f ∘ e x) BoxAdditiveMap.volume := fun x hx =>
  integrable_of_continuousOn _ (Box.continuousOn_face_Icc hfc hx) volume
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
⊢ ‖(∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)) • ↑f' (Pi.single i 1) -
        (integral (Box.face I i) ⊥ (f ∘ e (Box.upper I i)) BoxAdditiveMap.volume -
          integral (Box.face I i) ⊥ (f ∘ e (Box.lower I i)) BoxAdditiveMap.volume)‖ ≤
    2 * ε * ↑c * ∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)

tactic: set g := fun y => f y - a - f' (y - x) with hg
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
    2 * ε * diam (↑Box.Icc I)

tactic: change ∀ y ∈ (Box.Icc I), ‖g y‖ ≤ ε * ‖y - x‖ at hε
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E := fun y => f y - a - ↑f' (y - x)
hg : g = fun y => f y - a - ↑f' (y - x)
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
    2 * ε * diam (↑Box.Icc I)

tactic: clear_value g
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E := fun y => f y - a - ↑f' (y - x)
hg : g = fun y => f y - a - ↑f' (y - x)
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
    2 * ε * diam (↑Box.Icc I)

tactic: obtain rfl : f = fun y => a + f' (y - x) + g y := by simp [hg]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hg : g = fun y => f y - a - ↑f' (y - x)
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
    2 * ε * diam (↑Box.Icc I)

tactic: convert_to ‖g (e (I.lower i) y) - g (e (I.upper i) y)‖ ≤ _
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) -
        ((fun y => a + ↑f' (y - x) + g y) (e (Box.upper I i) y) -
          (fun y => a + ↑f' (y - x) + g y) (e (Box.lower I i) y))‖ ≤
    2 * ε * diam (↑Box.Icc I)

tactic: simp [hg]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hg : g = fun y => f y - a - ↑f' (y - x)
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
⊢ f = fun y => a + ↑f' (y - x) + g y

tactic: congr 1
state_before: case h.e'_3
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
⊢ ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) -
        ((fun y => a + ↑f' (y - x) + g y) (e (Box.upper I i) y) -
          (fun y => a + ↑f' (y - x) + g y) (e (Box.lower I i) y))‖ =
    ‖g (e (Box.lower I i) y) - g (e (Box.upper I i) y)‖

tactic: have := Fin.insertNth_sub_same (α := fun _ ↦ ℝ) i (I.upper i) (I.lower i) y
state_before: case h.e'_3.e_a
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
⊢ ↑f' (Pi.single i (Box.upper I i - Box.lower I i)) -
      ((fun y => a + ↑f' (y - x) + g y) (e (Box.upper I i) y) -
        (fun y => a + ↑f' (y - x) + g y) (e (Box.lower I i) y)) =
    g (e (Box.lower I i) y) - g (e (Box.upper I i) y)

tactic: simp only [← this, f'.map_sub]
state_before: case h.e'_3.e_a
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this :
  Fin.insertNth i (Box.upper I i) y - Fin.insertNth i (Box.lower I i) y = Pi.single i (Box.upper I i - Box.lower I i)
⊢ ↑f' (Pi.single i (Box.upper I i - Box.lower I i)) -
      ((fun y => a + ↑f' (y - x) + g y) (e (Box.upper I i) y) -
        (fun y => a + ↑f' (y - x) + g y) (e (Box.lower I i) y)) =
    g (e (Box.lower I i) y) - g (e (Box.upper I i) y)

tactic: abel
state_before: case h.e'_3.e_a
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this :
  Fin.insertNth i (Box.upper I i) y - Fin.insertNth i (Box.lower I i) y = Pi.single i (Box.upper I i - Box.lower I i)
⊢ ↑f' (Fin.insertNth i (Box.upper I i) y) - ↑f' (Fin.insertNth i (Box.lower I i) y) -
      (a + (↑f' (Fin.insertNth i (Box.upper I i) y) - ↑f' x) + g (Fin.insertNth i (Box.upper I i) y) -
        (a + (↑f' (Fin.insertNth i (Box.lower I i) y) - ↑f' x) + g (Fin.insertNth i (Box.lower I i) y))) =
    g (Fin.insertNth i (Box.lower I i) y) - g (Fin.insertNth i (Box.upper I i) y)

tactic: have : ∀ z ∈ Icc (I.lower i) (I.upper i), e z y ∈ (Box.Icc I) := fun z hz =>
  I.mapsTo_insertNth_face_Icc hz hy
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
⊢ ‖g (e (Box.lower I i) y) - g (e (Box.upper I i) y)‖ ≤ 2 * ε * diam (↑Box.Icc I)

tactic: replace hε : ∀ y ∈ (Box.Icc I), ‖g y‖ ≤ ε * diam (Box.Icc I)
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y ∈ ↑Box.Icc I
⊢ ‖g (e (Box.lower I i) y) - g (e (Box.upper I i) y)‖ ≤ 2 * ε * diam (↑Box.Icc I)

tactic: rw [two_mul, add_mul]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y ∈ ↑Box.Icc I
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * diam (↑Box.Icc I)
⊢ ‖g (e (Box.lower I i) y) - g (e (Box.upper I i) y)‖ ≤ 2 * ε * diam (↑Box.Icc I)

tactic: exact norm_sub_le_of_le (hε _ (this _ Hl)) (hε _ (this _ Hu))
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y ∈ ↑Box.Icc I
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * diam (↑Box.Icc I)
⊢ ‖g (e (Box.lower I i) y) - g (e (Box.upper I i) y)‖ ≤ ε * diam (↑Box.Icc I) + ε * diam (↑Box.Icc I)

tactic: intro y hy
state_before: case hε
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y ∈ ↑Box.Icc I
⊢ ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * diam (↑Box.Icc I)

tactic: refine' (hε y hy).trans (mul_le_mul_of_nonneg_left _ h0.le)
state_before: case hε
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y✝ : Fin n → ℝ
hy✝ : y✝ ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y✝ ∈ ↑Box.Icc I
y : Fin (n + 1) → ℝ
hy : y ∈ ↑Box.Icc I
⊢ ‖g y‖ ≤ ε * diam (↑Box.Icc I)

tactic: rw [← dist_eq_norm]
state_before: case hε
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y✝ : Fin n → ℝ
hy✝ : y✝ ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y✝ ∈ ↑Box.Icc I
y : Fin (n + 1) → ℝ
hy : y ∈ ↑Box.Icc I
⊢ ‖y - x‖ ≤ diam (↑Box.Icc I)

tactic: exact dist_le_diam_of_mem I.isCompact_Icc.bounded hy hxI
state_before: case hε
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
y✝ : Fin n → ℝ
hy✝ : y✝ ∈ ↑Box.Icc (Box.face I i)
g : (Fin (n + 1) → ℝ) → E
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖g y‖ ≤ ε * ‖y - x‖
hfc : ContinuousOn (fun y => a + ↑f' (y - x) + g y) (↑Box.Icc I)
Hi :
  ∀ (x_1 : ℝ),
    x_1 ∈ Set.Icc (Box.lower I i) (Box.upper I i) →
      Integrable (Box.face I i) ⊥ ((fun y => a + ↑f' (y - x) + g y) ∘ e x_1) BoxAdditiveMap.volume
hg : g = fun y => (fun y => a + ↑f' (y - x) + g y) y - a - ↑f' (y - x)
this : ∀ (z : ℝ), z ∈ Set.Icc (Box.lower I i) (Box.upper I i) → e z y✝ ∈ ↑Box.Icc I
y : Fin (n + 1) → ℝ
hy : y ∈ ↑Box.Icc I
⊢ dist y x ≤ diam (↑Box.Icc I)

tactic: rw [← integral_sub (Hi _ Hu) (Hi _ Hl), ← Box.volume_face_mul i, mul_smul, ← Box.volume_apply,
  ← BoxAdditiveMap.toSMul_apply, ← integral_const, ← BoxAdditiveMap.volume,
  ← integral_sub (integrable_const _) ((Hi _ Hu).sub (Hi _ Hl))]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
⊢ ‖(∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)) • ↑f' (Pi.single i 1) -
        (integral (Box.face I i) ⊥ (f ∘ e (Box.upper I i)) BoxAdditiveMap.volume -
          integral (Box.face I i) ⊥ (f ∘ e (Box.lower I i)) BoxAdditiveMap.volume)‖ =
    ‖integral (Box.face I i) ⊥
        (fun x =>
          ↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) x) - f (e (Box.lower I i) x)))
        BoxAdditiveMap.volume‖

tactic: refine' norm_integral_le_of_le_const (fun y hy => (this y hy).trans _) volume
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
⊢ ‖integral (Box.face I i) ⊥
        (fun x =>
          ↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) x) - f (e (Box.lower I i) x)))
        BoxAdditiveMap.volume‖ ≤
    ENNReal.toReal (↑↑volume ↑(Box.face I i)) * (2 * ε * ↑c * (Box.upper I i - Box.lower I i))

tactic: rw [mul_assoc (2 * ε)]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
⊢ 2 * ε * diam (↑Box.Icc I) ≤ 2 * ε * ↑c * (Box.upper I i - Box.lower I i)

tactic: exact mul_le_mul_of_nonneg_left (I.diam_Icc_le_of_distortion_le i hc)
  (mul_nonneg zero_le_two h0.le)
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
y : Fin n → ℝ
hy : y ∈ ↑Box.Icc (Box.face I i)
⊢ 2 * ε * diam (↑Box.Icc I) ≤ 2 * ε * (↑c * (Box.upper I i - Box.lower I i))

tactic: rw [← Measure.toBoxAdditive_apply, Box.volume_apply, ← I.volume_face_mul i]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
⊢ ENNReal.toReal (↑↑volume ↑(Box.face I i)) * (2 * ε * ↑c * (Box.upper I i - Box.lower I i)) =
    2 * ε * ↑c * ∏ j : Fin (n + 1), (Box.upper I j - Box.lower I j)

tactic: ac_rfl
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
n : ℕ
inst✝ : CompleteSpace E
I : Box (Fin (n + 1))
i : Fin (n + 1)
f : (Fin (n + 1) → ℝ) → E
f' : (Fin (n + 1) → ℝ) →L[ℝ] E
hfc : ContinuousOn f (↑Box.Icc I)
x : Fin (n + 1) → ℝ
hxI : x ∈ ↑Box.Icc I
a : E
ε : ℝ
h0 : 0 < ε
hε : ∀ (y : Fin (n + 1) → ℝ), y ∈ ↑Box.Icc I → ‖f y - a - ↑f' (y - x)‖ ≤ ε * ‖y - x‖
c : ℝ≥0
hc : Box.distortion I ≤ c
e : ℝ → (Fin n → ℝ) → Fin (n + 1) → ℝ := Fin.insertNth i
Hl : Box.lower I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hu : Box.upper I i ∈ Set.Icc (Box.lower I i) (Box.upper I i)
Hi :
  ∀ (x : ℝ), x ∈ Set.Icc (Box.lower I i) (Box.upper I i) → Integrable (Box.face I i) ⊥ (f ∘ e x) BoxAdditiveMap.volume
this :
  ∀ (y : Fin n → ℝ),
    y ∈ ↑Box.Icc (Box.face I i) →
      ‖↑f' (Pi.single i (Box.upper I i - Box.lower I i)) - (f (e (Box.upper I i) y) - f (e (Box.lower I i) y))‖ ≤
        2 * ε * diam (↑Box.Icc I)
⊢ (∏ i_1 : Fin n, (Box.upper (Box.face I i) i_1 - Box.lower (Box.face I i) i_1)) *
      (2 * ε * ↑c * (Box.upper I i - Box.lower I i)) =
    2 * ε * ↑c *
      ((∏ j : Fin n, (Box.upper (Box.face I i) j - Box.lower (Box.face I i) j)) * (Box.upper I i - Box.lower I i))