Theorem: MeasureTheory.lintegral_abs_det_fderiv_le_addHaar_image_aux1
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: choose δ hδ using this
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
this :
  ∀ (A : E →L[ℝ] E),
    ∃ δ,
      0 < δ ∧
        (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
          ∀ (t : Set E) (g : E → E),
            ApproximatesLinearOn g A t δ →
              ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
⊢ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) ≤ ↑↑μ (f '' s) + 2 * ↑ε * ↑↑μ s

tactic: obtain ⟨t, A, t_disj, t_meas, t_cover, ht, -⟩ :
  ∃ (t : ℕ → Set E) (A : ℕ → E →L[ℝ] E),
    Pairwise (Disjoint on t) ∧
      (∀ n : ℕ, MeasurableSet (t n)) ∧
        (s ⊆ ⋃ n : ℕ, t n) ∧
          (∀ n : ℕ, ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))) ∧
            (s.Nonempty → ∀ n, ∃ y ∈ s, A n = f' y) :=
  exists_partition_approximatesLinearOn_of_hasFDerivWithinAt f s f' hf' δ fun A => (hδ A).1.ne'
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
⊢ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) ≤ ↑↑μ (f '' s) + 2 * ↑ε * ↑↑μ s

tactic: have s_eq : s = ⋃ n, s ∩ t n := by
  rw [← inter_iUnion]
  exact Subset.antisymm (subset_inter Subset.rfl t_cover) (inter_subset_left _ _)
state_before: case intro.intro.intro.intro.intro.intro
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
⊢ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) ≤ ↑↑μ (f '' s) + 2 * ↑ε * ↑↑μ s

tactic: intro A
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
⊢ ∀ (A : E →L[ℝ] E),
    ∃ δ,
      0 < δ ∧
        (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
          ∀ (t : Set E) (g : E → E),
            ApproximatesLinearOn g A t δ →
              ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: obtain ⟨δ', δ'pos, hδ'⟩ : ∃ (δ' : ℝ), 0 < δ' ∧ ∀ B, dist B A < δ' → dist B.det A.det < ↑ε :=
  continuousAt_iff.1 ContinuousLinearMap.continuous_det.continuousAt ε εpos
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: let δ'' : ℝ≥0 := ⟨δ' / 2, (half_pos δ'pos).le⟩
state_before: case intro.intro
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: have I'' : ∀ B : E →L[ℝ] E, ‖B - A‖ ≤ ↑δ'' → |B.det - A.det| ≤ ↑ε := by
  intro B hB
  rw [← Real.dist_eq]
  apply (hδ' B _).le
  rw [dist_eq_norm]
  exact hB.trans_lt (half_lt_self δ'pos)
state_before: case intro.intro
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: rcases eq_or_ne A.det 0 with (hA | hA)
state_before: case intro.intro
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: let m : ℝ≥0 := Real.toNNReal (|A.det|) - ε
state_before: case intro.intro.inr
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: rcases ((mul_le_addHaar_image_of_lt_det μ A I).and self_mem_nhdsWithin).exists with ⟨δ, h, δpos⟩
state_before: case intro.intro.inr
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: refine' ⟨min δ δ'', lt_min δpos (half_pos δ'pos), _, _⟩
state_before: case intro.intro.inr.intro.intro
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: intro B hB
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
⊢ ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: rw [← Real.dist_eq]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑δ''
⊢ abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: apply (hδ' B _).le
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑δ''
⊢ dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) ≤ ↑ε

tactic: rw [dist_eq_norm]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑δ''
⊢ dist B A < δ'

tactic: exact hB.trans_lt (half_lt_self δ'pos)
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑δ''
⊢ ‖B - A‖ < δ'

tactic: refine' ⟨δ'', half_pos δ'pos, I'', _⟩
state_before: case intro.intro.inl
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A = 0
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: simp only [hA, forall_const, MulZeroClass.zero_mul, ENNReal.ofReal_zero, imp_true_iff,
  zero_le, abs_zero]
state_before: case intro.intro.inl
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A = 0
⊢ ∀ (t : Set E) (g : E → E),
    ApproximatesLinearOn g A t δ'' →
      ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: simp only [ENNReal.ofReal, ENNReal.coe_sub]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
⊢ ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))

tactic: apply ENNReal.sub_lt_self ENNReal.coe_ne_top
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
⊢ ↑(Real.toNNReal (abs (ContinuousLinearMap.det A))) - ↑ε < ↑(Real.toNNReal (abs (ContinuousLinearMap.det A)))

tactic: simpa only [abs_nonpos_iff, Real.toNNReal_eq_zero, ENNReal.coe_eq_zero, Ne.def] using hA
state_before: case ha₀
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
⊢ ↑(Real.toNNReal (abs (ContinuousLinearMap.det A))) ≠ 0

tactic: simp only [εpos.ne', ENNReal.coe_eq_zero, Ne.def, not_false_iff]
state_before: case hb
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
⊢ ↑ε ≠ 0

tactic: intro B hB
state_before: case intro.intro.inr.intro.intro.refine'_1
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
⊢ ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(min δ δ'') → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: apply I'' _ (hB.trans _)
state_before: case intro.intro.inr.intro.intro.refine'_1
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑(min δ δ'')
⊢ abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: simp only [le_refl, NNReal.coe_min, min_le_iff, or_true_iff]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
B : E →L[ℝ] E
hB : ‖B - A‖ ≤ ↑(min δ δ'')
⊢ ↑(min δ δ'') ≤ ↑δ''

tactic: intro t g htg
state_before: case intro.intro.inr.intro.intro.refine'_2
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
⊢ ∀ (t : Set E) (g : E → E),
    ApproximatesLinearOn g A t (min δ δ'') →
      ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: rcases eq_or_ne (μ t) ∞ with (ht | ht)
state_before: case intro.intro.inr.intro.intro.refine'_2
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: have := h t g (htg.mono_num (min_le_left _ _))
state_before: case intro.intro.inr.intro.intro.refine'_2.inr
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
ht : ↑↑μ t ≠ ⊤
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: rwa [ENNReal.coe_sub, ENNReal.sub_mul, tsub_le_iff_right] at this
state_before: case intro.intro.inr.intro.intro.refine'_2.inr
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
ht : ↑↑μ t ≠ ⊤
this : ↑m * ↑↑μ t ≤ ↑↑μ (g '' t)
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: simp only [ht, imp_true_iff, Ne.def, not_false_iff]
state_before: case intro.intro.inr.intro.intro.refine'_2.inr
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
ht : ↑↑μ t ≠ ⊤
this : (↑(Real.toNNReal (abs (ContinuousLinearMap.det A))) - ↑ε) * ↑↑μ t ≤ ↑↑μ (g '' t)
⊢ 0 < ↑ε → ↑ε < ↑(Real.toNNReal (abs (ContinuousLinearMap.det A))) → ↑↑μ t ≠ ⊤

tactic: simp only [ht, εpos.ne', ENNReal.mul_top, ENNReal.coe_eq_zero, le_top, Ne.def,
  not_false_iff, _root_.add_top]
state_before: case intro.intro.inr.intro.intro.refine'_2.inl
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
I'' : ∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ'' → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε
hA : ContinuousLinearMap.det A ≠ 0
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) - ε
I : ↑m < ENNReal.ofReal (abs (ContinuousLinearMap.det A))
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑m * ↑↑μ s ≤ ↑↑μ (f '' s)
δpos : 0 < δ
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
ht : ↑↑μ t = ⊤
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t

tactic: rw [← inter_iUnion]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
⊢ s = ⋃ (n : ℕ), s ∩ t n

tactic: exact Subset.antisymm (subset_inter Subset.rfl t_cover) (inter_subset_left _ _)
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
⊢ s = s ∩ ⋃ (i : ℕ), t i

tactic: conv_lhs => rw [s_eq]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) =
    ∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ

tactic: rw [lintegral_iUnion]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∫⁻ (x : E) in ⋃ (n : ℕ), s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) =
    ∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ

tactic: exact fun n => hs.inter (t_meas n)
state_before: case hm
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ ∀ (i : ℕ), MeasurableSet (s ∩ t i)

tactic: exact pairwise_disjoint_mono t_disj fun n => inter_subset_right _ _
state_before: case hd
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ Pairwise (Disjoint on fun n => s ∩ t n)

tactic: apply ENNReal.tsum_le_tsum fun n => ?_
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) ≤
    ∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ

tactic: apply lintegral_mono_ae
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
⊢ (∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) ≤
    ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ

tactic: filter_upwards [(ht n).norm_fderiv_sub_le μ (hs.inter (t_meas n)) f' fun x hx =>
    (hf' x hx.1).mono (inter_subset_left _ _)]
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
⊢ ∀ᵐ (a : E) ∂Measure.restrict μ (s ∩ t n),
    ENNReal.ofReal (abs (ContinuousLinearMap.det (f' a))) ≤ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε

tactic: intro x hx
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
⊢ ∀ (a : E),
    ‖f' a - A n‖₊ ≤ δ (A n) →
      ENNReal.ofReal (abs (ContinuousLinearMap.det (f' a))) ≤ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε

tactic: have I : |(f' x).det| ≤ |(A n).det| + ε :=
  calc
    |(f' x).det| = |(A n).det + ((f' x).det - (A n).det)| := by congr 1; abel
    _ ≤ |(A n).det| + |(f' x).det - (A n).det| := (abs_add _ _)
    _ ≤ |(A n).det| + ε := add_le_add le_rfl ((hδ (A n)).2.1 _ hx)
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ≤ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε

tactic: calc
  ENNReal.ofReal (|(f' x).det|) ≤ ENNReal.ofReal (|(A n).det| + ε) :=
    ENNReal.ofReal_le_ofReal I
  _ = ENNReal.ofReal (|(A n).det|) + ε := by
    simp only [ENNReal.ofReal_add, abs_nonneg, NNReal.zero_le_coe, ENNReal.ofReal_coe_nnreal]
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
I : abs (ContinuousLinearMap.det (f' x)) ≤ abs (ContinuousLinearMap.det (A n)) + ↑ε
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ≤ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε

tactic: congr 1
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ abs (ContinuousLinearMap.det (f' x)) =
    abs (ContinuousLinearMap.det (A n) + (ContinuousLinearMap.det (f' x) - ContinuousLinearMap.det (A n)))

tactic: abel
state_before: case e_a
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ ContinuousLinearMap.det (f' x) =
    ContinuousLinearMap.det (A n) + (ContinuousLinearMap.det (f' x) - ContinuousLinearMap.det (A n))

tactic: simp only [ENNReal.ofReal_add, abs_nonneg, NNReal.zero_le_coe, ENNReal.ofReal_coe_nnreal]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
I : abs (ContinuousLinearMap.det (f' x)) ≤ abs (ContinuousLinearMap.det (A n)) + ↑ε
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n)) + ↑ε) = ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε

tactic: simp only [set_lintegral_const, lintegral_add_right _ measurable_const]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ) =
    ∑' (n : ℕ), ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)

tactic: refine' ENNReal.tsum_le_tsum fun n => add_le_add_right _ _
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) ≤
    ∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)

tactic: exact (hδ (A n)).2.2 _ _ (ht n)
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
n : ℕ
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) * ↑↑μ (s ∩ t n) ≤ ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n)

tactic: conv_rhs => rw [s_eq]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) = ↑↑μ (f '' s) + 2 * ↑ε * ↑↑μ s

tactic: rw [image_iUnion, measure_iUnion]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    ↑↑μ (f '' ⋃ (n : ℕ), s ∩ t n) + 2 * ↑ε * ↑↑μ (⋃ (n : ℕ), s ∩ t n)

tactic: rotate_left
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    (∑' (i : ℕ), ↑↑μ (f '' (s ∩ t i))) + 2 * ↑ε * ↑↑μ (⋃ (n : ℕ), s ∩ t n)

case hn
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ Pairwise (Disjoint on fun i => f '' (s ∩ t i))

case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ ∀ (i : ℕ), MeasurableSet (f '' (s ∩ t i))

tactic: rw [measure_iUnion]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    (∑' (i : ℕ), ↑↑μ (f '' (s ∩ t i))) + 2 * ↑ε * ↑↑μ (⋃ (n : ℕ), s ∩ t n)

tactic: rotate_left
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    (∑' (i : ℕ), ↑↑μ (f '' (s ∩ t i))) + 2 * ↑ε * ∑' (i : ℕ), ↑↑μ (s ∩ t i)

case hn
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ Pairwise (Disjoint on fun n => s ∩ t n)

case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ ∀ (i : ℕ), MeasurableSet (s ∩ t i)

tactic: rw [← ENNReal.tsum_mul_left, ← ENNReal.tsum_add]
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    (∑' (i : ℕ), ↑↑μ (f '' (s ∩ t i))) + 2 * ↑ε * ∑' (i : ℕ), ↑↑μ (s ∩ t i)

tactic: congr 1
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) =
    ∑' (a : ℕ), ↑↑μ (f '' (s ∩ t a)) + 2 * ↑ε * ↑↑μ (s ∩ t a)

tactic: ext1 i
state_before: case e_f
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ (fun n => ↑↑μ (f '' (s ∩ t n)) + ↑ε * ↑↑μ (s ∩ t n) + ↑ε * ↑↑μ (s ∩ t n)) = fun a =>
    ↑↑μ (f '' (s ∩ t a)) + 2 * ↑ε * ↑↑μ (s ∩ t a)

tactic: rw [mul_assoc, two_mul, add_assoc]
state_before: case e_f.h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
i : ℕ
⊢ ↑↑μ (f '' (s ∩ t i)) + ↑ε * ↑↑μ (s ∩ t i) + ↑ε * ↑↑μ (s ∩ t i) = ↑↑μ (f '' (s ∩ t i)) + 2 * ↑ε * ↑↑μ (s ∩ t i)

tactic: intro i j hij
state_before: case hn
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ Pairwise (Disjoint on fun i => f '' (s ∩ t i))

tactic: apply Disjoint.image _ hf (inter_subset_left _ _) (inter_subset_left _ _)
state_before: case hn
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
i j : ℕ
hij : i ≠ j
⊢ (Disjoint on fun i => f '' (s ∩ t i)) i j

tactic: exact Disjoint.mono (inter_subset_right _ _) (inter_subset_right _ _) (t_disj hij)
state_before: E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
i j : ℕ
hij : i ≠ j
⊢ Disjoint (s ∩ t i) (s ∩ t j)

tactic: intro i
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ ∀ (i : ℕ), MeasurableSet (f '' (s ∩ t i))

tactic: exact
  measurable_image_of_fderivWithin (hs.inter (t_meas i))
    (fun x hx => (hf' x hx.1).mono (inter_subset_left _ _))
    (hf.mono (inter_subset_left _ _))
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
i : ℕ
⊢ MeasurableSet (f '' (s ∩ t i))

tactic: exact pairwise_disjoint_mono t_disj fun i => inter_subset_right _ _
state_before: case hn
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ Pairwise (Disjoint on fun n => s ∩ t n)

tactic: exact fun i => hs.inter (t_meas i)
state_before: case h
E : Type u_1
F : Type ?u.798589
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s : Set E
f : E → E
f' : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : IsAddHaarMeasure μ
hs : MeasurableSet s
hf' : ∀ (x : E), x ∈ s → HasFDerivWithinAt f (f' x) s x
hf : InjOn f s
ε : ℝ≥0
εpos : 0 < ε
δ : (E →L[ℝ] E) → ℝ≥0
hδ :
  ∀ (A : E →L[ℝ] E),
    0 < δ A ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑(δ A) → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t (δ A) →
            ENNReal.ofReal (abs (ContinuousLinearMap.det A)) * ↑↑μ t ≤ ↑↑μ (g '' t) + ↑ε * ↑↑μ t
t : ℕ → Set E
A : ℕ → E →L[ℝ] E
t_disj : Pairwise (Disjoint on t)
t_meas : ∀ (n : ℕ), MeasurableSet (t n)
t_cover : s ⊆ ⋃ (n : ℕ), t n
ht : ∀ (n : ℕ), ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))
s_eq : s = ⋃ (n : ℕ), s ∩ t n
⊢ ∀ (i : ℕ), MeasurableSet (s ∩ t i)