Value groups of discrete valuations¶
This file defines additive sub(semi-)groups of \(\QQ\) and related structures.
AUTHORS:
- Julian Rüth (2013-09-06): initial version
EXAMPLES:
sage: v = ZZ.valuation(2)
sage: v.value_group()
Additive Abelian Group generated by 1
sage: v.value_semigroup()
Additive Abelian Semigroup generated by 1
-
sage.rings.valuation.value_group.
DiscreteValuationCodomain
¶ The codomain of discrete valuations, the rational numbers extended by \(\pm\infty\).
EXAMPLES:
sage: from sage.rings.valuation.value_group import DiscreteValuationCodomain sage: C = DiscreteValuationCodomain(); C Codomain of Discrete Valuations
-
sage.rings.valuation.value_group.
DiscreteValueGroup
¶ The value group of a discrete valuation, an additive subgroup of \(\QQ\) generated by
generator
.INPUT:
generator
– a rational number
Note
We do not rely on the functionality provided by additive abelian groups in Sage since these require the underlying set to be the integers. Therefore, we roll our own Z-module here. We could have used
AdditiveAbelianGroupWrapper
here, but it seems to be somewhat outdated. In particular, generic group functionality should now come from the category and not from the super-class. A facade of Q appeared to be the better approach.EXAMPLES:
sage: from sage.rings.valuation.value_group import DiscreteValueGroup sage: D1 = DiscreteValueGroup(0); D1 Trivial Additive Abelian Group sage: D2 = DiscreteValueGroup(4/3); D2 Additive Abelian Group generated by 4/3 sage: D3 = DiscreteValueGroup(-1/3); D3 Additive Abelian Group generated by 1/3
-
sage.rings.valuation.value_group.
DiscreteValueSemigroup
¶ The value semigroup of a discrete valuation, an additive subsemigroup of \(\QQ\) generated by
generators
.INPUT:
generators
– rational numbers
EXAMPLES:
sage: from sage.rings.valuation.value_group import DiscreteValueSemigroup sage: D1 = DiscreteValueSemigroup(0); D1 Trivial Additive Abelian Semigroup sage: D2 = DiscreteValueSemigroup(4/3); D2 Additive Abelian Semigroup generated by 4/3 sage: D3 = DiscreteValueSemigroup([-1/3, 1/2]); D3 Additive Abelian Semigroup generated by -1/3, 1/2