-- File: FoML/FoML/Rademacher.lean
Theorem statement:
theorem extracted_formal_statement_507.{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)))) (x : Fin n → Ω) (x_1 : Signs n)
  (x_2 : ι) (this : |(↑n)⁻¹| = (↑n)⁻¹)
  (h_original_goal : |∑ x_3, ↑↑(x_1 x_3) * f x_2 (X (x x_3))| = ↑n * (|(↑n)⁻¹| * |∑ k, ↑↑(x_1 k) * f x_2 (X (x k))|)) :
  |∑ x_3, ↑↑(x_1 x_3) * f x_2 (X (x x_3))| = ↑n * (↑n)⁻¹ * |∑ k, ↑↑(x_1 k) * f x_2 (X (x k))| := sorry

Tactic state before:
case e_a.e_f.h.e_a.e_f.h.e_s.h
Ω : 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)))
x✝² : Fin n → Ω
x✝¹ : Signs n
x✝ : ι
this : |(↑n)⁻¹| = (↑n)⁻¹
⊢ |∑ x, ↑↑(x✝¹ x) * f x✝ (X (x✝² x))| = ↑n * (|(↑n)⁻¹| * |∑ k, ↑↑(x✝¹ k) * f x✝ (X (x✝² k))|)

Tactic: rw [this, ← mul_assoc]

Tactic state after:
[case e_a.e_f.h.e_a.e_f.h.e_s.h
 Ω : 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)))
 x✝² : Fin n → Ω
 x✝¹ : Signs n
 x✝ : ι
 this : |(↑n)⁻¹| = (↑n)⁻¹
 ⊢ |∑ x, ↑↑(x✝¹ x) * f x✝ (X (x✝² x))| = ↑n * (↑n)⁻¹ * |∑ k, ↑↑(x✝¹ k) * f x✝ (X (x✝² k))|]

Premises used:
mul_assoc : ∀ {G : Type u_1} [inst : Semigroup G] (a b c : G), a * b * c = a * (b * c)