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

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
⊢ 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: 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 => (κ 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: 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 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: exact (measurable_countablePartitionSet_subtype n ⊤).comp measurable_snd
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: refine Measurable.div ?_ ?_
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) (↑p.2 ×ˢ s) / (ν p.1) ↑p.2
state_after: case refine_1
α : 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)

case refine_2
α : 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

tactic: refine measurable_from_prod_countable (fun t ↦ ?_)
state_before: case refine_1
α : 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)
state_after: case refine_1
α : 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
t : ↑(countablePartition γ n)
⊢ Measurable fun x => (κ (x, t).1) (↑(x, t).2 ×ˢ s)

tactic: exact kernel.measurable_coe _ ((measurableSet_countablePartition _ t.prop).prod hs)
state_before: case refine_1
α : 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
t : ↑(countablePartition γ n)
⊢ Measurable fun x => (κ (x, t).1) (↑(x, t).2 ×ˢ s)
state_after: no goals

tactic: refine measurable_from_prod_countable ?_
state_before: case refine_2
α : 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
state_after: case refine_2
α : 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
⊢ ∀ (y : ↑(countablePartition γ n)), Measurable fun x => (ν (x, y).1) ↑(x, y).2

tactic: rintro ⟨t, ht⟩
state_before: case refine_2
α : 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
⊢ ∀ (y : ↑(countablePartition γ n)), Measurable fun x => (ν (x, y).1) ↑(x, y).2
state_after: case refine_2.mk
α : 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
t : Set γ
ht : t ∈ countablePartition γ n
⊢ Measurable fun x => (ν (x, ⟨t, ht⟩).1) ↑(x, ⟨t, ht⟩).2

tactic: exact kernel.measurable_coe _ (measurableSet_countablePartition _ ht)
state_before: case refine_2.mk
α : 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
t : Set γ
ht : t ∈ countablePartition γ n
⊢ Measurable fun x => (ν (x, ⟨t, ht⟩).1) ↑(x, ⟨t, ht⟩).2
state_after: no goals