Theorem: Measurable.lmarginal
File: Mathlib/MeasureTheory/Integral/Marginal.lean

tactic: refine Measurable.lintegral_prod_right ?_
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ Measurable (∫⋯∫⁻_s, f ∂μ)
state_after: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ Measurable (uncurry fun x y => f (updateFinset x s y))

tactic: refine hf.comp ?_
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ Measurable (uncurry fun x y => f (updateFinset x s y))
state_after: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ Measurable fun a => updateFinset a.1 s a.2

tactic: rw [measurable_pi_iff]
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ Measurable fun a => updateFinset a.1 s a.2
state_after: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ ∀ (a : δ), Measurable fun x => updateFinset x.1 s x.2 a

tactic: intro i
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
hf : Measurable f
⊢ ∀ (a : δ), Measurable fun x => updateFinset x.1 s x.2 a
state_after: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
⊢ Measurable fun x => updateFinset x.1 s x.2 i

tactic: by_cases hi : i ∈ s
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
⊢ Measurable fun x => updateFinset x.1 s x.2 i
state_after: case pos
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∈ s
⊢ Measurable fun x => updateFinset x.1 s x.2 i

case neg
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∉ s
⊢ Measurable fun x => updateFinset x.1 s x.2 i

tactic: simp [hi, updateFinset]
state_before: case pos
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∈ s
⊢ Measurable fun x => updateFinset x.1 s x.2 i
state_after: case pos
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∈ s
⊢ Measurable fun x => x.2 ⟨i, ⋯⟩

tactic: exact measurable_pi_iff.1 measurable_snd _
state_before: case pos
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∈ s
⊢ Measurable fun x => x.2 ⟨i, ⋯⟩
state_after: no goals

tactic: simp [hi, updateFinset]
state_before: case neg
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∉ s
⊢ Measurable fun x => updateFinset x.1 s x.2 i
state_after: case neg
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∉ s
⊢ Measurable fun x => x.1 i

tactic: exact measurable_pi_iff.1 measurable_fst _
state_before: case neg
δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
hf : Measurable f
i : δ
hi : i ∉ s
⊢ Measurable fun x => x.1 i
state_after: no goals