Theorem: eventually_uniformity_iterate_comp_subset
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: exact (eventually_and.1 this).2
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
n : ℕ
this : ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s

case this
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
n : ℕ
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s

tactic: induction' n with n ihn generalizing s
state_before: case this
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s : Set (α × α)
hs : s ∈ 𝓤 α
n : ℕ
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s

tactic: rcases comp_mem_uniformity_sets hs with ⟨t, htU, hts⟩
state_before: case this.succ
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s✝ : Set (α × α)
hs✝ : s✝ ∈ 𝓤 α
n : ℕ
ihn :
  ∀ {s : Set (α × α)}, s ∈ 𝓤 α → ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s
s : Set (α × α)
hs : s ∈ 𝓤 α
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[Nat.succ n]) t ⊆ s

tactic: refine' (ihn htU).mono fun U hU => _
state_before: case this.succ.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s✝ : Set (α × α)
hs✝ : s✝ ∈ 𝓤 α
n : ℕ
ihn :
  ∀ {s : Set (α × α)}, s ∈ 𝓤 α → ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s
s : Set (α × α)
hs : s ∈ 𝓤 α
t : Set (α × α)
htU : t ∈ 𝓤 α
hts : t ○ t ⊆ s
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[Nat.succ n]) t ⊆ s

tactic: rw [Function.iterate_succ_apply']
state_before: case this.succ.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s✝ : Set (α × α)
hs✝ : s✝ ∈ 𝓤 α
n : ℕ
ihn :
  ∀ {s : Set (α × α)}, s ∈ 𝓤 α → ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s
s : Set (α × α)
hs : s ∈ 𝓤 α
t : Set (α × α)
htU : t ∈ 𝓤 α
hts : t ○ t ⊆ s
U : Set (α × α)
hU : U ⊆ t ∧ ((fun x x_1 => x ○ x_1) U^[n]) U ⊆ t
⊢ U ⊆ s ∧ ((fun x x_1 => x ○ x_1) U^[Nat.succ n]) U ⊆ s

tactic: exact
  ⟨hU.1.trans <| (subset_comp_self <| refl_le_uniformity htU).trans hts,
    (compRel_mono hU.1 hU.2).trans hts⟩
state_before: case this.succ.intro.intro
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s✝ : Set (α × α)
hs✝ : s✝ ∈ 𝓤 α
n : ℕ
ihn :
  ∀ {s : Set (α × α)}, s ∈ 𝓤 α → ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[n]) t ⊆ s
s : Set (α × α)
hs : s ∈ 𝓤 α
t : Set (α × α)
htU : t ∈ 𝓤 α
hts : t ○ t ⊆ s
U : Set (α × α)
hU : U ⊆ t ∧ ((fun x x_1 => x ○ x_1) U^[n]) U ⊆ t
⊢ U ⊆ s ∧ (fun x x_1 => x ○ x_1) U (((fun x x_1 => x ○ x_1) U^[n]) U) ⊆ s

tactic: simpa
state_before: case this.zero
α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.45668
inst✝ : UniformSpace α
s✝ : Set (α × α)
hs✝ : s✝ ∈ 𝓤 α
s : Set (α × α)
hs : s ∈ 𝓤 α
⊢ ∀ᶠ (t : Set (α × α)) in smallSets (𝓤 α), t ⊆ s ∧ ((fun x x_1 => x ○ x_1) t^[Nat.zero]) t ⊆ s