Theorem: ae_of_mem_of_ae_of_mem_inter_Ioo
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: let T : s × s → Set ℝ := fun p => Ioo p.1 p.2
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: let u := ⋃ i : ↥s × ↥s, T i
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: have hfinite : (s \ u).Finite := s.finite_diff_iUnion_Ioo'
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: obtain ⟨A, A_count, hA⟩ :
  ∃ A : Set (↥s × ↥s), A.Countable ∧ (⋃ i ∈ A, T i) = ⋃ i : ↥s × ↥s, T i :=
  isOpen_iUnion_countable _ fun p => isOpen_Ioo
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: have M : ∀ᵐ x ∂μ, x ∉ s \ u := hfinite.countable.ae_not_mem _
state_before: case intro.intro
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: filter_upwards [M, M'] with x hx h'x
state_before: case intro.intro
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s → p x

tactic: intro xs
state_before: case h
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
⊢ x ∈ s → p x

tactic: by_cases Hx : x ∈ ⋃ i : ↥s × ↥s, T i
state_before: case h
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
xs : x ∈ s
⊢ p x

tactic: rw [ae_ball_iff A_count]
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
⊢ ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x

tactic: rintro ⟨⟨a, as⟩, ⟨b, bs⟩⟩ -
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
⊢ ∀ (i : ↑s × ↑s), i ∈ A → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ T i → p x

tactic: change ∀ᵐ x : ℝ ∂μ, x ∈ s ∩ Ioo a b → p x
state_before: case mk.mk.mk
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
a : ℝ
as : a ∈ s
b : ℝ
bs : b ∈ s
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ T ({ val := a, property := as }, { val := b, property := bs }) → p x

tactic: rcases le_or_lt b a with (hba | hab)
state_before: case mk.mk.mk
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
a : ℝ
as : a ∈ s
b : ℝ
bs : b ∈ s
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x

tactic: simp only [Ioo_eq_empty_of_le hba, inter_empty, IsEmpty.forall_iff, eventually_true,
  mem_empty_iff_false]
state_before: case mk.mk.mk.inl
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
a : ℝ
as : a ∈ s
b : ℝ
bs : b ∈ s
hba : b ≤ a
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x

tactic: exact h a b as bs hab
state_before: case mk.mk.mk.inr
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
a : ℝ
as : a ∈ s
b : ℝ
bs : b ∈ s
hab : a < b
⊢ ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x

tactic: rw [← hA] at Hx
state_before: case pos
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
xs : x ∈ s
Hx : x ∈ ⋃ (i : ↑s × ↑s), T i
⊢ p x

tactic: obtain ⟨p, pA, xp⟩ : ∃ p : ↥s × ↥s, p ∈ A ∧ x ∈ T p := by
  simpa only [mem_iUnion, exists_prop, SetCoe.exists, exists_and_right] using Hx
state_before: case pos
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
xs : x ∈ s
Hx : x ∈ ⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i
⊢ p x

tactic: apply h'x p pA ⟨xs, xp⟩
state_before: case pos.intro.intro
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p✝ : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p✝ x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p✝ x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p✝ x
xs : x ∈ s
Hx : x ∈ ⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i
p : ↑s × ↑s
pA : p ∈ A
xp : x ∈ T p
⊢ p✝ x

tactic: simpa only [mem_iUnion, exists_prop, SetCoe.exists, exists_and_right] using Hx
state_before: μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
xs : x ∈ s
Hx : x ∈ ⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i
⊢ ∃ p, p ∈ A ∧ x ∈ T p

tactic: exact False.elim (hx ⟨xs, Hx⟩)
state_before: case neg
μ : MeasureTheory.Measure ℝ
inst✝ : NoAtoms μ
s : Set ℝ
p : ℝ → Prop
h : ∀ (a b : ℝ), a ∈ s → b ∈ s → a < b → ∀ᵐ (x : ℝ) ∂μ, x ∈ s ∩ Ioo a b → p x
T : ↑s × ↑s → Set ℝ := fun p => Ioo ↑p.fst ↑p.snd
u : Set ℝ := ⋃ (i : ↑s × ↑s), T i
hfinite : Set.Finite (s \ u)
A : Set (↑s × ↑s)
A_count : Set.Countable A
hA : (⋃ (i : ↑s × ↑s) (_ : i ∈ A), T i) = ⋃ (i : ↑s × ↑s), T i
M : ∀ᵐ (x : ℝ) ∂μ, ¬x ∈ s \ u
M' : ∀ᵐ (x : ℝ) ∂μ, ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ T i → p x
x : ℝ
hx : ¬x ∈ s \ ⋃ (i : ↑s × ↑s), Ioo ↑i.fst ↑i.snd
h'x : ∀ (i : ↑s × ↑s), i ∈ A → x ∈ s ∩ Ioo ↑i.fst ↑i.snd → p x
xs : x ∈ s
Hx : ¬x ∈ ⋃ (i : ↑s × ↑s), T i
⊢ p x