Theorem: BoxIntegral.integrable_iff_cauchy_basis
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: rw [integrable_iff_cauchy, cauchy_map_iff',
  (l.hasBasis_toFilteriUnion_top _).prod_self.tendsto_iff uniformity_basis_dist_le]
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
inst✝ : CompleteSpace F
⊢ Integrable I l f vol ↔
    ∀ (ε : ℝ),
      ε > 0 →
        ∃ r,
          (∀ (c : ℝ≥0), RCond l (r c)) ∧
            ∀ (c₁ c₂ : ℝ≥0) (π₁ π₂ : TaggedPrepartition I),
              MemBaseSet l I c₁ (r c₁) π₁ →
                IsPartition π₁ →
                  MemBaseSet l I c₂ (r c₂) π₂ → IsPartition π₂ → dist (integralSum f vol π₁) (integralSum f vol π₂) ≤ ε

tactic: refine' forall₂_congr fun ε _ => exists_congr fun r => _
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
inst✝ : CompleteSpace F
⊢ (∀ (ib : ℝ),
      0 < ib →
        ∃ ia,
          (∀ (c : ℝ≥0), RCond l (ia c)) ∧
            ∀ (x : TaggedPrepartition I × TaggedPrepartition I),
              x ∈
                  {π | ∃ c, MemBaseSet l I c (ia c) π ∧ IsPartition π} ×ˢ
                    {π | ∃ c, MemBaseSet l I c (ia c) π ∧ IsPartition π} →
                (integralSum f vol x.fst, integralSum f vol x.snd) ∈ {p | dist p.fst p.snd ≤ ib}) ↔
    ∀ (ε : ℝ),
      ε > 0 →
        ∃ r,
          (∀ (c : ℝ≥0), RCond l (r c)) ∧
            ∀ (c₁ c₂ : ℝ≥0) (π₁ π₂ : TaggedPrepartition I),
              MemBaseSet l I c₁ (r c₁) π₁ →
                IsPartition π₁ →
                  MemBaseSet l I c₂ (r c₂) π₂ → IsPartition π₂ → dist (integralSum f vol π₁) (integralSum f vol π₂) ≤ ε

tactic: simp only [exists_prop, Prod.forall, Set.mem_iUnion, exists_imp, prod_mk_mem_set_prod_eq, and_imp,
  mem_inter_iff, mem_setOf_eq]
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
inst✝ : CompleteSpace F
ε : ℝ
x✝ : 0 < ε
r : ℝ≥0 → (ι → ℝ) → ↑(Set.Ioi 0)
⊢ ((∀ (c : ℝ≥0), RCond l (r c)) ∧
      ∀ (x : TaggedPrepartition I × TaggedPrepartition I),
        x ∈ {π | ∃ c, MemBaseSet l I c (r c) π ∧ IsPartition π} ×ˢ {π | ∃ c, MemBaseSet l I c (r c) π ∧ IsPartition π} →
          (integralSum f vol x.fst, integralSum f vol x.snd) ∈ {p | dist p.fst p.snd ≤ ε}) ↔
    (∀ (c : ℝ≥0), RCond l (r c)) ∧
      ∀ (c₁ c₂ : ℝ≥0) (π₁ π₂ : TaggedPrepartition I),
        MemBaseSet l I c₁ (r c₁) π₁ →
          IsPartition π₁ →
            MemBaseSet l I c₂ (r c₂) π₂ → IsPartition π₂ → dist (integralSum f vol π₁) (integralSum f vol π₂) ≤ ε

tactic: exact
  and_congr Iff.rfl
    ⟨fun H c₁ c₂ π₁ π₂ h₁ hU₁ h₂ hU₂ => H π₁ π₂ c₁ h₁ hU₁ c₂ h₂ hU₂,
      fun H π₁ π₂ c₁ h₁ hU₁ c₂ h₂ hU₂ => H c₁ c₂ π₁ π₂ h₁ hU₁ h₂ 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
inst✝ : CompleteSpace F
ε : ℝ
x✝ : 0 < ε
r : ℝ≥0 → (ι → ℝ) → ↑(Set.Ioi 0)
⊢ ((∀ (c : ℝ≥0), RCond l (r c)) ∧
      ∀ (a b : TaggedPrepartition I) (x : ℝ≥0),
        MemBaseSet l I x (r x) a →
          IsPartition a →
            ∀ (x : ℝ≥0),
              MemBaseSet l I x (r x) b → IsPartition b → dist (integralSum f vol a) (integralSum f vol b) ≤ ε) ↔
    (∀ (c : ℝ≥0), RCond l (r c)) ∧
      ∀ (c₁ c₂ : ℝ≥0) (π₁ π₂ : TaggedPrepartition I),
        MemBaseSet l I c₁ (r c₁) π₁ →
          IsPartition π₁ →
            MemBaseSet l I c₂ (r c₂) π₂ → IsPartition π₂ → dist (integralSum f vol π₁) (integralSum f vol π₂) ≤ ε