theorem extracted_formal_statement_15.{u} {Ω : Type u} [inst : MeasurableSpace Ω] {μ : Measure Ω}
  [inst_1 : IsProbabilityMeasure μ] {n : ℕ} (s : Fin (n + 1) → Set Ω) (hs : ∀ (i : Fin (n + 1)), MeasurableSet (s i))
  (ω : Ω × (Fin n → Ω))
  (h_original_goal :
    ω ∈ (fun f x => Fin.snoc f.2 f.1 x) ⁻¹' Set.univ.pi s ↔ ω ∈ s (Fin.last n) ×ˢ Set.univ.pi (s ∘ Fin.castSucc)) :
  (∀ (i : Fin (n + 1)), Fin.snoc ω.2 ω.1 i ∈ s i) ↔ ω.1 ∈ s (Fin.last n) ∧ ∀ (i : Fin n), ω.2 i ∈ s i.castSucc := sorry

State before:
case h
Ω : Type u
inst✝¹ : MeasurableSpace Ω
μ : Measure Ω
inst✝ : IsProbabilityMeasure μ
n : ℕ
s : Fin (n + 1) → Set Ω
hs : ∀ (i : Fin (n + 1)), MeasurableSet (s i)
ω : Ω × (Fin n → Ω)
⊢ ω ∈ (fun f x => Fin.snoc f.2 f.1 x) ⁻¹' Set.univ.pi s ↔ ω ∈ s (Fin.last n) ×ˢ Set.univ.pi (s ∘ Fin.castSucc)

Tactic: simp only [Set.mem_preimage, Set.mem_pi, Set.mem_univ, forall_const, Set.mem_prod, Function.comp_apply]

State after:
[case h
 Ω : Type u
 inst✝¹ : MeasurableSpace Ω
 μ : Measure Ω
 inst✝ : IsProbabilityMeasure μ
 n : ℕ
 s : Fin (n + 1) → Set Ω
 hs : ∀ (i : Fin (n + 1)), MeasurableSet (s i)
 ω : Ω × (Fin n → Ω)
 ⊢ (∀ (i : Fin (n + 1)), Fin.snoc ω.2 ω.1 i ∈ s i) ↔ ω.1 ∈ s (Fin.last n) ∧ ∀ (i : Fin n), ω.2 i ∈ s i.castSucc]

Relevant lemmas:
Set.mem_pi : ∀ {ι : Type u_1} {α : ι → Type u_2} {s : Set ι} {t : (i : ι) → Set (α i)} {f : (i : ι) → α i},
  f ∈ s.pi t ↔ ∀ i ∈ s, f i ∈ t i
Function.comp_apply : ∀ {β : Sort u_1} {δ : Sort u_2} {α : Sort u_3} {f : β → δ} {g : α → β} {x : α},
  (f ∘ g) x = f (g x)
forall_const : ∀ {b : Prop} (α : Sort u_1) [i : Nonempty α], α → b ↔ b
Set.mem_preimage : ∀ {α : Type u} {β : Type v} {f : α → β} {s : Set β} {a : α}, a ∈ f ⁻¹' s ↔ f a ∈ s
Set.mem_prod : ∀ {α : Type u} {β : Type v} {s : Set α} {t : Set β} {p : α × β}, p ∈ s ×ˢ t ↔ p.1 ∈ s ∧ p.2 ∈ t
Set.mem_univ : ∀ {α : Type u} (x : α), x ∈ Set.univ