Theorem: MeasureTheory.Measure.countable_meas_pos_of_disjoint_of_meas_iUnion_ne_top
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: set posmeas := { i : ι | 0 < μ (As i) } with posmeas_def
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
⊢ Set.Countable {i | 0 < ↑↑μ (As i)}

tactic: rcases exists_seq_strictAnti_tendsto' (zero_lt_one : (0 : ℝ≥0∞) < 1) with
  ⟨as, _, as_mem, as_lim⟩
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
⊢ Set.Countable posmeas

tactic: set fairmeas := fun n : ℕ => { i : ι | as n ≤ μ (As i) }
state_before: case intro.intro.intro
α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
⊢ Set.Countable posmeas

tactic: have countable_union : posmeas = ⋃ n, fairmeas n := by
  have fairmeas_eq : ∀ n, fairmeas n = (fun i => μ (As i)) ⁻¹' Ici (as n) := fun n => by
    simp only []
    rfl
  simpa only [fairmeas_eq, posmeas_def, ← preimage_iUnion,
    iUnion_Ici_eq_Ioi_of_lt_of_tendsto (0 : ℝ≥0∞) (fun n => (as_mem n).1) as_lim]
state_before: case intro.intro.intro
α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
⊢ Set.Countable posmeas

tactic: rw [countable_union]
state_before: case intro.intro.intro
α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
countable_union : posmeas = ⋃ (n : ℕ), fairmeas n
⊢ Set.Countable posmeas

tactic: refine' countable_iUnion fun n => Finite.countable _
state_before: case intro.intro.intro
α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
countable_union : posmeas = ⋃ (n : ℕ), fairmeas n
⊢ Set.Countable (⋃ (n : ℕ), fairmeas n)

tactic: refine' finite_const_le_meas_of_disjoint_iUnion μ (as_mem n).1 As_mble As_disj Union_As_finite
state_before: case intro.intro.intro
α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
countable_union : posmeas = ⋃ (n : ℕ), fairmeas n
n : ℕ
⊢ Set.Finite (fairmeas n)

tactic: have fairmeas_eq : ∀ n, fairmeas n = (fun i => μ (As i)) ⁻¹' Ici (as n) := fun n => by
  simp only []
  rfl
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
⊢ posmeas = ⋃ (n : ℕ), fairmeas n

tactic: simpa only [fairmeas_eq, posmeas_def, ← preimage_iUnion,
  iUnion_Ici_eq_Ioi_of_lt_of_tendsto (0 : ℝ≥0∞) (fun n => (as_mem n).1) as_lim]
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
fairmeas_eq : ∀ (n : ℕ), fairmeas n = (fun i => ↑↑μ (As i)) ⁻¹' Ici (as n)
⊢ posmeas = ⋃ (n : ℕ), fairmeas n

tactic: simp only []
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
n : ℕ
⊢ fairmeas n = (fun i => ↑↑μ (As i)) ⁻¹' Ici (as n)

tactic: rfl
state_before: α : Type u_2
β : Type ?u.735840
γ : Type ?u.735843
δ : Type ?u.735846
ι✝ : Type ?u.735849
R : Type ?u.735852
R' : Type ?u.735855
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
ι : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
As : ι → Set α
As_mble : ∀ (i : ι), MeasurableSet (As i)
As_disj : Pairwise (Disjoint on As)
Union_As_finite : ↑↑μ (⋃ (i : ι), As i) ≠ ⊤
posmeas : Set ι := {i | 0 < ↑↑μ (As i)}
posmeas_def : posmeas = {i | 0 < ↑↑μ (As i)}
as : ℕ → ℝ≥0∞
left✝ : StrictAnti as
as_mem : ∀ (n : ℕ), as n ∈ Ioo 0 1
as_lim : Tendsto as atTop (𝓝 0)
fairmeas : ℕ → Set ι := fun n => {i | as n ≤ ↑↑μ (As i)}
n : ℕ
⊢ {i | as n ≤ ↑↑μ (As i)} = (fun i => ↑↑μ (As i)) ⁻¹' Ici (as n)