Archimedean classes of a linearly ordered group #
This file defines archimedean classes of a given linearly ordered group. Archimedean classes
measure to what extent the group fails to be Archimedean. For additive group, elements a
and b
in the same class are "equivalent" in the sense that there exist two natural numbers
m
and n
such that |a| ≤ m • |b|
and |b| ≤ n • |a|
. An element a
in a higher class than b
is "infinitesimal" to b
in the sense that n • |a| < |b|
for all natural number n
.
Main definitions #
ArchimedeanClass
is the archimedean class for additive linearly ordered group.MulArchimedeanClass
is the archimedean class for multiplicative linearly ordered group.ArchimedeanClass.orderHom
andMulArchimedeanClass.orderHom
areOrderHom
over archimedean classes lifted from ordered group homomorphisms.
Main statements #
The following theorems state that an ordered commutative group is (mul-)archimedean if and only if
all non-identity elements belong to the same (Mul
-)ArchimedeanClass
:
ArchimedeanClass.archimedean_of_mk_eq_mk
/MulArchimedeanClass.mulArchimedean_of_mk_eq_mk
ArchimedeanClass.mk_eq_mk_of_archimedean
/MulArchimedeanClass.mk_eq_mk_of_mulArchimedean
Implementation notes #
Archimedean classes are equipped with a linear order, where elements with smaller absolute value are placed in a higher classes by convention. Ordering backwards this way simplifies formalization of theorems such as the Hahn embedding theorem.
To naturally derive this order, we first define it on the underlying group via the type
synonym (Mul
-)ArchimedeanOrder
, and define (Mul
-)ArchimedeanClass
as Antisymmetrization
of
the order.
Type synonym to equip a ordered group with a new Preorder
defined by the infinitesimal order
of elements. a
is said less than b
if b
is infinitesimal comparing to a
, or more precisely,
∀ n, |b|ₘ ^ n < |a|ₘ
. If a
and b
are neither infinitesimal to each other, they are equivalent
in this order.
Equations
- MulArchimedeanOrder M = M
Instances For
Type synonym to equip a ordered group with a new Preorder
defined by the infinitesimal order
of elements. a
is said less than b
if b
is infinitesimal comparing to a
, or more precisely,
∀ n, n • |b| < |a|
. If a
and b
are neither infinitesimal to each other, they are equivalent
in this order.
Equations
- ArchimedeanOrder M = M
Instances For
Equations
- MulArchimedeanOrder.instLE = { le := fun (a b : MulArchimedeanOrder M) => ∃ (n : ℕ), mabs (MulArchimedeanOrder.val b) ≤ mabs (MulArchimedeanOrder.val a) ^ n }
Equations
- ArchimedeanOrder.instLE = { le := fun (a b : ArchimedeanOrder M) => ∃ (n : ℕ), |ArchimedeanOrder.val b| ≤ n • |ArchimedeanOrder.val a| }
Equations
- MulArchimedeanOrder.instLT = { lt := fun (a b : MulArchimedeanOrder M) => ∀ (n : ℕ), mabs (MulArchimedeanOrder.val b) ^ n < mabs (MulArchimedeanOrder.val a) }
Equations
- ArchimedeanOrder.instLT = { lt := fun (a b : ArchimedeanOrder M) => ∀ (n : ℕ), n • |ArchimedeanOrder.val b| < |ArchimedeanOrder.val a| }
Equations
- MulArchimedeanOrder.instPreorder = { toLE := MulArchimedeanOrder.instLE, toLT := MulArchimedeanOrder.instLT, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯ }
Equations
- ArchimedeanOrder.instPreorder = { toLE := ArchimedeanOrder.instLE, toLT := ArchimedeanOrder.instLT, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯ }
An OrderMonoidHom
can be made to an OrderHom
between their MulArchimedeanOrder
.
Equations
- MulArchimedeanOrder.orderHom f = { toFun := fun (a : MulArchimedeanOrder M) => MulArchimedeanOrder.of (f (MulArchimedeanOrder.val a)), monotone' := ⋯ }
Instances For
An OrderAddMonoidHom
can be made to an OrderHom
between their
ArchimedeanOrder
.
Equations
- ArchimedeanOrder.orderHom f = { toFun := fun (a : ArchimedeanOrder M) => ArchimedeanOrder.of (f (ArchimedeanOrder.val a)), monotone' := ⋯ }
Instances For
MulArchimedeanClass
is the antisymmetrization of MulArchimedeanOrder
.
Equations
- MulArchimedeanClass M = Antisymmetrization (MulArchimedeanOrder M) fun (x1 x2 : MulArchimedeanOrder M) => x1 ≤ x2
Instances For
ArchimedeanClass
is the antisymmetrization of ArchimedeanOrder
.
Equations
- ArchimedeanClass M = Antisymmetrization (ArchimedeanOrder M) fun (x1 x2 : ArchimedeanOrder M) => x1 ≤ x2
Instances For
The archimedean class of a given element.
Equations
- MulArchimedeanClass.mk a = toAntisymmetrization (fun (x1 x2 : MulArchimedeanOrder M) => x1 ≤ x2) (MulArchimedeanOrder.of a)
Instances For
The archimedean class of a given element.
Equations
- ArchimedeanClass.mk a = toAntisymmetrization (fun (x1 x2 : ArchimedeanOrder M) => x1 ≤ x2) (ArchimedeanOrder.of a)
Instances For
An induction principle for MulArchimedeanClass
.
An induction principle for ArchimedeanClass
Choose a representative element from a given archimedean class.
Equations
Instances For
Choose a representative element from a given archimedean class.
Equations
- A.out = ArchimedeanOrder.val (Quotient.out A)
Instances For
Equations
1 is in its own class (see MulArchimedeanClass.mk_eq_top_iff
),
which is also the largest class.
Equations
- MulArchimedeanClass.instOrderTop = { top := MulArchimedeanClass.mk 1, le_top := ⋯ }
0 is in its own class (see ArchimedeanClass.mk_eq_top_iff
),
which is also the largest class.
Equations
- ArchimedeanClass.instOrderTop = { top := ArchimedeanClass.mk 0, le_top := ⋯ }
The product over a set of an elements in distinct classes is in the lowest class.
The sum over a set of an elements in distinct classes is in the lowest class.
An OrderMonoidHom
can be lifted to an OrderHom
over archimedean classes.
Instances For
An OrderAddMonoidHom
can be lifted to an OrderHom
over archimedean classes.