Theorem: ProbabilityTheory.Kernel.measurable_densityProcess_countableFiltration_aux
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
⊢ Measurable fun p => (κ p.1) (countablePartitionSet n p.2 ×ˢ s) / (ν p.1) (countablePartitionSet n p.2)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
⊢ Measurable ((fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2) ∘ fun p => (p.1, ⟨countablePartitionSet n p.2, ⋯⟩))
tactic: change Measurable[mα.prod (countableFiltration γ n)]
      ((fun (p : α × countablePartition γ n) ↦ κ p.1 (↑p.2 ×ˢ s) / ν p.1 p.2)
        ∘ (fun (p : α × γ) ↦ (p.1, ⟨countablePartitionSet n p.2, countablePartitionSet_mem n p.2⟩)))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
h1 : Measurable fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
⊢ Measurable ((fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2) ∘ fun p => (p.1, ⟨countablePartitionSet n p.2, ⋯⟩))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
h1 : Measurable fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
⊢ Measurable fun p => ⟨countablePartitionSet n p.2, ⋯⟩
tactic: refine h1.comp (measurable_fst.prod_mk ?_)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
h1 : Measurable fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
⊢ Measurable fun p => ⟨countablePartitionSet n p.2, ⋯⟩
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
h1 : Measurable fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
⊢ Measurable ((fun c => ⟨countablePartitionSet n c, ⋯⟩) ∘ fun p => p.2)
tactic: change @Measurable (α × γ) (countablePartition γ n) (mα.prod (countableFiltration γ n)) ⊤
    ((fun c ↦ ⟨countablePartitionSet n c, countablePartitionSet_mem n c⟩) ∘ (fun p : α × γ ↦ p.2))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝ : CountablyGenerated γ
κ✝ : Kernel α (γ × β)
ν✝ : Kernel α γ
κ : Kernel α (γ × β)
ν : Kernel α γ
n : ℕ
s : Set β
hs : MeasurableSet s
h1 : Measurable fun p => (κ p.1) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
⊢ Measurable ((fun c => ⟨countablePartitionSet n c, ⋯⟩) ∘ fun p => p.2)
state_after: no goals
tactic: exact (measurable_countablePartitionSet_subtype n ⊤).comp measurable_snd