import Mathlib
import FoML


open MeasureTheory ProbabilityTheory Real

open scoped ENNReal

theorem extracted_formal_statement_483.{u_1, w, u} {Ω : Type u} [inst : MeasurableSpace Ω] {Z : Type w} {n : ℕ}
  {ι : Type u_1} {f : ι → Z → ℝ} {μ : Measure Ω} [inst_1 : IsProbabilityMeasure μ] {X : Ω → Z} [inst_2 : Nonempty ι]
  [inst_3 : Countable ι] (hf : ∀ (i : ι), Measurable (f i ∘ X)) {b : ℝ} (hb : b ≥ 0)
  (hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b) (hn : ¬n = 0)
  (hr : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), y ≤ C)
  (hr' : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), C ≤ y)
  (hq : ∀ (ω : Fin n → Ω) (k : Fin n), BddAbove (Set.range fun i => f i (X (ω k))))
  (hq' : ∀ (ω : Fin n → Ω) (k : Fin n), BddBelow (Set.range fun i => f i (X (ω k)))) :
  let mp := measurePreserving_arrowProdEquivProdArrow Ω Ω (Fin n) (fun x => μ) fun x => μ;
  (∫ (x : Fin n → Ω × Ω),
        (fun ω =>
            ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).1)|) +
              (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).2)|)
          x ∂Measure.pi fun x => μ.prod μ) =
      ∫ (x : (Fin n → Ω) × (Fin n → Ω)),
        (fun ω =>
            ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.1 k))|) +
              (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.2 k))|)
          x ∂(Measure.pi fun x => μ).prod (Measure.pi fun x => μ) →
    AEStronglyMeasurable
      (fun ω =>
        ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.1 k))|) +
          (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.2 k))|)
      (Measure.map (⇑(MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n))) (Measure.pi fun i => μ.prod μ)) := sorry

Tactic state before:
Ω : Type u
inst✝³ : MeasurableSpace Ω
Z : Type w
n : ℕ
ι : Type u_1
f : ι → Z → ℝ
μ : Measure Ω
inst✝² : IsProbabilityMeasure μ
X : Ω → Z
inst✝¹ : Nonempty ι
inst✝ : Countable ι
hf : ∀ (i : ι), Measurable (f i ∘ X)
b : ℝ
hb : b ≥ 0
hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b
hn : ¬n = 0
hr : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), y ≤ C
hr' : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), C ≤ y
hq : ∀ (ω : Fin n → Ω) (k : Fin n), BddAbove (Set.range fun i => f i (X (ω k)))
hq' : ∀ (ω : Fin n → Ω) (k : Fin n), BddBelow (Set.range fun i => f i (X (ω k)))
mp : MeasurePreserving (⇑(MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n))) (Measure.pi fun i => μ.prod μ)
  ((Measure.pi fun i => μ).prod (Measure.pi fun i => μ)) :=
  measurePreserving_arrowProdEquivProdArrow Ω Ω (Fin n) (fun x => μ) fun x => μ
⊢ (∫ (x : Fin n → Ω × Ω),
      (fun ω =>
          ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).1)|) +
            (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).2)|)
        x ∂Measure.pi fun x => μ.prod μ) =
    ∫ (x : (Fin n → Ω) × (Fin n → Ω)),
      (fun ω =>
          ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.1 k))|) +
            (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.2 k))|)
        x ∂(Measure.pi fun x => μ).prod (Measure.pi fun x => μ)

Tactic:
rw [← mp.map_eq, integral_map mp.measurable.aemeasurable]

Tactic state after:
[Ω : Type u
 inst✝³ : MeasurableSpace Ω
 Z : Type w
 n : ℕ
 ι : Type u_1
 f : ι → Z → ℝ
 μ : Measure Ω
 inst✝² : IsProbabilityMeasure μ
 X : Ω → Z
 inst✝¹ : Nonempty ι
 inst✝ : Countable ι
 hf : ∀ (i : ι), Measurable (f i ∘ X)
 b : ℝ
 hb : b ≥ 0
 hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b
 hn : ¬n = 0
 hr : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), y ≤ C
 hr' : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), C ≤ y
 hq : ∀ (ω : Fin n → Ω) (k : Fin n), BddAbove (Set.range fun i => f i (X (ω k)))
 hq' : ∀ (ω : Fin n → Ω) (k : Fin n), BddBelow (Set.range fun i => f i (X (ω k)))
 mp : MeasurePreserving (⇑(MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n))) (Measure.pi fun i => μ.prod μ)
   ((Measure.pi fun i => μ).prod (Measure.pi fun i => μ)) :=
   measurePreserving_arrowProdEquivProdArrow Ω Ω (Fin n) (fun x => μ) fun x => μ
 ⊢ (∫ (x : Fin n → Ω × Ω),
       (fun ω =>
           ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).1)|) +
             (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω k).2)|)
         x ∂Measure.pi fun x => μ.prod μ) =
     ∫ (x : Fin n → Ω × Ω),
       ((↑(Fintype.card (Signs n)))⁻¹ *
           ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (((MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n)) x).1 k))|) +
         (↑(Fintype.card (Signs n)))⁻¹ *
           ∑ σ,
             ⨆ i,
               |∑ k,
                   ↑↑(σ k) *
                     f i
                       (X
                         (((MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n)) x).2
                           k))| ∂Measure.pi fun i => μ.prod μ,
 Ω : Type u
 inst✝³ : MeasurableSpace Ω
 Z : Type w
 n : ℕ
 ι : Type u_1
 f : ι → Z → ℝ
 μ : Measure Ω
 inst✝² : IsProbabilityMeasure μ
 X : Ω → Z
 inst✝¹ : Nonempty ι
 inst✝ : Countable ι
 hf : ∀ (i : ι), Measurable (f i ∘ X)
 b : ℝ
 hb : b ≥ 0
 hf' : ∀ (i : ι) (z : Z), |f i z| ≤ b
 hn : ¬n = 0
 hr : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), y ≤ C
 hr' : ∃ C, ∀ (ω : Fin n → Ω) (k : Fin n), ∀ y ∈ Set.range fun i => f i (X (ω k)), C ≤ y
 hq : ∀ (ω : Fin n → Ω) (k : Fin n), BddAbove (Set.range fun i => f i (X (ω k)))
 hq' : ∀ (ω : Fin n → Ω) (k : Fin n), BddBelow (Set.range fun i => f i (X (ω k)))
 mp : MeasurePreserving (⇑(MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n))) (Measure.pi fun i => μ.prod μ)
   ((Measure.pi fun i => μ).prod (Measure.pi fun i => μ)) :=
   measurePreserving_arrowProdEquivProdArrow Ω Ω (Fin n) (fun x => μ) fun x => μ
 ⊢ AEStronglyMeasurable
     (fun ω =>
       ((↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.1 k))|) +
         (↑(Fintype.card (Signs n)))⁻¹ * ∑ σ, ⨆ i, |∑ k, ↑↑(σ k) * f i (X (ω.2 k))|)
     (Measure.map (⇑(MeasurableEquiv.arrowProdEquivProdArrow Ω Ω (Fin n))) (Measure.pi fun i => μ.prod μ))]