Theorem: Filter.HasBasis.cauchySeq_iff'
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: refine' H.cauchySeq_iff.trans ⟨fun h i hi => _, fun h i hi => _⟩
state_before: α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
⊢ CauchySeq u ↔ ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i

tactic: exact (h i hi).imp fun N hN n hn => hN n hn N le_rfl
state_before: case refine'_1
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i
i : γ
hi : p i
⊢ ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i

tactic: rcases comp_symm_of_uniformity (H.mem_of_mem hi) with ⟨t, ht, ht', hts⟩
state_before: case refine'_2
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i
i : γ
hi : p i
⊢ ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i

tactic: rcases H.mem_iff.1 ht with ⟨j, hj, hjt⟩
state_before: case refine'_2.intro.intro.intro
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i
i : γ
hi : p i
t : Set (α × α)
ht : t ∈ 𝓤 α
ht' : ∀ {a b : α}, (a, b) ∈ t → (b, a) ∈ t
hts : t ○ t ⊆ s i
⊢ ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i

tactic: refine' (h j hj).imp fun N hN m hm n hn => hts ⟨u N, hjt _, ht' <| hjt _⟩
state_before: case refine'_2.intro.intro.intro.intro.intro
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i
i : γ
hi : p i
t : Set (α × α)
ht : t ∈ 𝓤 α
ht' : ∀ {a b : α}, (a, b) ∈ t → (b, a) ∈ t
hts : t ○ t ⊆ s i
j : γ
hj : p j
hjt : s j ⊆ t
⊢ ∃ N, ∀ (m : β), N ≤ m → ∀ (n : β), N ≤ n → (u m, u n) ∈ s i

tactic: exacts [hN m hm, hN n hn]
state_before: case refine'_2.intro.intro.intro.intro.intro.refine'_1
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i
i : γ
hi : p i
t : Set (α × α)
ht : t ∈ 𝓤 α
ht' : ∀ {a b : α}, (a, b) ∈ t → (b, a) ∈ t
hts : t ○ t ⊆ s i
j : γ
hj : p j
hjt : s j ⊆ t
N : β
hN : ∀ (n : β), n ≥ N → (u n, u N) ∈ s j
m : β
hm : N ≤ m
n : β
hn : N ≤ n
⊢ ((u m, u n).fst, u N) ∈ s j

case refine'_2.intro.intro.intro.intro.intro.refine'_2
α : Type u
β : Type v
inst✝² : UniformSpace α
γ : Sort u_1
inst✝¹ : Nonempty β
inst✝ : SemilatticeSup β
u : β → α
p : γ → Prop
s : γ → Set (α × α)
H : HasBasis (𝓤 α) p s
h : ∀ (i : γ), p i → ∃ N, ∀ (n : β), n ≥ N → (u n, u N) ∈ s i
i : γ
hi : p i
t : Set (α × α)
ht : t ∈ 𝓤 α
ht' : ∀ {a b : α}, (a, b) ∈ t → (b, a) ∈ t
hts : t ○ t ⊆ s i
j : γ
hj : p j
hjt : s j ⊆ t
N : β
hN : ∀ (n : β), n ≥ N → (u n, u N) ∈ s j
m : β
hm : N ≤ m
n : β
hn : N ≤ n
⊢ ((u m, u n).snd, u N) ∈ s j