Theorem: MeasureTheory.lmarginal_univ
File: Mathlib/MeasureTheory/Integral/Marginal.lean

Proof steps:
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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
⊢ ∫⋯∫⁻_Finset.univ, f ∂μ = fun x => ∫⁻ (x : (i : δ) → π i), f x ∂Measure.pi μ
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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
⊢ ∫⋯∫⁻_Finset.univ, f ∂μ = fun x => ∫⁻ (x : (i : δ) → π i), f x ∂Measure.pi μ
tactic: let e : { j // j ∈ Finset.univ } ≃ δ := Equiv.subtypeUnivEquiv mem_univ
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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
⊢ ∫⋯∫⁻_Finset.univ, f ∂μ = fun x => ∫⁻ (x : (i : δ) → π i), f x ∂Measure.pi μ
state_after: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⋯∫⁻_Finset.univ, f ∂μ) x = ∫⁻ (x : (i : δ) → π i), f x ∂Measure.pi μ
tactic: ext1 x
state_before: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⋯∫⁻_Finset.univ, f ∂μ) x = ∫⁻ (x : (i : δ) → π i), f x ∂Measure.pi μ
state_after: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⁻ (y : (i : { x // x ∈ Finset.univ }) → π ↑i),
      f fun i => if hi : i ∈ Finset.univ then y ⟨i, hi⟩ else x i ∂Measure.pi fun i => μ ↑i) =
    ∫⁻ (a : (b : { j // j ∈ Finset.univ }) → π (e b)),
      f ((MeasurableEquiv.piCongrLeft π e) a) ∂Measure.pi fun i' => μ (e i')
tactic: simp_rw [lmarginal, measurePreserving_piCongrLeft μ e |>.lintegral_map_equiv, updateFinset_def]
state_before: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⁻ (y : (i : { x // x ∈ Finset.univ }) → π ↑i),
      f fun i => if hi : i ∈ Finset.univ then y ⟨i, hi⟩ else x i ∂Measure.pi fun i => μ ↑i) =
    ∫⁻ (a : (b : { j // j ∈ Finset.univ }) → π (e b)),
      f ((MeasurableEquiv.piCongrLeft π e) a) ∂Measure.pi fun i' => μ (e i')
state_after: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⁻ (y : (i : { x // x ∈ Finset.univ }) → π ↑i), f fun i => y ⟨i, ⋯⟩ ∂Measure.pi fun i => μ ↑i) =
    ∫⁻ (a : (b : { j // j ∈ Finset.univ }) → π (e b)),
      f ((MeasurableEquiv.piCongrLeft π e) a) ∂Measure.pi fun i' => μ (e i')
tactic: simp
state_before: case h
δ : 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 : δ
inst✝ : Fintype δ
f : ((i : δ) → π i) → ℝ≥0∞
e : { j // j ∈ Finset.univ } ≃ δ := subtypeUnivEquiv ⋯
x : (i : δ) → π i
⊢ (∫⁻ (y : (i : { x // x ∈ Finset.univ }) → π ↑i), f fun i => y ⟨i, ⋯⟩ ∂Measure.pi fun i => μ ↑i) =
    ∫⁻ (a : (b : { j // j ∈ Finset.univ }) → π (e b)),
      f ((MeasurableEquiv.piCongrLeft π e) a) ∂Measure.pi fun i' => μ (e i')
state_after: no goals
tactic: rfl