Theorem: MeasureTheory.condexp_indicator_aux
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Indicator.lean

tactic: by_cases hm : m ≤ m0
state_before: α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])
state_after: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

tactic: swap
state_before: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])
state_after: case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

tactic: have hsf_zero : ∀ g : α → E, g =ᵐ[μ.restrict sᶜ] 0 → s.indicator g =ᵐ[μ] g := fun g =>
  indicator_ae_eq_of_restrict_compl_ae_eq_zero (hm _ hs)
state_before: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])
state_after: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
hsf_zero : ∀ (g : α → E), g =ᶠ[ae (μ.restrict sᶜ)] 0 → s.indicator g =ᶠ[ae μ] g
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])

tactic: refine ((hsf_zero (μ[f|m]) (condexp_ae_eq_restrict_zero hs.compl hf)).trans ?_).symm
state_before: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
hsf_zero : ∀ (g : α → E), g =ᶠ[ae (μ.restrict sᶜ)] 0 → s.indicator g =ᶠ[ae μ] g
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])
state_after: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
hsf_zero : ∀ (g : α → E), g =ᶠ[ae (μ.restrict sᶜ)] 0 → s.indicator g =ᶠ[ae μ] g
⊢ μ[f|m] =ᶠ[ae μ] μ[s.indicator f|m]

tactic: exact condexp_congr_ae (hsf_zero f hf).symm
state_before: case pos
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : m ≤ m0
hsf_zero : ∀ (g : α → E), g =ᶠ[ae (μ.restrict sᶜ)] 0 → s.indicator g =ᶠ[ae μ] g
⊢ μ[f|m] =ᶠ[ae μ] μ[s.indicator f|m]
state_after: no goals

tactic: simp_rw [condexp_of_not_le hm, Set.indicator_zero']
state_before: case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ μ[s.indicator f|m] =ᶠ[ae μ] s.indicator (μ[f|m])
state_after: case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ 0 =ᶠ[ae μ] 0

tactic: rfl
state_before: case neg
α : Type u_1
𝕜 : Type u_2
E : Type u_3
m m0 : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
μ : Measure α
f : α → E
s : Set α
hs : MeasurableSet s
hf : f =ᶠ[ae (μ.restrict sᶜ)] 0
hm : ¬m ≤ m0
⊢ 0 =ᶠ[ae μ] 0
state_after: no goals