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

tactic: choose δ hδ using this
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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 δ →
              ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t
⊢ ↑↑μ (f '' s) ≤ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) + 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.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t
⊢ ↑↑μ (f '' s) ≤ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) + 2 * ↑ε * ↑↑μ s

tactic: calc
  μ (f '' s) ≤ μ (⋃ n, f '' (s ∩ t n)) := by
    apply measure_mono
    rw [← image_iUnion, ← inter_iUnion]
    exact image_subset f (subset_inter Subset.rfl t_cover)
  _ ≤ ∑' n, μ (f '' (s ∩ t n)) := (measure_iUnion_le _)
  _ ≤ ∑' n, (ENNReal.ofReal (|(A n).det|) + ε) * μ (s ∩ t n) := by
    apply ENNReal.tsum_le_tsum fun n => ?_
    apply (hδ (A n)).2.2
    exact ht n
  _ = ∑' n, ∫⁻ _ in s ∩ t n, ENNReal.ofReal (|(A n).det|) + ε ∂μ := by
    simp only [lintegral_const, MeasurableSet.univ, Measure.restrict_apply, univ_inter]
  _ ≤ ∑' n, ∫⁻ x in s ∩ t n, ENNReal.ofReal (|(f' x).det|) + 2 * ε ∂μ := by
    apply ENNReal.tsum_le_tsum fun n => ?_
    apply lintegral_mono_ae
    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 _ _)]
    intro x hx
    have I : |(A n).det| ≤ |(f' x).det| + ε :=
      calc
        |(A n).det| = |(f' x).det - ((f' x).det - (A n).det)| := by congr 1; abel
        _ ≤ |(f' x).det| + |(f' x).det - (A n).det| := (abs_sub _ _)
        _ ≤ |(f' x).det| + ε := add_le_add le_rfl ((hδ (A n)).2.1 _ hx)
    calc
      ENNReal.ofReal (|(A n).det|) + ε ≤ ENNReal.ofReal (|(f' x).det| + ε) + ε :=
        add_le_add (ENNReal.ofReal_le_ofReal I) le_rfl
      _ = ENNReal.ofReal (|(f' x).det|) + 2 * ε := by
        simp only [ENNReal.ofReal_add, abs_nonneg, two_mul, add_assoc, NNReal.zero_le_coe,
          ENNReal.ofReal_coe_nnreal]
  _ = ∫⁻ x in ⋃ n, s ∩ t n, ENNReal.ofReal (|(f' x).det|) + 2 * ε ∂μ := by
    have M : ∀ n : ℕ, MeasurableSet (s ∩ t n) := fun n => hs.inter (t_meas n)
    rw [lintegral_iUnion M]
    exact pairwise_disjoint_mono t_disj fun n => inter_subset_right _ _
  _ = ∫⁻ x in s, ENNReal.ofReal (|(f' x).det|) + 2 * ε ∂μ := by
    have : s = ⋃ n, s ∩ t n := by
      rw [← inter_iUnion]
      exact Subset.antisymm (subset_inter Subset.rfl t_cover) (inter_subset_left _ _)
    rw [← this]
  _ = (∫⁻ x in s, ENNReal.ofReal (|(f' x).det|) ∂μ) + 2 * ε * μ s := by
    simp only [lintegral_add_right' _ aemeasurable_const, set_lintegral_const]
state_before: case intro.intro.intro.intro.intro.intro
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ ↑↑μ (f '' s) ≤ (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) + 2 * ↑ε * ↑↑μ s

tactic: intro A
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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 δ →
              ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: let m : ℝ≥0 := Real.toNNReal (|A.det|) + ε
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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 δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: have I : ENNReal.ofReal (|A.det|) < m := by
  simp only [ENNReal.ofReal, lt_add_iff_pos_right, εpos, ENNReal.coe_lt_coe]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (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 δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: rcases ((addHaar_image_le_mul_of_det_lt μ A I).and self_mem_nhdsWithin).exists with ⟨δ, h, δpos⟩
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
⊢ ∃ δ,
    0 < δ ∧
      (∀ (B : E →L[ℝ] E), ‖B - A‖ ≤ ↑δ → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε) ∧
        ∀ (t : Set E) (g : E → E),
          ApproximatesLinearOn g A t δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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: case intro.intro
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ 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 δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: let δ'' : ℝ≥0 := ⟨δ' / 2, (half_pos δ'pos).le⟩
state_before: case intro.intro.intro.intro
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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 δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: refine' ⟨min δ δ'', lt_min δpos (half_pos δ'pos), _, _⟩
state_before: case intro.intro.intro.intro
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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 δ → ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: simp only [ENNReal.ofReal, lt_add_iff_pos_right, εpos, ENNReal.coe_lt_coe]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m

tactic: intro B hB
state_before: case intro.intro.intro.intro.refine'_1
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'') → abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: rw [← Real.dist_eq]
state_before: case intro.intro.intro.intro.refine'_1
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'')
⊢ abs (ContinuousLinearMap.det B - ContinuousLinearMap.det A) ≤ ↑ε

tactic: apply (hδ' B _).le
state_before: case intro.intro.intro.intro.refine'_1
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'')
⊢ dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) ≤ ↑ε

tactic: rw [dist_eq_norm]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'')
⊢ dist B A < δ'

tactic: calc
  ‖B - A‖ ≤ (min δ δ'' : ℝ≥0) := hB
  _ ≤ δ'' := by simp only [le_refl, NNReal.coe_min, min_le_iff, or_true_iff]
  _ < δ' := half_lt_self δ'pos
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'')
⊢ ‖B - A‖ < δ'

tactic: simp only [le_refl, NNReal.coe_min, min_le_iff, or_true_iff]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'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‖ ≤ ↑(min δ δ'')
⊢ ↑(min δ δ'') ≤ ↑δ''

tactic: intro t g htg
state_before: case intro.intro.intro.intro.refine'_2
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
⊢ ∀ (t : Set E) (g : E → E),
    ApproximatesLinearOn g A t (min δ δ'') →
      ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: exact h t g (htg.mono_num (min_le_left _ _))
state_before: case intro.intro.intro.intro.refine'_2
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥0
εpos : 0 < ε
A : E →L[ℝ] E
m : ℝ≥0 := Real.toNNReal (abs (ContinuousLinearMap.det A)) + ε
I : ENNReal.ofReal (abs (ContinuousLinearMap.det A)) < ↑m
δ : ℝ≥0
h : ∀ (s : Set E) (f : E → E), ApproximatesLinearOn f A s δ → ↑↑μ (f '' s) ≤ ↑m * ↑↑μ s
δpos : 0 < δ
δ' : ℝ
δ'pos : 0 < δ'
hδ' : ∀ (B : E →L[ℝ] E), dist B A < δ' → dist (ContinuousLinearMap.det B) (ContinuousLinearMap.det A) < ↑ε
δ'' : ℝ≥0 := { val := δ' / 2, property := (_ : 0 ≤ δ' / 2) }
t : Set E
g : E → E
htg : ApproximatesLinearOn g A t (min δ δ'')
⊢ ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ t

tactic: apply measure_mono
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ ↑↑μ (f '' s) ≤ ↑↑μ (⋃ (n : ℕ), f '' (s ∩ t n))

tactic: rw [← image_iUnion, ← inter_iUnion]
state_before: case h
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ f '' s ⊆ ⋃ (n : ℕ), f '' (s ∩ t n)

tactic: exact image_subset f (subset_inter Subset.rfl t_cover)
state_before: case h
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ f '' s ⊆ f '' (s ∩ ⋃ (i : ℕ), t i)

tactic: apply ENNReal.tsum_le_tsum fun n => ?_
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ (∑' (n : ℕ), ↑↑μ (f '' (s ∩ t n))) ≤
    ∑' (n : ℕ), (ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε) * ↑↑μ (s ∩ t n)

tactic: apply (hδ (A n)).2.2
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
⊢ ↑↑μ (f '' (s ∩ t n)) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε) * ↑↑μ (s ∩ t n)

tactic: exact ht n
state_before: case a
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
⊢ ApproximatesLinearOn f (A n) (s ∩ t n) (δ (A n))

tactic: simp only [lintegral_const, MeasurableSet.univ, Measure.restrict_apply, univ_inter]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ (∑' (n : ℕ), (ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε) * ↑↑μ (s ∩ t n)) =
    ∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ

tactic: apply ENNReal.tsum_le_tsum fun n => ?_
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ (∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ) ≤
    ∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

tactic: apply lintegral_mono_ae
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
⊢ (∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ∂μ) ≤
    ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

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.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
⊢ ∀ᵐ (a : E) ∂Measure.restrict μ (s ∩ t n),
    ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ≤
      ENNReal.ofReal (abs (ContinuousLinearMap.det (f' a))) + 2 * ↑ε

tactic: intro x hx
state_before: case h
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
⊢ ∀ (a : E),
    ‖f' a - A n‖₊ ≤ δ (A n) →
      ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ≤
        ENNReal.ofReal (abs (ContinuousLinearMap.det (f' a))) + 2 * ↑ε

tactic: have I : |(A n).det| ≤ |(f' x).det| + ε :=
  calc
    |(A n).det| = |(f' x).det - ((f' x).det - (A n).det)| := by congr 1; abel
    _ ≤ |(f' x).det| + |(f' x).det - (A n).det| := (abs_sub _ _)
    _ ≤ |(f' x).det| + ε := add_le_add le_rfl ((hδ (A n)).2.1 _ hx)
state_before: case h
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ≤
    ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε

tactic: calc
  ENNReal.ofReal (|(A n).det|) + ε ≤ ENNReal.ofReal (|(f' x).det| + ε) + ε :=
    add_le_add (ENNReal.ofReal_le_ofReal I) le_rfl
  _ = ENNReal.ofReal (|(f' x).det|) + 2 * ε := by
    simp only [ENNReal.ofReal_add, abs_nonneg, two_mul, add_assoc, NNReal.zero_le_coe,
      ENNReal.ofReal_coe_nnreal]
state_before: case h
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
I : abs (ContinuousLinearMap.det (A n)) ≤ abs (ContinuousLinearMap.det (f' x)) + ↑ε
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (A n))) + ↑ε ≤
    ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε

tactic: congr 1
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ abs (ContinuousLinearMap.det (A n)) =
    abs (ContinuousLinearMap.det (f' x) - (ContinuousLinearMap.det (f' x) - ContinuousLinearMap.det (A n)))

tactic: abel
state_before: case e_a
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
⊢ ContinuousLinearMap.det (A n) =
    ContinuousLinearMap.det (f' x) - (ContinuousLinearMap.det (f' x) - ContinuousLinearMap.det (A n))

tactic: simp only [ENNReal.ofReal_add, abs_nonneg, two_mul, add_assoc, NNReal.zero_le_coe,
  ENNReal.ofReal_coe_nnreal]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
n : ℕ
x : E
hx : ‖f' x - A n‖₊ ≤ δ (A n)
I : abs (ContinuousLinearMap.det (A n)) ≤ abs (ContinuousLinearMap.det (f' x)) + ↑ε
⊢ ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x)) + ↑ε) + ↑ε =
    ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε

tactic: have M : ∀ n : ℕ, MeasurableSet (s ∩ t n) := fun n => hs.inter (t_meas n)
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
⊢ (∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ) =
    ∫⁻ (x : E) in ⋃ (n : ℕ), s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

tactic: rw [lintegral_iUnion M]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
M : ∀ (n : ℕ), MeasurableSet (s ∩ t n)
⊢ (∑' (n : ℕ), ∫⁻ (x : E) in s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ) =
    ∫⁻ (x : E) in ⋃ (n : ℕ), s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

tactic: exact pairwise_disjoint_mono t_disj fun n => inter_subset_right _ _
state_before: case hd
E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
M : ∀ (n : ℕ), MeasurableSet (s ∩ t n)
⊢ Pairwise (Disjoint on fun i => s ∩ t i)

tactic: have : s = ⋃ n, s ∩ t n := by
  rw [← inter_iUnion]
  exact Subset.antisymm (subset_inter Subset.rfl t_cover) (inter_subset_left _ _)
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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 ⋃ (n : ℕ), s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ) =
    ∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

tactic: rw [← this]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))
this : s = ⋃ (n : ℕ), s ∩ t n
⊢ (∫⁻ (x : E) in ⋃ (n : ℕ), s ∩ t n, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ) =
    ∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) + 2 * ↑ε ∂μ

tactic: rw [← inter_iUnion]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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: simp only [lintegral_add_right' _ aemeasurable_const, set_lintegral_const]
state_before: E : Type u_1
F : Type ?u.755569
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
ε : ℝ≥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) →
            ↑↑μ (g '' t) ≤ (ENNReal.ofReal (abs (ContinuousLinearMap.det A)) + ↑ε) * ↑↑μ 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))) + 2 * ↑ε ∂μ) =
    (∫⁻ (x : E) in s, ENNReal.ofReal (abs (ContinuousLinearMap.det (f' x))) ∂μ) + 2 * ↑ε * ↑↑μ s