Discrete valuations on function fields#
AUTHORS:
Julian Rüth (2016-10-16): initial version
EXAMPLES:
We can create classical valuations that correspond to finite and infinite places on a rational function field:
sage: K.<x> = FunctionField(QQ)
sage: v = K.valuation(1); v
(x - 1)-adic valuation
sage: v = K.valuation(x^2 + 1); v
(x^2 + 1)-adic valuation
sage: v = K.valuation(1/x); v
Valuation at the infinite place
Note that we can also specify valuations which do not correspond to a place of the function field:
sage: R.<x> = QQ[]
sage: w = valuations.GaussValuation(R, QQ.valuation(2))
sage: v = K.valuation(w); v
2-adic valuation
Valuations on a rational function field can then be extended to finite extensions:
sage: v = K.valuation(x - 1); v
(x - 1)-adic valuation
sage: R.<y> = K[]
sage: L.<y> = K.extension(y^2 - x)
sage: w = v.extensions(L); w
[[ (x - 1)-adic valuation, v(y + 1) = 1 ]-adic valuation,
[ (x - 1)-adic valuation, v(y - 1) = 1 ]-adic valuation]
REFERENCES:
An overview of some computational tools relating to valuations on function fields can be found in Section 4.6 of [Rüt2014]. Most of this was originally developed for number fields in [Mac1936I] and [Mac1936II].
- class sage.rings.function_field.function_field_valuation.ClassicalFunctionFieldValuation_base(parent)#
Bases:
DiscreteFunctionFieldValuation_baseBase class for discrete valuations on rational function fields that come from points on the projective line.
- class sage.rings.function_field.function_field_valuation.DiscreteFunctionFieldValuation_base(parent)#
Bases:
DiscreteValuationBase class for discrete valuations on function fields.
- extensions(L)#
Return the extensions of this valuation to
L.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(x) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v.extensions(L) [(x)-adic valuation]
- class sage.rings.function_field.function_field_valuation.FiniteRationalFunctionFieldValuation(parent, base_valuation)#
Bases:
InducedRationalFunctionFieldValuation_base,ClassicalFunctionFieldValuation_base,RationalFunctionFieldValuation_baseValuation of a finite place of a function field.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(x + 1); v # indirect doctest (x + 1)-adic valuation
A finite place with residual degree:
sage: w = K.valuation(x^2 + 1); w (x^2 + 1)-adic valuation
A finite place with ramification:
sage: K.<t> = FunctionField(GF(3)) sage: L.<x> = FunctionField(K) sage: u = L.valuation(x^3 - t); u (x^3 + 2*t)-adic valuation
A finite place with residual degree and ramification:
sage: q = L.valuation(x^6 - t); q (x^6 + 2*t)-adic valuation
- class sage.rings.function_field.function_field_valuation.FunctionFieldExtensionMappedValuation(parent, base_valuation, to_base_valuation_domain, from_base_valuation_domain)#
Bases:
FunctionFieldMappedValuationRelative_baseA valuation on a finite extensions of function fields
where is another function field which redirects to anotherbase_valuationon an isomorphism function field .The isomorphisms must be trivial on
K.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 + y + x^3) sage: v = K.valuation(1/x) sage: w = v.extension(L) sage: w(x) -1 sage: w(y) -3/2 sage: w.uniformizer() 1/x^2*y
- restriction(ring)#
Return the restriction of this valuation to
ring.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 + y + x^3) sage: v = K.valuation(1/x) sage: w = v.extension(L) sage: w.restriction(K) is v True
- class sage.rings.function_field.function_field_valuation.FunctionFieldFromLimitValuation(parent, approximant, G, approximants)#
Bases:
FiniteExtensionFromLimitValuation,DiscreteFunctionFieldValuation_baseA valuation on a finite extensions of function fields
where is another function field.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - (x^2 + x + 1)) sage: v = K.valuation(x - 1) # indirect doctest sage: w = v.extension(L); w (x - 1)-adic valuation
- scale(scalar)#
Return this valuation scaled by
scalar.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - (x^2 + x + 1)) sage: v = K.valuation(x - 1) # indirect doctest sage: w = v.extension(L) sage: 3*w 3 * (x - 1)-adic valuation
- class sage.rings.function_field.function_field_valuation.FunctionFieldMappedValuationRelative_base(parent, base_valuation, to_base_valuation_domain, from_base_valuation_domain)#
Bases:
FunctionFieldMappedValuation_baseA valuation on a function field which relies on a
base_valuationon an isomorphic function field and which is such that the map from and to the other function field is the identity on the constant field.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: v = K.valuation(1/x); v Valuation at the infinite place
- restriction(ring)#
Return the restriction of this valuation to
ring.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: K.valuation(1/x).restriction(GF(2)) Trivial valuation on Finite Field of size 2
- class sage.rings.function_field.function_field_valuation.FunctionFieldMappedValuation_base(parent, base_valuation, to_base_valuation_domain, from_base_valuation_domain)#
Bases:
FunctionFieldValuation_base,MappedValuation_baseA valuation on a function field which relies on a
base_valuationon an isomorphic function field.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: v = K.valuation(1/x); v Valuation at the infinite place
- is_discrete_valuation()#
Return whether this is a discrete valuation.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^4 - 1) sage: v = K.valuation(1/x) sage: w0,w1 = v.extensions(L) sage: w0.is_discrete_valuation() True
- scale(scalar)#
Return this valuation scaled by
scalar.EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 + y + x^3) sage: v = K.valuation(1/x) sage: w = v.extension(L) sage: 3*w 3 * (x)-adic valuation (in Rational function field in x over Finite Field of size 2 after x |--> 1/x)
- class sage.rings.function_field.function_field_valuation.FunctionFieldValuationFactory#
Bases:
UniqueFactoryCreate a valuation on
domaincorresponding toprime.INPUT:
domain– a function fieldprime– a place of the function field, a valuation on a subring, or a valuation on another function field together with information for isomorphisms to and from that function field
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(1); v # indirect doctest (x - 1)-adic valuation sage: v(x) 0 sage: v(x - 1) 1
See
sage.rings.function_field.function_field.FunctionField.valuation()for further examples.- create_key_and_extra_args(domain, prime)#
Create a unique key which identifies the valuation given by
primeondomain.
- create_key_and_extra_args_from_place(domain, generator)#
Create a unique key which identifies the valuation at the place specified by
generator.
- create_key_and_extra_args_from_valuation(domain, valuation)#
Create a unique key which identifies the valuation which extends
valuation.
- create_key_and_extra_args_from_valuation_on_isomorphic_field(domain, valuation, to_valuation_domain, from_valuation_domain)#
Create a unique key which identifies the valuation which is
valuationafter mapping throughto_valuation_domain.
- create_object(version, key, **extra_args)#
Create the valuation specified by
key.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<x> = QQ[] sage: w = valuations.GaussValuation(R, QQ.valuation(2)) sage: v = K.valuation(w); v # indirect doctest 2-adic valuation
- class sage.rings.function_field.function_field_valuation.FunctionFieldValuation_base(parent)#
Bases:
DiscretePseudoValuationAbstract base class for any discrete (pseudo-)valuation on a function field.
- class sage.rings.function_field.function_field_valuation.InducedRationalFunctionFieldValuation_base(parent, base_valuation)#
Bases:
FunctionFieldValuation_baseBase class for function field valuation induced by a valuation on the underlying polynomial ring.
- extensions(L)#
Return all extensions of this valuation to
Lwhich has a larger constant field than the domain of this valuation.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(x^2 + 1) sage: L.<x> = FunctionField(GaussianIntegers().fraction_field()) sage: v.extensions(L) # indirect doctest [(x - I)-adic valuation, (x + I)-adic valuation]
- lift(F)#
Return a lift of
Fto the domain of this valuation such thatreduce()returns the original element.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(x) sage: v.lift(0) 0 sage: v.lift(1) 1
- reduce(f)#
Return the reduction of
finresidue_ring().EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(x^2 + 1) sage: v.reduce(x) u1
- residue_ring()#
Return the residue field of this valuation.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: K.valuation(x).residue_ring() Rational Field
- restriction(ring)#
Return the restriction of this valuation to
ring.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: K.valuation(x).restriction(QQ) Trivial valuation on Rational Field
- simplify(f, error=None, force=False)#
Return a simplified version of
f.Produce an element which differs from
fby an element of valuation strictly greater than the valuation off(or strictly greater thanerrorif set.)If
forceis not set, then expensive simplifications may be avoided.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(2) sage: f = (x + 1)/(x - 1)
As the coefficients of this fraction are small, we do not simplify as this could be very costly in some cases:
sage: v.simplify(f) (x + 1)/(x - 1)
However, simplification can be forced:
sage: v.simplify(f, force=True) 3
- uniformizer()#
Return a uniformizing element for this valuation.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: K.valuation(x).uniformizer() x
- value_group()#
Return the value group of this valuation.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: K.valuation(x).value_group() Additive Abelian Group generated by 1
- class sage.rings.function_field.function_field_valuation.InfiniteRationalFunctionFieldValuation(parent)#
Bases:
FunctionFieldMappedValuationRelative_base,RationalFunctionFieldValuation_base,ClassicalFunctionFieldValuation_baseValuation of the infinite place of a function field.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = K.valuation(1/x) # indirect doctest
- class sage.rings.function_field.function_field_valuation.NonClassicalRationalFunctionFieldValuation(parent, base_valuation)#
Bases:
InducedRationalFunctionFieldValuation_base,RationalFunctionFieldValuation_baseValuation induced by a valuation on the underlying polynomial ring which is non-classical.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = GaussValuation(QQ['x'], QQ.valuation(2)) sage: w = K.valuation(v); w # indirect doctest 2-adic valuation
- residue_ring()#
Return the residue field of this valuation.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: v = valuations.GaussValuation(QQ['x'], QQ.valuation(2)) sage: w = K.valuation(v) sage: w.residue_ring() Rational function field in x over Finite Field of size 2 sage: R.<x> = QQ[] sage: vv = v.augmentation(x, 1) sage: w = K.valuation(vv) sage: w.residue_ring() Rational function field in x over Finite Field of size 2 sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 + 2*x) sage: w.extension(L).residue_ring() Function field in u2 defined by u2^2 + x
- class sage.rings.function_field.function_field_valuation.RationalFunctionFieldMappedValuation(parent, base_valuation, to_base_valuation_doain, from_base_valuation_domain)#
Bases:
FunctionFieldMappedValuationRelative_base,RationalFunctionFieldValuation_baseValuation on a rational function field that is implemented after a map to an isomorphic rational function field.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<x> = QQ[] sage: w = GaussValuation(R, QQ.valuation(2)).augmentation(x, 1) sage: w = K.valuation(w) sage: v = K.valuation((w, K.hom([~K.gen()]), K.hom([~K.gen()]))); v Valuation on rational function field induced by [ Gauss valuation induced by 2-adic valuation, v(x) = 1 ] (in Rational function field in x over Rational Field after x |--> 1/x)
- class sage.rings.function_field.function_field_valuation.RationalFunctionFieldValuation_base(parent)#
Bases:
FunctionFieldValuation_baseBase class for valuations on rational function fields.
- element_with_valuation(s)#
Return an element with valuation
s.EXAMPLES:
sage: K.<a> = NumberField(x^3+6) sage: v = K.valuation(2) sage: R.<x> = K[] sage: w = GaussValuation(R, v).augmentation(x, 1/123) sage: K.<x> = FunctionField(K) sage: w = w.extension(K) sage: w.element_with_valuation(122/123) 2/x sage: w.element_with_valuation(1) 2