Theorem: AddSubgroup.dense_of_not_isolated_zero
File: Mathlib/Topology/Algebra/Order/Archimedean.lean

tactic: cases subsingleton_or_nontrivial G
state_before: G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
⊢ Dense ↑S
state_after: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
⊢ Dense ↑S

case inr
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
⊢ Dense ↑S

tactic: refine dense_of_exists_between fun a b hlt => ?_
state_before: case inr
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
⊢ Dense ↑S
state_after: case inr
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
⊢ ∃ c ∈ ↑S, a < c ∧ c < b

tactic: rcases hS (b - a) (sub_pos.2 hlt) with ⟨g, hgS, hg0, hg⟩
state_before: case inr
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
⊢ ∃ c ∈ ↑S, a < c ∧ c < b
state_after: case inr.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
⊢ ∃ c ∈ ↑S, a < c ∧ c < b

tactic: rcases (existsUnique_add_zsmul_mem_Ioc hg0 0 a).exists with ⟨m, hm⟩
state_before: case inr.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
⊢ ∃ c ∈ ↑S, a < c ∧ c < b
state_after: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : 0 + m • g ∈ Ioc a (a + g)
⊢ ∃ c ∈ ↑S, a < c ∧ c < b

tactic: rw [zero_add] at hm
state_before: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : 0 + m • g ∈ Ioc a (a + g)
⊢ ∃ c ∈ ↑S, a < c ∧ c < b
state_after: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : m • g ∈ Ioc a (a + g)
⊢ ∃ c ∈ ↑S, a < c ∧ c < b

tactic: refine ⟨m • g, zsmul_mem hgS _, hm.1, hm.2.trans_lt ?_⟩
state_before: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : m • g ∈ Ioc a (a + g)
⊢ ∃ c ∈ ↑S, a < c ∧ c < b
state_after: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : m • g ∈ Ioc a (a + g)
⊢ a + g < b

tactic: rwa [lt_sub_iff_add_lt'] at hg
state_before: case inr.intro.intro.intro.intro
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Nontrivial G
a b : G
hlt : a < b
g : G
hgS : g ∈ S
hg0 : 0 < g
hg : g < b - a
m : ℤ
hm : m • g ∈ Ioc a (a + g)
⊢ a + g < b
state_after: no goals

tactic: refine fun x => _root_.subset_closure ?_
state_before: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
⊢ Dense ↑S
state_after: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
x : G
⊢ x ∈ ↑S

tactic: rw [Subsingleton.elim x 0]
state_before: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
x : G
⊢ x ∈ ↑S
state_after: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
x : G
⊢ 0 ∈ ↑S

tactic: exact zero_mem S
state_before: case inl
G : Type u_1
inst✝³ : LinearOrderedAddCommGroup G
inst✝² : TopologicalSpace G
inst✝¹ : OrderTopology G
inst✝ : Archimedean G
S : AddSubgroup G
hS : ∀ ε > 0, ∃ g ∈ S, g ∈ Ioo 0 ε
h✝ : Subsingleton G
x : G
⊢ 0 ∈ ↑S
state_after: no goals