# Archimedean groups #

This file proves a few facts about ordered groups which satisfy the Archimedean property, that is: class Archimedean (α) [OrderedAddCommMonoid α] : Prop := (arch : ∀ (x : α) {y}, 0 < y → ∃ n : ℕ, x ≤ n • y)

They are placed here in a separate file (rather than incorporated as a continuation of Algebra.Order.Archimedean) because they rely on some imports from GroupTheory -- bundled subgroups in particular.

The main result is AddSubgroup.cyclic_of_min: a subgroup of a decidable archimedean abelian group is cyclic, if its set of positive elements has a minimal element.

This result is used in this file to deduce Int.subgroup_cyclic, proving that every subgroup of ℤ is cyclic. (There are several other methods one could use to prove this fact, including more purely algebraic methods, but none seem to exist in mathlib as of writing. The closest is Subgroup.is_cyclic, but that has not been transferred to AddSubgroup.)

The result is also used in Topology.Instances.Real as an ingredient in the classification of subgroups of ℝ.

theorem AddSubgroup.cyclic_of_min {G : Type u_1} [] {H : } {a : G} (ha : IsLeast {g : G | g H 0 < g} a) :
H =

Given a subgroup H of a decidable linearly ordered archimedean abelian group G, if there exists a minimal element a of H ∩ G_{>0} then H is generated by a.

theorem AddSubgroup.exists_isLeast_pos {G : Type u_1} [] {H : } (hbot : H ) {a : G} (h₀ : 0 < a) (hd : Disjoint (H) (Set.Ioo 0 a)) :
∃ (b : G), IsLeast {g : G | g H 0 < g} b

If a nontrivial additive subgroup of a linear ordered additive commutative group is disjoint with the interval Set.Ioo 0 a for some positive a, then the set of positive elements of this group admits the least element.

theorem AddSubgroup.cyclic_of_isolated_zero {G : Type u_1} [] {H : } {a : G} (h₀ : 0 < a) (hd : Disjoint (H) (Set.Ioo 0 a)) :
∃ (b : G), H =

If an additive subgroup of a linear ordered additive commutative group is disjoint with the interval Set.Ioo 0 a for some positive a, then this is a cyclic subgroup.

theorem Int.subgroup_cyclic (H : ) :
∃ (a : ), H =

Every subgroup of ℤ is cyclic.