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

tactic: induction s using Finset.induction generalizing x with
| empty => simp
| @insert i' s hi' ih =>
  rw [lmarginal_insert _ hf hi', lmarginal_insert _ (hf.comp measurable_update_left) hi']
  have hii' : i ≠ i' := mt (by rintro rfl; exact mem_insert_self i s) hi
  simp_rw [update_comm hii', ih (mt Finset.mem_insert_of_mem hi)]
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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
hi : i ∉ s
x : (i : δ) → π i
y : π i
⊢ (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
state_after: no goals

tactic: simp
state_before: case empty
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
hi : i ∉ ∅
x : (i : δ) → π i
⊢ (∫⋯∫⁻_∅, f ∂μ) (update x i y) = (∫⋯∫⁻_∅, f ∘ fun x => update x i y ∂μ) x
state_after: no goals

tactic: rw [lmarginal_insert _ hf hi', lmarginal_insert _ (hf.comp measurable_update_left) hi']
state_before: case insert
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
⊢ (∫⋯∫⁻_insert i' s, f ∂μ) (update x i y) = (∫⋯∫⁻_insert i' s, f ∘ fun x => update x i y ∂μ) x
state_after: case insert
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
⊢ ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∂μ) (update (update x i y) i' xᵢ) ∂μ i' =
    ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) (update x i' xᵢ) ∂μ i'

tactic: have hii' : i ≠ i' := mt (by rintro rfl; exact mem_insert_self i s) hi
state_before: case insert
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
⊢ ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∂μ) (update (update x i y) i' xᵢ) ∂μ i' =
    ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) (update x i' xᵢ) ∂μ i'
state_after: case insert
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
hii' : i ≠ i'
⊢ ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∂μ) (update (update x i y) i' xᵢ) ∂μ i' =
    ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) (update x i' xᵢ) ∂μ i'

tactic: simp_rw [update_comm hii', ih (mt Finset.mem_insert_of_mem hi)]
state_before: case insert
δ : 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
hii' : i ≠ i'
⊢ ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∂μ) (update (update x i y) i' xᵢ) ∂μ i' =
    ∫⁻ (xᵢ : π i'), (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) (update x i' xᵢ) ∂μ i'
state_after: no goals

tactic: rintro 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
i' : δ
s : Finset δ
hi' : i' ∉ s
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
hi : i ∉ insert i' s
x : (i : δ) → π i
⊢ i = i' → i ∈ insert i' s
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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
s : Finset δ
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
x : (i : δ) → π i
hi' : i ∉ s
hi : i ∉ insert i s
⊢ i ∈ insert i s

tactic: exact mem_insert_self 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✝ i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
y : π i
s : Finset δ
ih : i ∉ s → ∀ (x : (i : δ) → π i), (∫⋯∫⁻_s, f ∂μ) (update x i y) = (∫⋯∫⁻_s, f ∘ fun x => update x i y ∂μ) x
x : (i : δ) → π i
hi' : i ∉ s
hi : i ∉ insert i s
⊢ i ∈ insert i s
state_after: no goals