Valuations which are implemented through a map to another valuation¶
EXAMPLES:
Extensions of valuations over finite field extensions \(L=K[x]/(G)\) are realized through an infinite valuation on \(K[x]\) which maps \(G\) to infinity:
sage: # needs sage.rings.function_field
sage: K.<x> = FunctionField(QQ)
sage: R.<y> = K[]
sage: L.<y> = K.extension(y^2 - x)
sage: v = K.valuation(0)                                                            # needs sage.rings.function_field
sage: w = v.extension(L); w                                                         # needs sage.rings.function_field
(x)-adic valuation
sage: w._base_valuation                                                             # needs sage.rings.function_field
[ Gauss valuation induced by (x)-adic valuation, v(y) = 1/2 , … ]
>>> from sage.all import *
>>> # needs sage.rings.function_field
>>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
>>> R = K['y']; (y,) = R._first_ngens(1)
>>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1)
>>> v = K.valuation(Integer(0))                                                            # needs sage.rings.function_field
>>> w = v.extension(L); w                                                         # needs sage.rings.function_field
(x)-adic valuation
>>> w._base_valuation                                                             # needs sage.rings.function_field
[ Gauss valuation induced by (x)-adic valuation, v(y) = 1/2 , … ]
AUTHORS:
- Julian Rüth (2016-11-10): initial version 
- class sage.rings.valuation.mapped_valuation.FiniteExtensionFromInfiniteValuation(parent, base_valuation)[source]¶
- Bases: - MappedValuation_base,- DiscreteValuation- A valuation on a quotient of the form \(L=K[x]/(G)\) with an irreducible \(G\) which is internally backed by a pseudo-valuations on \(K[x]\) which sends \(G\) to infinity. - INPUT: - parent– the containing valuation space (usually the space of discrete valuations on \(L\))
- base_valuation– an infinite valuation on \(K[x]\) which takes \(G\) to infinity
 - EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v = K.valuation(0) sage: w = v.extension(L); w (x)-adic valuation - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(0)) >>> w = v.extension(L); w (x)-adic valuation - lower_bound(x)[source]¶
- Return a lower bound of this valuation at - x.- Use this method to get an approximation of the valuation of - xwhen speed is more important than accuracy.- EXAMPLES: - sage: # needs sage.rings.number_field sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) sage: v = valuations.pAdicValuation(QQ, 5) sage: u,uu = v.extensions(L) sage: u.lower_bound(t + 2) 0 sage: u(t + 2) 1 - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1) >>> v = valuations.pAdicValuation(QQ, Integer(5)) >>> u,uu = v.extensions(L) >>> u.lower_bound(t + Integer(2)) 0 >>> u(t + Integer(2)) 1 
 - restriction(ring)[source]¶
- Return the restriction of this valuation to - ring.- EXAMPLES: - sage: # needs sage.rings.number_field sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) sage: v = valuations.pAdicValuation(QQ, 2) sage: w = v.extension(L) sage: w.restriction(K) is v True - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1) >>> v = valuations.pAdicValuation(QQ, Integer(2)) >>> w = v.extension(L) >>> w.restriction(K) is v True 
 - simplify(x, error=None, force=False)[source]¶
- Return a simplified version of - x.- Produce an element which differs from - xby an element of valuation strictly greater than the valuation of- x(or strictly greater than- errorif set.)- EXAMPLES: - sage: # needs sage.rings.number_field sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) sage: v = valuations.pAdicValuation(QQ, 5) sage: u,uu = v.extensions(L) sage: f = 125*t + 1 sage: u.simplify(f, error=u(f), force=True) 1 - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1) >>> v = valuations.pAdicValuation(QQ, Integer(5)) >>> u,uu = v.extensions(L) >>> f = Integer(125)*t + Integer(1) >>> u.simplify(f, error=u(f), force=True) 1 
 - upper_bound(x)[source]¶
- Return an upper bound of this valuation at - x.- Use this method to get an approximation of the valuation of - xwhen speed is more important than accuracy.- EXAMPLES: - sage: # needs sage.rings.number_field sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) sage: v = valuations.pAdicValuation(QQ, 5) sage: u,uu = v.extensions(L) sage: u.upper_bound(t + 2) >= 1 True sage: u(t + 2) 1 - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1) >>> v = valuations.pAdicValuation(QQ, Integer(5)) >>> u,uu = v.extensions(L) >>> u.upper_bound(t + Integer(2)) >= Integer(1) True >>> u(t + Integer(2)) 1 
 
- class sage.rings.valuation.mapped_valuation.FiniteExtensionFromLimitValuation(parent, approximant, G, approximants)[source]¶
- Bases: - FiniteExtensionFromInfiniteValuation- An extension of a valuation on a finite field extensions \(L=K[x]/(G)\) which is induced by an infinite limit valuation on \(K[x]\). - EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v = K.valuation(1) 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] - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(1)) >>> 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] 
- class sage.rings.valuation.mapped_valuation.MappedValuation_base(parent, base_valuation)[source]¶
- Bases: - DiscretePseudoValuation- A valuation which is implemented through another proxy “base” valuation. - EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v = K.valuation(0) sage: w = v.extension(L); w (x)-adic valuation - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(0)) >>> w = v.extension(L); w (x)-adic valuation - element_with_valuation(s)[source]¶
- Return an element with valuation - s.- EXAMPLES: - sage: # needs sage.rings.number_field sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) sage: v = valuations.pAdicValuation(QQ, 5) sage: u,uu = v.extensions(L) sage: u.element_with_valuation(1) 5 - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1) >>> v = valuations.pAdicValuation(QQ, Integer(5)) >>> u,uu = v.extensions(L) >>> u.element_with_valuation(Integer(1)) 5 
 - lift(F)[source]¶
- Lift - Ffrom the- residue_field()of this valuation into its domain.- EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v = K.valuation(2) sage: w = v.extension(L) sage: w.lift(w.residue_field().gen()) y - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(2)) >>> w = v.extension(L) >>> w.lift(w.residue_field().gen()) y 
 - reduce(f)[source]¶
- Return the reduction of - fin the- residue_field()of this valuation.- EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - (x - 2)) sage: v = K.valuation(0) sage: w = v.extension(L) sage: w.reduce(y) u1 - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - (x - Integer(2)), names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(0)) >>> w = v.extension(L) >>> w.reduce(y) u1 
 - residue_ring()[source]¶
- Return the residue ring of this valuation. - EXAMPLES: - sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) # needs sage.rings.number_field sage: v = valuations.pAdicValuation(QQ, 2) sage: v.extension(L).residue_ring() # needs sage.rings.number_field Finite Field of size 2 - >>> from sage.all import * >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1)# needs sage.rings.number_field >>> v = valuations.pAdicValuation(QQ, Integer(2)) >>> v.extension(L).residue_ring() # needs sage.rings.number_field Finite Field of size 2 
 - simplify(x, error=None, force=False)[source]¶
- Return a simplified version of - x.- Produce an element which differs from - xby an element of valuation strictly greater than the valuation of- x(or strictly greater than- errorif set.)- If - forceis not set, then expensive simplifications may be avoided.- EXAMPLES: - sage: # needs sage.rings.function_field sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: v = K.valuation(0) sage: w = v.extensions(L)[0] - >>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x, names=('y',)); (y,) = L._first_ngens(1) >>> v = K.valuation(Integer(0)) >>> w = v.extensions(L)[Integer(0)] - As - _relative_size()misses the bloated term- x^32, the following term does not get simplified:- sage: w.simplify(y + x^32) # needs sage.rings.function_field y + x^32 - >>> from sage.all import * >>> w.simplify(y + x**Integer(32)) # needs sage.rings.function_field y + x^32 - In this case the simplification can be forced but this should not happen as a default as the recursive simplification can be quite costly: - sage: w.simplify(y + x^32, force=True) # needs sage.rings.function_field y - >>> from sage.all import * >>> w.simplify(y + x**Integer(32), force=True) # needs sage.rings.function_field y 
 - uniformizer()[source]¶
- Return a uniformizing element of this valuation. - EXAMPLES: - sage: K = QQ sage: R.<t> = K[] sage: L.<t> = K.extension(t^2 + 1) # needs sage.rings.number_field sage: v = valuations.pAdicValuation(QQ, 2) sage: v.extension(L).uniformizer() # needs sage.rings.number_field t + 1 - >>> from sage.all import * >>> K = QQ >>> R = K['t']; (t,) = R._first_ngens(1) >>> L = K.extension(t**Integer(2) + Integer(1), names=('t',)); (t,) = L._first_ngens(1)# needs sage.rings.number_field >>> v = valuations.pAdicValuation(QQ, Integer(2)) >>> v.extension(L).uniformizer() # needs sage.rings.number_field t + 1