Theorem: ProbabilityTheory.condexp_zero_or_one_of_measurableSet_limsup
File: Mathlib/Probability/Independence/ZeroOne.lean

Proof steps:
state_before: α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
⊢ ∀ᵐ (ω : Ω) ∂μ, (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
state_after: α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
⊢ ∀ᵐ (ω : Ω) ∂μ, (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
tactic: have h := ae_of_ae_trim hm
    (Kernel.measure_zero_or_one_of_measurableSet_limsup h_le h_indep hf hns hnsp hns_univ ht_tail)
state_before: α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
⊢ ∀ᵐ (ω : Ω) ∂μ, (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
state_after: α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
⊢ ∀ᵐ (ω : Ω) ∂μ, (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
tactic: have ht : MeasurableSet t := limsup_le_iSup.trans (iSup_le h_le) t ht_tail
state_before: α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
⊢ ∀ᵐ (ω : Ω) ∂μ, (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
state_after: case h
α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
ω : Ω
hω_eq : (((condexpKernel μ m) ω) t).toReal = (μ[t.indicator fun ω => 1|m]) ω
hω : ((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = 1
⊢ (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
tactic: filter_upwards [condexpKernel_ae_eq_condexp hm ht, h] with ω hω_eq hω
state_before: case h
α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
ω : Ω
hω_eq : (((condexpKernel μ m) ω) t).toReal = (μ[t.indicator fun ω => 1|m]) ω
hω : ((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = 1
⊢ (μ[t.indicator fun ω => 1|m]) ω = 0 ∨ (μ[t.indicator fun ω => 1|m]) ω = 1
state_after: case h
α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
ω : Ω
hω_eq : (((condexpKernel μ m) ω) t).toReal = (μ[t.indicator fun ω => 1|m]) ω
hω : ((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = 1
⊢ (((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = ⊤) ∨ ((condexpKernel μ m) ω) t = 1
tactic: rw [← hω_eq, ENNReal.toReal_eq_zero_iff, ENNReal.toReal_eq_one_iff]
state_before: case h
α✝ : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α✝
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : Kernel α✝ Ω
μα : Measure α✝
μ : Measure Ω
inst✝⁴ : IsMarkovKernel κ
inst✝³ : IsProbabilityMeasure μ
α : Type u_4
p : Set ι → Prop
f : Filter ι
ns : α → Set ι
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm : m ≤ m0
inst✝ : IsFiniteMeasure μ
h_le : ∀ (n : ι), s n ≤ m0
h_indep : iCondIndep m hm s μ
hf : ∀ (t : Set ι), p t → tᶜ ∈ f
hns : Directed (fun x x_1 => x ≤ x_1) ns
hnsp : ∀ (a : α), p (ns a)
hns_univ : ∀ (n : ι), ∃ a, n ∈ ns a
t : Set Ω
ht_tail : MeasurableSet t
h : ∀ᵐ (x : Ω) ∂μ, ((condexpKernel μ m) x) t = 0 ∨ ((condexpKernel μ m) x) t = 1
ht : MeasurableSet t
ω : Ω
hω_eq : (((condexpKernel μ m) ω) t).toReal = (μ[t.indicator fun ω => 1|m]) ω
hω : ((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = 1
⊢ (((condexpKernel μ m) ω) t = 0 ∨ ((condexpKernel μ m) ω) t = ⊤) ∨ ((condexpKernel μ m) ω) t = 1
state_after: no goals
tactic: cases hω with
  | inl h => exact Or.inl (Or.inl h)
  | inr h => exact Or.inr h