Theorem: BoxIntegral.Integrable.dist_integralSum_sum_integral_le_of_memBaseSet_of_iUnion_eq
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: refine' le_of_forall_pos_le_add fun δ δ0 => _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε

tactic: set δ' : ℝ := δ / (π₀.boxes.card + 1)
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have H0 : 0 < (π₀.boxes.card + 1 : ℝ) := Nat.cast_add_one_pos _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have δ'0 : 0 < δ' := div_pos δ0 H0
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: set C := max π₀.distortion π₀.compl.distortion
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have : ∀ J ∈ π₀, ∃ πi : TaggedPrepartition J,
    πi.IsPartition ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧
      l.MemBaseSet J C (h.convergenceR δ' C) πi := by
  intro J hJ
  have Hle : J ≤ I := π₀.le_of_mem hJ
  have HJi : Integrable J l f vol := h.to_subbox Hle
  set r := fun x => min (h.convergenceR δ' C x) (HJi.convergenceR δ' C x)
  have hJd : J.distortion ≤ C := le_trans (Finset.le_sup hJ) (le_max_left _ _)
  rcases l.exists_memBaseSet_isPartition J hJd r with ⟨πJ, hC, hp⟩
  have hC₁ : l.MemBaseSet J C (HJi.convergenceR δ' C) πJ := by
    refine' hC.mono J le_rfl le_rfl fun x _ => _; exact min_le_right _ _
  have hC₂ : l.MemBaseSet J C (h.convergenceR δ' C) πJ := by
    refine' hC.mono J le_rfl le_rfl fun x _ => _; exact min_le_left _ _
  exact ⟨πJ, hp, HJi.dist_integralSum_integral_le_of_memBaseSet δ'0 hC₁ hp, hC₂⟩
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: choose! πi hπip hπiδ' hπiC using this
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
this :
  ∀ (J : Box ι),
    J ∈ π₀ →
      ∃ πi,
        IsPartition πi ∧
          dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have : l.MemBaseSet I C (h.convergenceR δ' C) (π₀.biUnionTagged πi) :=
  biUnionTagged_memBaseSet hπiC hπip fun _ => le_max_right _ _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have hU' : π.iUnion = (π₀.biUnionTagged πi).iUnion :=
  hU.trans (Prepartition.iUnion_biUnion_partition _ hπip).symm
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: have := h.dist_integralSum_le_of_memBaseSet h0 δ'0 hπ this hU'
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
hU' : TaggedPrepartition.iUnion π = TaggedPrepartition.iUnion (Prepartition.biUnionTagged π₀ πi)
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: rw [integralSum_biUnionTagged] at this
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this✝ : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
hU' : TaggedPrepartition.iUnion π = TaggedPrepartition.iUnion (Prepartition.biUnionTagged π₀ πi)
this : dist (integralSum f vol π) (integralSum f vol (Prepartition.biUnionTagged π₀ πi)) ≤ ε + δ'
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: calc
  dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤
      dist (integralSum f vol π) (∑ J in π₀.boxes, integralSum f vol (πi J)) +
        dist (∑ J in π₀.boxes, integralSum f vol (πi J)) (∑ J in π₀.boxes, integral J l f vol) :=
    dist_triangle _ _ _
  _ ≤ ε + δ' + ∑ _J in π₀.boxes, δ' := (add_le_add this (dist_sum_sum_le_of_le _ hπiδ'))
  _ = ε + δ := by field_simp [H0.ne']; ring
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this✝ : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
hU' : TaggedPrepartition.iUnion π = TaggedPrepartition.iUnion (Prepartition.biUnionTagged π₀ πi)
this : dist (integralSum f vol π) (∑ J in π₀.boxes, integralSum f vol (πi J)) ≤ ε + δ'
⊢ dist (integralSum f vol π) (∑ J in π₀.boxes, integral J l f vol) ≤ ε + δ

tactic: intro J hJ
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
⊢ ∀ (J : Box ι),
    J ∈ π₀ →
      ∃ πi,
        IsPartition πi ∧
          dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: have Hle : J ≤ I := π₀.le_of_mem hJ
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: have HJi : Integrable J l f vol := h.to_subbox Hle
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: set r := fun x => min (h.convergenceR δ' C x) (HJi.convergenceR δ' C x)
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: have hJd : J.distortion ≤ C := le_trans (Finset.le_sup hJ) (le_max_left _ _)
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: rcases l.exists_memBaseSet_isPartition J hJd r with ⟨πJ, hC, hp⟩
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: have hC₁ : l.MemBaseSet J C (HJi.convergenceR δ' C) πJ := by
  refine' hC.mono J le_rfl le_rfl fun x _ => _; exact min_le_right _ _
state_before: case intro.intro
ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: have hC₂ : l.MemBaseSet J C (h.convergenceR δ' C) πJ := by
  refine' hC.mono J le_rfl le_rfl fun x _ => _; exact min_le_left _ _
state_before: case intro.intro
ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
hC₁ : MemBaseSet l J C (convergenceR HJi δ' C) πJ
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: exact ⟨πJ, hp, HJi.dist_integralSum_integral_le_of_memBaseSet δ'0 hC₁ hp, hC₂⟩
state_before: case intro.intro
ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
hC₁ : MemBaseSet l J C (convergenceR HJi δ' C) πJ
hC₂ : MemBaseSet l J C (convergenceR h δ' C) πJ
⊢ ∃ πi,
    IsPartition πi ∧ dist (integralSum f vol πi) (integral J l f vol) ≤ δ' ∧ MemBaseSet l J C (convergenceR h δ' C) πi

tactic: refine' hC.mono J le_rfl le_rfl fun x _ => _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
⊢ MemBaseSet l J C (convergenceR HJi δ' C) πJ

tactic: exact min_le_right _ _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
x : ι → ℝ
x✝ : x ∈ ↑Box.Icc J
⊢ r x ≤ convergenceR HJi δ' C x

tactic: refine' hC.mono J le_rfl le_rfl fun x _ => _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
hC₁ : MemBaseSet l J C (convergenceR HJi δ' C) πJ
⊢ MemBaseSet l J C (convergenceR h δ' C) πJ

tactic: exact min_le_left _ _
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J✝ : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
J : Box ι
hJ : J ∈ π₀
Hle : J ≤ I
HJi : Integrable J l f vol
r : (ι → ℝ) → ↑(Set.Ioi 0) := fun x => min (convergenceR h δ' C x) (convergenceR HJi δ' C x)
hJd : Box.distortion J ≤ C
πJ : TaggedPrepartition J
hC : MemBaseSet l J C r πJ
hp : IsPartition πJ
hC₁ : MemBaseSet l J C (convergenceR HJi δ' C) πJ
x : ι → ℝ
x✝ : x ∈ ↑Box.Icc J
⊢ r x ≤ convergenceR h δ' C x

tactic: field_simp [H0.ne']
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this✝ : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
hU' : TaggedPrepartition.iUnion π = TaggedPrepartition.iUnion (Prepartition.biUnionTagged π₀ πi)
this : dist (integralSum f vol π) (∑ J in π₀.boxes, integralSum f vol (πi J)) ≤ ε + δ'
⊢ ε + δ' + ∑ _J in π₀.boxes, δ' = ε + δ

tactic: ring
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace ℝ E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝¹ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
c c₁ c₂ : ℝ≥0
ε ε₁ ε₂ : ℝ
π₁ π₂ : TaggedPrepartition I
inst✝ : CompleteSpace F
h : Integrable I l f vol
h0 : 0 < ε
hπ : MemBaseSet l I c (convergenceR h ε c) π
π₀ : Prepartition I
hU : TaggedPrepartition.iUnion π = Prepartition.iUnion π₀
δ : ℝ
δ0 : 0 < δ
δ' : ℝ := δ / (↑(card π₀.boxes) + 1)
H0 : 0 < ↑(card π₀.boxes) + 1
δ'0 : 0 < δ'
C : ℝ≥0 := max (Prepartition.distortion π₀) (Prepartition.distortion (Prepartition.compl π₀))
πi : (J : Box ι) → TaggedPrepartition J
hπip : ∀ (J : Box ι), J ∈ π₀ → IsPartition (πi J)
hπiδ' : ∀ (J : Box ι), J ∈ π₀ → dist (integralSum f vol (πi J)) (integral J l f vol) ≤ δ'
hπiC : ∀ (J : Box ι), J ∈ π₀ → MemBaseSet l J C (convergenceR h δ' C) (πi J)
this✝ : MemBaseSet l I C (convergenceR h δ' C) (Prepartition.biUnionTagged π₀ πi)
hU' : TaggedPrepartition.iUnion π = TaggedPrepartition.iUnion (Prepartition.biUnionTagged π₀ πi)
this : dist (integralSum f vol π) (∑ J in π₀.boxes, integralSum f vol (πi J)) ≤ ε + δ'
⊢ ε * (↑(card π₀.boxes) + 1) + δ + ↑(card π₀.boxes) * δ = (ε + δ) * (↑(card π₀.boxes) + 1)