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

tactic: let α : Type _ := ({i} : Finset δ)
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
⊢ ∫⋯∫⁻_{i}, f ∂μ = fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
⊢ ∫⋯∫⁻_{i}, f ∂μ = fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i

tactic: let e := (MeasurableEquiv.piUnique fun j : α ↦ π j).symm
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
⊢ ∫⋯∫⁻_{i}, f ∂μ = fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
⊢ ∫⋯∫⁻_{i}, f ∂μ = fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i

tactic: ext1 x
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
⊢ ∫⋯∫⁻_{i}, f ∂μ = fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ 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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ (∫⋯∫⁻_{i}, f ∂μ) x = ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i

tactic: calc (∫⋯∫⁻_{i}, f ∂μ) x
    = ∫⁻ (y : π (default : α)), f (updateFinset x {i} (e y)) ∂μ (default : α) := by
      simp_rw [lmarginal, measurePreserving_piUnique (fun j : ({i} : Finset δ) ↦ μ j) |>.symm _
        |>.lintegral_map_equiv]
  _ = ∫⁻ xᵢ, f (Function.update x i xᵢ) ∂μ i := by simp [update_eq_updateFinset]; rfl
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ (∫⋯∫⁻_{i}, f ∂μ) x = ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i
state_after: no goals

tactic: simp_rw [lmarginal, measurePreserving_piUnique (fun j : ({i} : Finset δ) ↦ μ j) |>.symm _
  |>.lintegral_map_equiv]
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ (∫⋯∫⁻_{i}, f ∂μ) x = ∫⁻ (y : π ↑default), f (updateFinset x {i} (e y)) ∂μ ↑default
state_after: no goals

tactic: simp [update_eq_updateFinset]
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ ∫⁻ (y : π ↑default), f (updateFinset x {i} (e y)) ∂μ ↑default = ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ ∫⁻ (y : π ↑default), f (updateFinset x {i} (e y)) ∂μ ↑default =
    ∫⁻ (xᵢ : π i), f (updateFinset x {i} (uniqueElim xᵢ)) ∂μ i

tactic: rfl
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✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
i : δ
α : Type u_1 := { x // x ∈ {i} }
e : π ↑default ≃ᵐ ((i_1 : α) → π ↑i_1) := (MeasurableEquiv.piUnique fun j => π ↑j).symm
x : (i : δ) → π i
⊢ ∫⁻ (y : π ↑default), f (updateFinset x {i} (e y)) ∂μ ↑default =
    ∫⁻ (xᵢ : π i), f (updateFinset x {i} (uniqueElim xᵢ)) ∂μ i
state_after: no goals