-- File: FoML/FoML/BoundedDifference.lean
Theorem statement:
theorem extracted_formal_statement_78.{w, v, u} {Ω : Type u} [inst : MeasurableSpace Ω] {Z : Type w} {n : ℕ} {ι : Type v}
  {f : ι → Z → ℝ} {μ : Measure Ω} [inst_1 : Nonempty ι] [inst_2 : IsProbabilityMeasure μ] (hn : 0 < n) (X : Ω → Z)
  (hf : ∀ (i : ι), Measurable (f i ∘ X)) {b : ℝ} (hb : 0 ≤ b) (hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b) (i : Fin n)
  (x : Fin n → Z) (x' : Z) :
  let g := fun i => (↑n)⁻¹ * ∑ k, f i (x k) - ∫ (x : Ω), f i (X x) ∂μ;
  let h := fun i_1 => (↑n)⁻¹ * ∑ k, f i_1 (Function.update x i x' k) - ∫ (x : Ω), f i_1 (X x) ∂μ;
  (∀ (a : ι), |∫ (x : Ω), f a (X x) ∂μ| ≤ b) →
    (∀ (j : ι), |g j - h j| ≤ (↑n)⁻¹ * 2 * b) →
      (⨆ i, |g i|) - ⨆ i_1, |h i_1| ≤ (↑n)⁻¹ * 2 * b →
        (⨆ i_1, |h i_1|) - ⨆ i, |g i| = ⨆ i_1, |h i_1| - ⨆ i, |g i| → 0 ≤ (↑n)⁻¹ * 2 * b → 0 ≤ (↑n)⁻¹ * 2 := sorry

Tactic state before:
case refine_2
Ω : Type u
inst✝² : MeasurableSpace Ω
Z : Type w
n : ℕ
ι : Type v
f : ι → Z → ℝ
μ : Measure Ω
inst✝¹ : Nonempty ι
inst✝ : IsProbabilityMeasure μ
hn : 0 < n
X : Ω → Z
hf : ∀ (i : ι), Measurable (f i ∘ X)
b : ℝ
hb : 0 ≤ b
hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b
i : Fin n
x : Fin n → Z
x' : Z
g : ι → ℝ := fun i => (↑n)⁻¹ * ∑ k, f i (x k) - ∫ (x : Ω), f i (X x) ∂μ
h : ι → ℝ := fun i_1 => (↑n)⁻¹ * ∑ k, f i_1 (Function.update x i x' k) - ∫ (x : Ω), f i_1 (X x) ∂μ
s' : ∀ (a : ι), |∫ (x : Ω), f a (X x) ∂μ| ≤ b
p''' : ∀ (j : ι), |g j - h j| ≤ (↑n)⁻¹ * 2 * b
p : (⨆ i, |g i|) - ⨆ i_1, |h i_1| ≤ (↑n)⁻¹ * 2 * b
p0 : (⨆ i_1, |h i_1|) - ⨆ i, |g i| = ⨆ i_1, |h i_1| - ⨆ i, |g i|
⊢ 0 ≤ (↑n)⁻¹ * 2 * b

Tactic: apply Left.mul_nonneg _ hb

Tactic state after:
[Ω : Type u
 inst✝² : MeasurableSpace Ω
 Z : Type w
 n : ℕ
 ι : Type v
 f : ι → Z → ℝ
 μ : Measure Ω
 inst✝¹ : Nonempty ι
 inst✝ : IsProbabilityMeasure μ
 hn : 0 < n
 X : Ω → Z
 hf : ∀ (i : ι), Measurable (f i ∘ X)
 b : ℝ
 hb : 0 ≤ b
 hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b
 i : Fin n
 x : Fin n → Z
 x' : Z
 g : ι → ℝ := fun i => (↑n)⁻¹ * ∑ k, f i (x k) - ∫ (x : Ω), f i (X x) ∂μ
 h : ι → ℝ := fun i_1 => (↑n)⁻¹ * ∑ k, f i_1 (Function.update x i x' k) - ∫ (x : Ω), f i_1 (X x) ∂μ
 s' : ∀ (a : ι), |∫ (x : Ω), f a (X x) ∂μ| ≤ b
 p''' : ∀ (j : ι), |g j - h j| ≤ (↑n)⁻¹ * 2 * b
 p : (⨆ i, |g i|) - ⨆ i_1, |h i_1| ≤ (↑n)⁻¹ * 2 * b
 p0 : (⨆ i_1, |h i_1|) - ⨆ i, |g i| = ⨆ i_1, |h i_1| - ⨆ i, |g i|
 ⊢ 0 ≤ (↑n)⁻¹ * 2]

Premises used:
Left.mul_nonneg : ∀ {α : Type u_3} {a b : α} [inst : MulZeroClass α] [inst_3 : Preorder α] [inst_4 : PosMulMono α],
  0 ≤ a → 0 ≤ b → 0 ≤ a * b