Theorem: bergelson
File: Mathlib/MeasureTheory/Function/Intersectivity.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
⊢ ∃ t, t.Infinite ∧ ∀ ⦃u : Set ι⦄, u ⊆ t → u.Finite → 0 < μ (⋂ i ∈ u, s i)
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
⊢ ∃ t, t.Infinite ∧ ∀ ⦃u : Set ι⦄, u ⊆ t → u.Finite → 0 < μ (⋂ i ∈ u, s i)
tactic: obtain ⟨t, ht, h⟩ := bergelson' (fun n ↦ hs $ Infinite.natEmbedding _ n) hr₀ (fun n ↦ hr _)
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
⊢ ∃ t, t.Infinite ∧ ∀ ⦃u : Set ι⦄, u ⊆ t → u.Finite → 0 < μ (⋂ i ∈ u, s i)
state_after: case intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
u : Set ι
hut : u ⊆ ⇑(Infinite.natEmbedding ι) '' t
hu : u.Finite
i : ι
hi : i ∈ u
⊢ ⋂ n ∈ ⇑(Infinite.natEmbedding ι) ⁻¹' u, s ((Infinite.natEmbedding ι) n) ⊆ s i
tactic: refine ⟨_, ht.image $ (Infinite.natEmbedding _).injective.injOn, fun u hut hu ↦
    (h (preimage_subset_of_surjOn (Infinite.natEmbedding _).injective hut) $ hu.preimage
    (Embedding.injective _).injOn).trans_le $ measure_mono $ subset_iInter₂ fun i hi ↦ ?_⟩
state_before: case intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
u : Set ι
hut : u ⊆ ⇑(Infinite.natEmbedding ι) '' t
hu : u.Finite
i : ι
hi : i ∈ u
⊢ ⋂ n ∈ ⇑(Infinite.natEmbedding ι) ⁻¹' u, s ((Infinite.natEmbedding ι) n) ⊆ s i
state_after: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
u : Set ι
hut : u ⊆ ⇑(Infinite.natEmbedding ι) '' t
hu : u.Finite
n : ℕ
hi : (Infinite.natEmbedding ι) n ∈ u
⊢ ⋂ n ∈ ⇑(Infinite.natEmbedding ι) ⁻¹' u, s ((Infinite.natEmbedding ι) n) ⊆ s ((Infinite.natEmbedding ι) n)
tactic: obtain ⟨n, -, rfl⟩ := hut hi
state_before: case intro.intro.intro.intro
ι : Type u_1
α : Type u_2
inst✝² : MeasurableSpace α
μ : Measure α
inst✝¹ : IsFiniteMeasure μ
r : ℝ≥0∞
inst✝ : Infinite ι
s : ι → Set α
hs : ∀ (i : ι), MeasurableSet (s i)
hr₀ : r ≠ 0
hr : ∀ (i : ι), r ≤ μ (s i)
t : Set ℕ
ht : t.Infinite
h : ∀ ⦃u : Set ℕ⦄, u ⊆ t → u.Finite → 0 < μ (⋂ n ∈ u, s ((Infinite.natEmbedding ι) n))
u : Set ι
hut : u ⊆ ⇑(Infinite.natEmbedding ι) '' t
hu : u.Finite
n : ℕ
hi : (Infinite.natEmbedding ι) n ∈ u
⊢ ⋂ n ∈ ⇑(Infinite.natEmbedding ι) ⁻¹' u, s ((Infinite.natEmbedding ι) n) ⊆ s ((Infinite.natEmbedding ι) n)
state_after: no goals
tactic: exact iInter₂_subset n hi