import Mathlib
import FoML


open MeasureTheory ProbabilityTheory

theorem extracted_formal_statement_90.{u_2, u_1} {Ω : Type u_1} [inst : MeasurableSpace Ω] {μ : Measure Ω}
  [inst_1 : IsProbabilityMeasure μ] {𝓧 : Type u_2} {m𝓧 : MeasurableSpace 𝓧} [hnonempty𝓧 : Nonempty 𝓧] {m : ℕ}
  {X' : Fin m → Ω → 𝓧} (hX'' : ∀ (i : Fin m), Measurable (X' i)) (hIndep' : iIndepFun X' μ) {f' : (Fin m → 𝓧) → ℝ}
  {c' : Fin m → ℝ} (hfι : ∀ (i : Fin m) (x : Fin m → 𝓧) (x' : 𝓧), |f' x - f' (Function.update x i x')| ≤ c' i)
  (hf'' : StronglyMeasurable f') {t : ℝ} (ht : t ≥ 0) (ht' : t * ∑ i, c' i ^ 2 ≤ 1) :
  let Y := fun k Xk => ∫ (x : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else X' i ω) x ∂μ;
  let A := fun k Xk =>
    ⨅ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ;
  let B := fun k Xk =>
    ⨆ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ;
  (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
      Y k.succ (Fin.snoc Xk x) =
        ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ) →
    ∀ (x₀ : 𝓧),
      let bdf := |f' fun x => x₀| + ∑ i, c' i;
      (∀ (xi : Fin m → 𝓧), |f' xi| ≤ bdf) →
        (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
            Integrable (fun a => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i a) μ) →
          (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), A k Xk ≤ Y k.succ (Fin.snoc Xk x)) →
            (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧),
                𝓧 →
                  BddAbove
                    (Set.range fun x =>
                      ∫ (a : Ω),
                        (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω)
                          a ∂μ)) →
              (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), B k Xk ≥ Y k.succ (Fin.snoc Xk x)) →
                (∀ (k : Fin m) (Xk : Fin ↑k → 𝓧), B k Xk ≤ A k Xk + c' k) →
                  ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧),
                    let S := {i | ↑i > ↑k};
                    let T := {k};
                    Disjoint T S →
                      IndepFun (fun a i => X' (↑i) a) (fun a i => X' (↑i) a) μ →
                        let elT := ⟨k, Finset.mem_singleton.mpr rfl⟩;
                        let gT := fun ω t => X' (↑t) ω;
                        ∀ (ω a : Ω) (i : Fin m),
                          ¬↑i < ↑k →
                            ↑i = ↑k →
                              ∀ (this : ↑k < ↑k.succ),
                                (if h : ↑k < ↑k.succ then Fin.snoc Xk (X' k ω) ⟨↑k, h⟩ else X' i a) = gT ω elT →
                                  Fin.snoc Xk (X' k ω) ⟨↑k, this⟩ = gT ω elT := sorry

Tactic state before:
Ω : Type u_1
inst✝¹ : MeasurableSpace Ω
μ : Measure Ω
inst✝ : IsProbabilityMeasure μ
𝓧 : Type u_2
m𝓧 : MeasurableSpace 𝓧
hnonempty𝓧 : Nonempty 𝓧
m : ℕ
X' : Fin m → Ω → 𝓧
hX'' : ∀ (i : Fin m), Measurable (X' i)
hIndep' : iIndepFun X' μ
f' : (Fin m → 𝓧) → ℝ
c' : Fin m → ℝ
hfι : ∀ (i : Fin m) (x : Fin m → 𝓧) (x' : 𝓧), |f' x - f' (Function.update x i x')| ≤ c' i
hf'' : StronglyMeasurable f'
ε : ℝ
hε : ε > 0
t : ℝ
ht : t ≥ 0
ht' : t * ∑ i, c' i ^ 2 ≤ 1
Y : (k : Fin m.succ) → (Fin ↑k → 𝓧) → ℝ :=
  fun k Xk => ∫ (x : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else X' i ω) x ∂μ
A : (k : Fin m) → (Fin ↑k → 𝓧) → ℝ :=
  fun k Xk =>
    ⨅ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
B : (k : Fin m) → (Fin ↑k → 𝓧) → ℝ :=
  fun k Xk =>
    ⨆ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
AB_rw :
  ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
    Y k.succ (Fin.snoc Xk x) =
      ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
x₀ : 𝓧
bdf : ℝ := |f' fun x => x₀| + ∑ i, c' i
hfbdd : ∀ (xi : Fin m → 𝓧), |f' xi| ≤ bdf
hintegrableAB :
  ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
    Integrable (fun a => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i a) μ
hAY : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), A k Xk ≤ Y k.succ (Fin.snoc Xk x)
hBddAbove :
  ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧),
    𝓧 →
      BddAbove
        (Set.range fun x =>
          ∫ (a : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) a ∂μ)
hYB : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), B k Xk ≥ Y k.succ (Fin.snoc Xk x)
hAB : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧), B k Xk ≤ A k Xk + c' k
k : Fin m
Xk : Fin ↑k → 𝓧
S : Finset (Fin m) := {i | ↑i > ↑k}
T : Finset (Fin m) := {k}
hST : Disjoint T S
hindep : IndepFun (fun a i => X' (↑i) a) (fun a i => X' (↑i) a) μ
toelS : (i : Fin m) → ¬↑i < ↑k → ¬↑i = ↑k → { x // x ∈ S } := fun i h h' => ⟨i, ⋯⟩
elT : { x // x ∈ T } := ⟨k, ⋯⟩
F : ({ x // x ∈ T } → 𝓧) × ({ x // x ∈ S } → 𝓧) → ℝ :=
  fun x =>
    match x with
    | (t, s) => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if h' : ↑i = ↑k then t elT else s (toelS i h h')
gT : Ω → { x // x ∈ T } → 𝓧 := fun ω t => X' (↑t) ω
gS : Ω → { x // x ∈ S } → 𝓧 := fun ω s => X' (↑s) ω
ω a : Ω
i : Fin m
h : ¬↑i < ↑k
h' : ↑i = ↑k
this : ↑k < ↑k.succ
⊢ (if h : ↑k < ↑k.succ then Fin.snoc Xk (X' k ω) ⟨↑k, h⟩ else X' i a) = gT ω elT

Tactic:
rw [dif_pos this]

Tactic state after:
[Ω : Type u_1
 inst✝¹ : MeasurableSpace Ω
 μ : Measure Ω
 inst✝ : IsProbabilityMeasure μ
 𝓧 : Type u_2
 m𝓧 : MeasurableSpace 𝓧
 hnonempty𝓧 : Nonempty 𝓧
 m : ℕ
 X' : Fin m → Ω → 𝓧
 hX'' : ∀ (i : Fin m), Measurable (X' i)
 hIndep' : iIndepFun X' μ
 f' : (Fin m → 𝓧) → ℝ
 c' : Fin m → ℝ
 hfι : ∀ (i : Fin m) (x : Fin m → 𝓧) (x' : 𝓧), |f' x - f' (Function.update x i x')| ≤ c' i
 hf'' : StronglyMeasurable f'
 ε : ℝ
 hε : ε > 0
 t : ℝ
 ht : t ≥ 0
 ht' : t * ∑ i, c' i ^ 2 ≤ 1
 Y : (k : Fin m.succ) → (Fin ↑k → 𝓧) → ℝ :=
   fun k Xk => ∫ (x : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else X' i ω) x ∂μ
 A : (k : Fin m) → (Fin ↑k → 𝓧) → ℝ :=
   fun k Xk =>
     ⨅ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
 B : (k : Fin m) → (Fin ↑k → 𝓧) → ℝ :=
   fun k Xk =>
     ⨆ x, ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
 AB_rw :
   ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
     Y k.succ (Fin.snoc Xk x) =
       ∫ (x_1 : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) x_1 ∂μ
 x₀ : 𝓧
 bdf : ℝ := |f' fun x => x₀| + ∑ i, c' i
 hfbdd : ∀ (xi : Fin m → 𝓧), |f' xi| ≤ bdf
 hintegrableAB :
   ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧),
     Integrable (fun a => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i a) μ
 hAY : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), A k Xk ≤ Y k.succ (Fin.snoc Xk x)
 hBddAbove :
   ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧),
     𝓧 →
       BddAbove
         (Set.range fun x =>
           ∫ (a : Ω), (fun ω => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if ↑i = ↑k then x else X' i ω) a ∂μ)
 hYB : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧) (x : 𝓧), B k Xk ≥ Y k.succ (Fin.snoc Xk x)
 hAB : ∀ (k : Fin m) (Xk : Fin ↑k → 𝓧), B k Xk ≤ A k Xk + c' k
 k : Fin m
 Xk : Fin ↑k → 𝓧
 S : Finset (Fin m) := {i | ↑i > ↑k}
 T : Finset (Fin m) := {k}
 hST : Disjoint T S
 hindep : IndepFun (fun a i => X' (↑i) a) (fun a i => X' (↑i) a) μ
 toelS : (i : Fin m) → ¬↑i < ↑k → ¬↑i = ↑k → { x // x ∈ S } := fun i h h' => ⟨i, ⋯⟩
 elT : { x // x ∈ T } := ⟨k, ⋯⟩
 F : ({ x // x ∈ T } → 𝓧) × ({ x // x ∈ S } → 𝓧) → ℝ :=
   fun x =>
     match x with
     | (t, s) => f' fun i => if h : ↑i < ↑k then Xk ⟨↑i, h⟩ else if h' : ↑i = ↑k then t elT else s (toelS i h h')
 gT : Ω → { x // x ∈ T } → 𝓧 := fun ω t => X' (↑t) ω
 gS : Ω → { x // x ∈ S } → 𝓧 := fun ω s => X' (↑s) ω
 ω a : Ω
 i : Fin m
 h : ¬↑i < ↑k
 h' : ↑i = ↑k
 this : ↑k < ↑k.succ
 ⊢ Fin.snoc Xk (X' k ω) ⟨↑k, this⟩ = gT ω elT]