Theorem: ProbabilityTheory.kernel.compProd_eq_sum_compProd_left
File: Mathlib/Probability/Kernel/Composition.lean

tactic: by_cases h : IsSFiniteKernel η
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η

tactic: swap
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η

case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η
state_after: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η

case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η

tactic: rw [compProd_eq_sum_compProd]
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η
state_after: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ (kernel.sum fun n => kernel.sum fun m => seq κ n ⊗ₖ seq η m) = kernel.sum fun n => seq κ n ⊗ₖ η

tactic: congr with n a s hs
state_before: case pos
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
⊢ (kernel.sum fun n => kernel.sum fun m => seq κ n ⊗ₖ seq η m) = kernel.sum fun n => seq κ n ⊗ₖ η
state_after: case pos.e_κ.h.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
n : ℕ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((kernel.sum fun m => seq κ n ⊗ₖ seq η m) a) s = ((seq κ n ⊗ₖ η) a) s

tactic: simp_rw [kernel.sum_apply' _ _ hs, compProd_apply_eq_compProdFun _ _ _ hs,
  compProdFun_tsum_right _ η a hs]
state_before: case pos.e_κ.h.h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s✝ : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : IsSFiniteKernel η
n : ℕ
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((kernel.sum fun m => seq κ n ⊗ₖ seq η m) a) s = ((seq κ n ⊗ₖ η) a) s
state_after: no goals

tactic: simp_rw [compProd_of_not_isSFiniteKernel_right _ _ h]
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ κ ⊗ₖ η = kernel.sum fun n => seq κ n ⊗ₖ η
state_after: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ 0 = kernel.sum fun n => 0

tactic: simp
state_before: case neg
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
h : ¬IsSFiniteKernel η
⊢ 0 = kernel.sum fun n => 0
state_after: no goals