Divisible Hull of an abelian group #
This file constructs the divisible hull of an AddCommMonoid
as a ℕ
-module localized at
ℕ+
(implemented using nonZeroDivisors ℕ
), which is a ℚ≥0
-module.
Furthermore, we show that
- when
M
is a group, so isDivisibleHull M
, which is also aℚ
-module - when
M
is linearly ordered and cancellative, so isDivisibleHull M
, which is also an orderedℚ≥0
-module. - when
M
is a linearly ordered group,DivisibleHull M
is an orderedℚ
-module, andArchimedeanClass
is preserved.
Despite the name, this file doesn't implement a DivisibleBy
instance on DivisibleHull
. This
should be implemented on LocalizedModule
in a more general setting (TODO: implement this).
This file mainly focuses on the specialization to ℕ
and the linear order property introduced by
it.
Main declarations #
DivisibleHull M
is the divisible hull of an abelian group.DivisibleHull.archimedeanClassOrderIso M
is the equivalence betweenArchimedeanClass M
andArchimedeanClass (DivisibleHull M)
.
The divisible hull of a AddCommMonoid
(as a ℕ-module) is the localized module by
ℕ+
(implemented using nonZeroDivisors ℕ
), thus a ℕ-divisble group, or a ℚ≥0
-module.
Equations
Instances For
Create an element m / s
.
Equations
Instances For
Coercion from M
to DivisibleHull M
defined as m ↦ m / 1
.
Equations
- DivisibleHull.instCoe = { coe := DivisibleHull.coe }
If f : M → ℕ+ → α
respects the equivalence on localization,
lift it to a function DivisibleHull M → α
.
Equations
- x.liftOn f h = LocalizedModule.liftOn x (fun (p : M × ↥(nonZeroDivisors ℕ)) => f p.1 (PNat.equivNonZeroDivisorsNat.symm p.2)) ⋯
Instances For
If f : M → ℕ+ → M → ℕ+ → α
respects the equivalence on
localization, lift it to a function DivisibleHull M → DivisibleHull M → α
.
Equations
- x.liftOn₂ y f h = LocalizedModule.liftOn₂ x y (fun (p q : M × ↥(nonZeroDivisors ℕ)) => f p.1 (PNat.equivNonZeroDivisorsNat.symm p.2) q.1 (PNat.equivNonZeroDivisorsNat.symm q.2)) ⋯
Instances For
Coercion from M
to DivisibleHull M
as an AddMonoidHom
.
Equations
- DivisibleHull.coeAddMonoidHom M = { toFun := DivisibleHull.coe, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- DivisibleHull.instSMulRat = { smul := fun (a : ℚ) (x : DivisibleHull M) => ↑(SignType.sign a) • (have this := ⟨|a|, ⋯⟩; this) • x }
Equations
- DivisibleHull.instModuleRat = { toSMul := DivisibleHull.instSMulRat, one_smul := ⋯, mul_smul := ⋯, smul_zero := ⋯, smul_add := ⋯, add_smul := ⋯, zero_smul := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Coercion from M
to DivisibleHull M
as an OrderAddMonoidHom
.
Equations
- DivisibleHull.coeOrderAddMonoidHom M = { toAddMonoidHom := DivisibleHull.coeAddMonoidHom M, monotone' := ⋯ }
Instances For
ArchimedeanClass.mk
of an element from DivisibleHull
only depends on the numerator.
The Archimedean classes of DivisibleHull M
are the same as those of M
.