import Mathlib
import FoML


open MeasureTheory ProbabilityTheory Real

open scoped ENNReal

theorem extracted_formal_statement_1.{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| →
          (⨆ i_1, |h i_1|) - ⨆ i, |g i| ≤ (↑n)⁻¹ * 2 * b → 0 ≤ (↑n)⁻¹ * 2 * b := sorry

Tactic state before:
Ω : 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|
⊢ (⨆ i_1, |h i_1|) - ⨆ i, |g i| ≤ (↑n)⁻¹ * 2 * b

Tactic:
rw [p0]
    refine Real.iSup_le ?_ ?_
    intro j
    have p' : |h j| - ⨆ i_1, |g i_1| ≤ |h j| - |g j| :=
  by
  refine tsub_le_tsub_left ?_ |h j|
  suffices (abs ∘ g) j ≤ ⨆ i_1, (abs ∘ g) i_1 from by exact this
  apply le_ciSup
  rw [bddAbove_def]
  use b + b
  intro y
  simp only [Set.mem_range, Function.comp_apply, forall_exists_index, h, g]
  intro z hx
  rw [<- hx]
  have s : |(↑n)⁻¹ * ∑ k : Fin n, f z (x k)| ≤ b := by
    calc
      _ = (↑n)⁻¹ * |∑ k : Fin n, f z (x k)| := by
        rw [abs_mul]
        simp
      _ ≤ (↑n)⁻¹ * ∑ k : Fin n, |f z (x k)| :=
        by
        refine mul_le_mul_of_nonneg ?_ ?_ ?_ ?_
        apply Preorder.le_refl
        exact Finset.abs_sum_le_sum_abs (fun i ↦ f z (x i)) Finset.univ
        simp only [inv_nonneg, Nat.cast_nonneg, h, g]
        refine Fintype.sum_nonneg ?_
        refine Pi.le_def.mpr ?_
        intro i
        simp
      _ ≤ (↑n)⁻¹ * ∑ k : Fin n, b := by
        refine mul_le_mul_of_nonneg ?_ ?_ ?_ ?_
        apply Preorder.le_refl
        exact Finset.sum_le_sum fun i a_1 ↦ hf' z (x i)
        simp only [inv_nonneg, Nat.cast_nonneg, h, g]
        simp only [Finset.sum_const, Finset.card_univ, Fintype.card_fin, nsmul_eq_mul, h, g]
        field_simp
        exact hb
      _ = b := by field_simp
  trans |(↑n)⁻¹ * ∑ k : Fin n, f z (x k)| + |∫ (x : Ω), f z (X x) ∂μ|
  · exact abs_sub ((↑n)⁻¹ * ∑ k : Fin n, f z (x k)) (∫ (x : Ω), f z (X x) ∂μ)
  · apply add_le_add s (s' z)
    have p'' : |h j| - |g j| ≤ |h j - g j| := abs_sub_abs_le_abs_sub (h j) (g j)

Tactic state after:
[case refine_1
 Ω : 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|
 j : ι
 p' : |h j| - ⨆ i_1, |g i_1| ≤ |h j| - |g j|
 p'' : |h j| - |g j| ≤ |h j - g j|
 ⊢ |h j| - ⨆ i, |g i| ≤ (↑n)⁻¹ * 2 * b,
 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]