Theorem: CauchySeq.isCauSeq
File: Mathlib/Topology/MetricSpace/CauSeqFilter.lean

tactic: cases' cauchy_iff.1 hf with hf1 hf2
state_before: β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
⊢ IsCauSeq norm f

tactic: intro ε hε
state_before: case intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
⊢ IsCauSeq norm f

tactic: rcases hf2 { x | dist x.1 x.2 < ε } (dist_mem_uniformity hε) with ⟨t, ⟨ht, htsub⟩⟩
state_before: case intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
⊢ ∃ i, ∀ (j : ℕ), j ≥ i → ‖f j - f i‖ < ε

tactic: simp at ht
state_before: case intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
ht : t ∈ map f atTop
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
⊢ ∃ i, ∀ (j : ℕ), j ≥ i → ‖f j - f i‖ < ε

tactic: cases' ht with N hN
state_before: case intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
ht : ∃ a, ∀ (b : ℕ), a ≤ b → f b ∈ t
⊢ ∃ i, ∀ (j : ℕ), j ≥ i → ‖f j - f i‖ < ε

tactic: exists N
state_before: case intro.intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
N : ℕ
hN : ∀ (b : ℕ), N ≤ b → f b ∈ t
⊢ ∃ i, ∀ (j : ℕ), j ≥ i → ‖f j - f i‖ < ε

tactic: intro j hj
state_before: case intro.intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
N : ℕ
hN : ∀ (b : ℕ), N ≤ b → f b ∈ t
⊢ ∀ (j : ℕ), j ≥ N → ‖f j - f N‖ < ε

tactic: rw [← dist_eq_norm]
state_before: case intro.intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
N : ℕ
hN : ∀ (b : ℕ), N ≤ b → f b ∈ t
j : ℕ
hj : j ≥ N
⊢ ‖f j - f N‖ < ε

tactic: apply @htsub (f j, f N)
state_before: case intro.intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
N : ℕ
hN : ∀ (b : ℕ), N ≤ b → f b ∈ t
j : ℕ
hj : j ≥ N
⊢ dist (f j) (f N) < ε

tactic: apply Set.mk_mem_prod <;> solve_by_elim [le_refl]
state_before: case intro.intro.intro.intro
β : Type v
inst✝ : NormedField β
f : ℕ → β
hf : CauchySeq f
hf1 : NeBot (map f atTop)
hf2 : ∀ (s : Set (β × β)), s ∈ uniformity β → ∃ t, t ∈ map f atTop ∧ t ×ˢ t ⊆ s
ε : ℝ
hε : ε > 0
t : Set β
htsub : t ×ˢ t ⊆ {x | dist x.fst x.snd < ε}
N : ℕ
hN : ∀ (b : ℕ), N ≤ b → f b ∈ t
j : ℕ
hj : j ≥ N
⊢ (f j, f N) ∈ t ×ˢ t