The Berkovich line over a discretely valued field¶
Let \(K\) be a field and \(v_K\) a discrete valuation on \(K\). Let \(F=K(x)\) be a rational function field over \(K\). We consider \(F\) as the function field of the projective line \(\mathbb{P}_K^1\) over \(K\). Let \(X\) denote the \((K,v_K)\)-analytic space associated to \(\mathbb{P}_K^1\). We call \(X\) the Berkovich line with respect to \(v_K\).
Note that we do not assume \(K\) to be complete with respect to \(v_K\). This allows us to work with ‘exact’ fields, e.g. number fields. As the ‘official’ definition of \(K\)-analytic spaces requires \(K\) to be complete, \(X\) is really defined over the completion \(\hat{K}\) with respect to \(v_K\). We do have a continous map
whose role we discuss below.
We systematically work with additive pseudo-valuations instead of multiplicative seminorms. Thus, we identitfy a point \(\xi\in X\) with a (real valued) pseudo-valuation \(v_{\xi}\) on \(F\) extending \(v_K\),
as follows: the subring
is a local subring of \(F\), with maximal ideal
Then \(v_\xi\) induces a discrete valuation on the residue field
There are only two kind of points which are relevant for us and which we can represent and compute with:
- points of type I, which are moreover algebraic: these are the points \(\xi\in X\) such that \(\bar{\xi}:=\pi(\xi)\) is a closed point on \(\mathbb{P}^1_K\). Then \(\mathcal{O}_\xi\) is the local ring and \(K(\xi)\) the residue field of \(\bar{\xi}\). Since \(K(\xi)/K\) is a finite field extension, there are finitely many extensions of \(v_K\) to a discrete valuation on \(K(\xi)\); the point \(\xi\in\pi^{-1}(\bar{\xi})\) corresponds precisely to the valuation induces by \(v_\xi\).
- points of type II: these are the points \(\xi\) such that \(v_\xi\) is a discrete valuation on \(F\). In particular, the local ring \(\mathcal{O}_\xi\) is equal to \(F\) and the image \(\bar{\xi}:=\pi(\xi)\) is the generic point of \(\mathbb{P}^1_K\). A we see below, a point \(\xi\) of type II corresponds to a discoid, a certain type of affinoid subdomain of \(X\).
Our choice of the generator \(x\) of the function field \(F\), which we keep fixed throughout, yields certain distinguished subsets and points of \(X\), as follows.
The unit disk is the subset
Note that a point \(\xi\in\mathbb{D}\) is uniquely determined by the restriction of \(v_\xi\) to the polynomial ring \(K[x]\).
The Gauss point is the point \(\xi^g\in\mathbb{D}\) of type II corresponding to the Gauss valuation on \(K[x]\), with respect to \(v_K\), i.e. by
The second distinguished is the point at infinity, denoted \(\infty\in X\). It is the unique point of type I such that \(\pi(\infty)\) is the ‘usual’ point at infinity on the projective line, with respect to the parameter \(x\). It is characterized by the condition
By a result of Berkovich, the topological space \(X\) is a simply connected quasi-polyhedron. Among other things this means that for any two points \(\xi_1,\xi_2\in X\) there exists a unique closed subset
which is homeomorphic to the unit interval \([0,1]\subset\mathbb{R}\) in such a way that \(\xi_1,\xi_2\) are mapped to the endpoints \(0,1\). It follows that \(X\) has a unique partial ordering determined by the following two conditions:
- the Gauss point \(\xi^g\) is the smallest element
- we have \(\xi_1<\xi_2\) if and only if \(\xi_2\) lies in a connected component of \(X-\{\xi_1\}\) which does not contain \(\xi^g\).
A point \(\xi\) of type II has a discoid representation as follows. If \(\xi=\xi^g\) then \(D_{\xi^g}:=\mathbb{D}\) is defined as the unit disk. Otherwise, \(D_\xi\) is defined of the set of all points \(\xi_1\in X\) such that \(\xi\leq\xi_1\). One can show that \(D_\xi\) is then of the form
where \(f\) is a polynomial in \(x\), irreducible over \(\hat{K}\) (or \(f= 1/x\) if \(\infty\in D_\xi\)) and \(s\) is a rational number. The pair \((f,s)\) determines \(\xi\), but this representation is not unique. We call \((f, s)\) a discoid representation of \(\xi\).
Conversely, if \(D\subset X\) is a discoid, i.e. an irreducible affinoid subdomain which becomes a union of closed disks over a finite extension of \(K\), then there exists a unique boundary point \(\xi\) of \(D\). We have \(D=D_\xi\) if and only if \(D\) is a standard discoid, i.e. it is either contained in or disjoint from the unit disk.
Note that we can simply extend the discoid representation to points of type I by allowing \(s\) to take the value \(\infty\). Then \(D_\xi = \{\xi\}\) for a point \(\xi\) of type I.
AUTHORS:
- Stefan Wewers (2017-02-10): initial version
EXAMPLES:
sage: from mclf import *
sage: v_2 = QQ.valuation(2)
sage: F.<x> = FunctionField(QQ)
sage: X = BerkovichLine(F, v_2)
sage: X
Berkovich line with function field Rational function field in x over Rational Field with 2-adic valuation
We define a point of type II via its discoid.:
sage: xi1 = X.point_from_discoid(x^3 + 2, 3)
sage: xi1
Point of type II on Berkovich line, corresponding to v(x^3 + 2) >= 3
If the affinoid \(v(f)\geq s\) is not irreducible, an error is raised.:
sage: X.point_from_discoid(x^2-1, 3)
Traceback (most recent call last):
...
AssertionError: D defined by f=x^2 - 1 and s=3 is not a discoid
We can similarly define points which do not lie on the unit disk.:
sage: xi2 = X.point_from_discoid(4*x+1, 1)
sage: xi2
Point of type II on Berkovich line, corresponding to v(4*x + 1) >= 1
The infimum of a point inside and a point outside the unit disk must be the Gauss point, corresponding to the unit disk.:
sage: xi1.infimum(xi2)
Point of type II on Berkovich line, corresponding to v(x) >= 0
sage: X.gauss_point()
Point of type II on Berkovich line, corresponding to v(x) >= 0
Some points of type I are limit points, i.e. they can only be approximated by points of type II. For instance, the zeroes of a polynomial which is irreducible over the ground field \(\mathbb{Q}\), but not over its completion \(\mathbb{Q}_2\).:
sage: f = 2*x^2 + x + 1
sage: f.factor()
(2) * (x^2 + 1/2*x + 1/2)
sage: D = X.divisor(f)
sage: D
[(Point of type I on Berkovich space approximated by v(2*x + 1) >= 1, with equation 4*x^2 + 2*x + 2 = 0,
1),
(Point of type I on Berkovich space approximated by v(x + 1) >= 1, with equation 4*x^2 + 2*x + 2 = 0,
1),
(The point at infinity on the Berkovich line, -2)]
sage: xi = D[0][0]
sage: xi.equation()
4*x^2 + 2*x + 2
Note that the point \(\xi\) lies outside and its Galois conjugate point lies inside of the unit disk. This shows that issue #39 has been fixed.
TO DO:
- more doctests!
-
class
mclf.berkovich.berkovich_line.
BerkovichLine
(F, vK)¶ Bases:
SageObject
The class of a Berkovich projective line over a discretely valued field.
Let \(K\) be a field and \(v_K\) a discrete valuation on \(K\). Let \(F=K(x)\) be a rational function field over \(K\). We consider \(F\) a the function field of the projective line \(X\) over \(K\). Let \(X\) denote the \((K,v_K)\)-analytic space associated to \(X\). Then a point \(\xi\) on \(X\) may be identified with a (real valued) pseudo-valuation \(v_\xi\) on \(F\) extending \(v_K\).
INPUT:
F
– a rational function field over a base field KvK
– a discrete valuation on the base field K
-
find_zero
(xi1, xi2, f)¶ Return the point between
xi1
andxi2
wheref
has valuation \(0\).INPUT:
xi1
,xi2
– points on the Berkovich line such that \(\xi_1<\xi2\)f
– a nonconstant rational function; it is assumed that the signs- of the valuations of f at \(\xi1\) and \(\xi2\) are different
OUTPUT:
The smallest point between \(\xi1\) and \(\xi2\) where the valuation of \(f\) is zero.
NOTE:
We are assuming for the moment that the function
\[v \mapsto v(f)\]is affine (i.e. has no kinks) on the interval \([\xi_1,\xi_2]\).
EXAMPLES:
sage: from mclf import * sage: v_2 = QQ.valuation(2) sage: F.<x> = FunctionField(QQ) sage: X = BerkovichLine(F, v_2) sage: xi1 = X.gauss_point() sage: xi2 = X.point_from_discoid(x^4+2*x^2+2, 10) sage: X.find_zero(xi1, xi2, (x^4+2*x^2+2)/4) Point of type II on Berkovich line, corresponding to v(x^4 + 2*x^2 + 2) >= 2 sage: xi3 = X.point_from_discoid(4*x^4+2*x^2+1, 10) sage: f = 2*x^3 sage: xi1.v(f), xi3.v(f) (1, -1/2) sage: X.find_zero(xi1, xi3, f) Point of type II on Berkovich line, corresponding to v(1/x) >= 1/3
Todo
Remove the assumption on the kinks.
-
gauss_point
()¶ Return the Gauss point of self.
The Gauss point is the type-II-point corresponding to the Gauss valuation on \(K[x]\). Its discoid is the unit disk.
EXAMPLES:
sage: from mclf import * sage: v_2 = QQ.valuation(2) sage: F.<x> = FunctionField(QQ) sage: X = BerkovichLine(F, v_2) sage: X.gauss_point() Point of type II on Berkovich line, corresponding to v(x) >= 0
-
infty
()¶ Return the point \(\infty\).
EXAMPLES:
sage: from mclf import * sage: v_2 = QQ.valuation(2) sage: F.<x> = FunctionField(QQ) sage: X = BerkovichLine(F, v_2) sage: X.infty() The point at infinity on the Berkovich line
-
point_from_pseudovaluation
(v)¶ Return the point on the Berkovich line corresponding to the pseudovaluation
v
.INPUT:
v
– a discrete pseudovaluation on the function field ofself
,- extending the base valuation \(v_K\)
OUTPUT:
The point \(\xi\) on the Berkovich line \(X\) =``self`` corresponding to the pseudo valuation
v
on the function field of \(X\).EXAMPLES:
sage: from mclf import * sage: v_2 = QQ.valuation(2) sage: F.<x> = FunctionField(QQ) sage: X = BerkovichLine(F, v_2) sage: v = F.valuation(x) sage: X.point_from_pseudovaluation(v) Traceback (most recent call last): ... AssertionError: v is not an extension of the base valuation sage: v = F.valuation(GaussValuation(F._ring, v_2)) sage: X.point_from_pseudovaluation(v) Point of type II on Berkovich line, corresponding to v(x) >= 0
-
point_from_pseudovaluation_on_polynomial_ring
(v0, parameter=None)¶ Return the point corresponding to a pseudo-valuation on a polynomial ring.
INPUT:
v0
– a discrete pseudo-valuation on a polynomial ring over the base field \(K\), extending the base valuation \(v_K\)parameter
– a parameter for the function field (default:None
)
OUTPUT:
The point on this Berkovich line corresponding to
v0
, with respect toparameter
. Ifparameter
is not given, we assume that it is the standard parameter \(x\).EXAMPLES:
sage: from mclf import * sage: from sage.all import GaussValuation sage: F.<x> = FunctionField(QQ) sage: v2 = QQ.valuation(2) sage: X = BerkovichLine(F, v2) sage: v0 = GaussValuation(F._ring, v2) sage: X.point_from_pseudovaluation_on_polynomial_ring(v0, 2*x) Point of type II on Berkovich line, corresponding to v(x) >= 1
-
point_from_valuation
(v)¶ Return the point corresponding to a discrete valuation.
INPUT:
v
– a discrete valuation on the function field of this Berkovich line
OUPUT:
The point corresponding to v.
If the restriction of \(v\) to the constant base field is trivial, then we obtain a point of type I. Otherwise, the restriction of \(v\) to \(K\) must be equivalent to the base valuation \(v_K\), and in this case we obtain a point of type II.
EXAMPLES:
sage: from mclf.berkovich.berkovich_line import BerkovichLine sage: v_2 = QQ.valuation(2) sage: F.<x> = FunctionField(QQ) sage: X = BerkovichLine(F, v_2) sage: v = F.valuation(x^2+1/2) sage: X.point_from_valuation(v) Point of type I on Berkovich line given by x^2 + 1/2 = 0 sage: xi = X.point_from_discoid(x, 1/2) sage: xi1 = X.point_from_valuation(xi.valuation()) sage: xi.is_equal(xi1) True
-
class
mclf.berkovich.berkovich_line.
PointOnBerkovichLine
¶ Bases:
SageObject
A point on a Berkovich projective line.
We only allow two different types of points:
- Type I, algebraic: these are the points that come from a closed point
- on the (algebraic) projective line over the completed base field.
- Type II: these are the points which correspond to discrete valuations
- on the function field whose residue field is a function field over the residue base field
In particular, the Gauss valuation on \(F=K(x)\) with respect to the parameter \(x\) corresponds t a point \(\xi^g\) of type II on \(X\) which we call the Gauss point.
The set \(X\) has a canonical partial ordering in which the Gauss point is the smallest elements. All point of type I are maximal elements.
-
base_field
()¶ Return the base field of this Berkovich line.
-
base_valuation
()¶ Return the valuation on the base field of this Berkovich line.
-
berkovich_line
()¶ Return the Berkovich line of which this point lies.
-
function_field
()¶ Return the function field of this Berkovich line.
-
inverse_parameter
()¶ Return the inverse parameter of the polynomial ring on which
self
is defined.Let \(\phi:F\to F\) be the automorphism of the function field \(F=K(x)\) such that \(Y:=\phi(x)\) is the parameter used to define
self
. Then the inverse parameter is \(z:=\phi^{-1}(x)\).EXAMPLES:
sage: from mclf import * sage: from sage.all import GaussValuation sage: F.<x> = FunctionField(QQ) sage: v_2 = QQ.valuation(2) sage: X = BerkovichLine(F, v_2) sage: v0 = GaussValuation(F._ring, v_2) sage: xi = X.point_from_pseudovaluation_on_polynomial_ring(v0, x/2) sage: xi Point of type II on Berkovich line, corresponding to v(1/x) >= 1 sage: xi.parameter() 1/x sage: xi.inverse_parameter() 1/x
At the moment, only parameters y of the form c*x or 1/x are allowed.
sage: y = (2*x-1)/(x+2) sage: xi = X.point_from_pseudovaluation_on_polynomial_ring(v0, y) Traceback (most recent call last): ... AssertionError: y must be c*x or 1/x
-
parameter
()¶ Return the parameter of the polynomial ring on which
self
is defined.The point
self
corresponds to a discrete pseudo-valuation \(v\) which is the extension of a pseudo-valuation \(v_0\) on \(K[y]\), where \(y\) is the parameter in question.
-
class
mclf.berkovich.berkovich_line.
TypeIIPointOnBerkovichLine
(X, v)¶ Bases:
mclf.berkovich.berkovich_line.PointOnBerkovichLine
A point of type II on a Berkovich line.
INPUT:
X
– a Berkovich line over a valued field Kv
– a discrete valuation on the function field of X extending the base valuation
OUTPUT:
The type-II-point \(\xi\) on \(X\) corresponding to \(v\).
It is also possible to replace
v
by a pair(v0, y)
, wherev0
is a discrete valuation on a polynomial ring \(K[x]\), andy
is a parameter for the function field of the Berkovich line. Then \(\xi\) is the point corresponding to the valuation \(v\) on the function field \(F=K(x)\) which pulls back to \(v_0\) via the inclusion \(K[x]\to F\) that sends \(x\) to \(y\).NOTE:
At the moment, we only allow the generators \(y\) of the form \(cx\) or \(1/x\).-
approximation
()¶ Return an approximation of
self
. For a point of type II,self
is already an approximation of itself.
-
discoid
(certified_point=None)¶ Return a representation of the discoid of which this type II point is the unique boundary point.
INPUT:
certified_point
(default=None) – this argument is not used for type-II-points
OUTPUT:
A pair \((f, s)\), where \(f\) is a polynomial in the generator \(x\) of the function field of \(X\) which is irreducible over \(\hat{K}\), or \(1/x\), and where \(s\) is a nonnegative rational number. This data represents a discoid \(D\) via the condition \(v_\xi(f)\geq s\).
Then
self
is the unique boundary point of \(D\), and if, moreover,self
is not the Gauss point then \(D\) contains precisely the points \(\xi\) which are greater or equal toself
.The representation \((f,s)\) is normalized as follows:
- if this point lies in the closed unit disk then \(f\) is monic and integral, and \(s\geq 0\). We either have \((f,s)=(x,0)\) (if this point is the Gauss point and \(D\) the closed unit disk) or \(s>0\).
- if this point is not in the closed unit disk then \(s>0\), and \(f\) is either integral with constant term \(1\) and only strictly positive slopes, or \(f=1/x\). In the first case, \(D\) does not contain the point at infinity, in the second case it does. In both cases, \(D\) is disjoint from the closed unit disk.
EXAMPLES:
sage: from mclf import * sage: F.<x> = FunctionField(QQ) sage: v_2 = QQ.valuation(2) sage: X = BerkovichLine(F, v_2) sage: X.gauss_point().discoid() (x, 0) sage: X.infty().discoid() (1/x, +Infinity)
-
improved_approximation
()¶ Return an improved approximation of
self
.This is meaningless for type-II-points, so self is returned.
-
is_gauss_point
()¶ Return True if self is the Gauss point.
-
is_in_unit_disk
()¶ True is self is contained in the unit disk.
-
is_inductive
()¶ True if
self
corresponds to an inductive pseud-valuation. This is always true for points of type II.
-
is_infinity
()¶ Check whether
self
is the point at infinity.
-
is_limit_point
()¶ True is
self
corresponds to a limit valuation. This is never true for points of type II.
-
parameter
()¶ Return the parameter with respect to which this point is defined.
This is either \(x\) (if the point lies in the unit disk) or \(1/x\) otherwise.
-
pseudovaluation
()¶ Return the pseudovaluation corresponding to this point.
OUTPUT:
Since
self
is a point of type II, the output is a discrete valuation on the function field of the underlying Berkovich line.
-
pseudovaluation_on_polynomial_ring
()¶ Return the pseudo-valuation on the polynomial ring ‘K[y]’ corresponding to
self
, where \(y\) is either \(x\) or \(1/x\) depending on whether self lies in the standard closed unit disk or not.
-
type
()¶ Return the type of self.
-
valuation
()¶ Return the valuation corresponding to this point.
OUTPUT:
The discrete valuation on the function field of the underlying Berkovich line corresponding to this point.
-
class
mclf.berkovich.berkovich_line.
TypeIPointOnBerkovichLine
(X, v)¶ Bases:
mclf.berkovich.berkovich_line.PointOnBerkovichLine
An algebraic point of type I.
INPUT:
X
– a Berkovich projective line over a valued field \(K\)v
– an infinite discrete pseudovaluation on the function field \(F=K(x)\)
OUTPUT: a point of type I on
X
Here the point \(\xi\) on \(X\) corresponds to the discrete pseudo-valuation \(v\) on the function field \(F=K(x)\).
Alternatively,
v
can be a pair \((v_0,y)\), where \(v_0\) is an infinite discrete pseudo-valuation on a polynomial ring over \(K\) and \(y\) is a generator of the function field \(F\). Then \(v\) is the infinite discrete pseudo-valuation of \(F\) whose restriction to the subring ring \(K[y]\) is equal to \(v_0\).-
approximation
(certified_point=None, require_maximal_degree=False)¶ Return an approximation of this point.
INPUT:
certified point
(default=None) – a point on the Berkovich linerequire_maximal_degree
(default=False) – boolean
OUTPUT:
A a point which is inductive and approximates
self
, in such a way that we can distinguishself
fromcertified point
.If
self
is an inductive point, thenself
is returned. Otherwise,self
is a limit point, and the output is a point of type II greater or equal toself
(i.e. corresponding to a discoid containingself
). Ifcertified_point
is not None and distinct fromself
, then the output is not greater or equal tocertified_point
.If
require_maximal_degree
isTrue
then any approximation will have the same degree as the limit point. Here the degree of an inductive point means the degree of the last key polynomial describing it, and the degree of a type-I-point is the degree of its minimal polynomial.
-
discoid
(certified_point=None)¶ Return a representation of a discoid approximating
self
.INPUT:
certified_point
(default=None) – a point of type II
OUTPUT:
A pair \((f, s)\), where \(f\) is a polynomial in the generator \(x\) of the function field of \(X\) which is irreducible over \(\hat{K}\), or \(f=1/x\), and where \(s\) is a nonrational number, or is equal to \(\infty\). This data represents a (possibly degenerate) discoid \(D\) via the condition \(v_\xi(f)\geq s\).
\(D\) as above is either the degenerate discoid with \(s=\infty\) which has
self
as the unique point, or \(D\) is an approximation ofself
(this simply means thatself
is contained in \(D\)). Ifcertified_point
is given and is not equal toself
then it is guaranteed that it is not contained in \(D\).We further demand that the discoid \(D\) is either contained in the closed unit disk, or is disjoint from it. Such discoids correspond one-to-one to points of type II.
-
equation
()¶ Return an equation for the Galois orbit of this point.
OUTPUT:
An element \(f\) of the function field of \(X\) which is either an irreducible polynomial in the standard generator \(x\), or is equal to \(1/x\), and such that \(v_\xi(f)=\infty\).
-
function_field_valuation
()¶ Return the function field valuation corresponding to this point
OUTPUT:
the discrete valuation on the function field \(F=K(x)\) which corresponds to the image of this point on \(X=\mathbb{P}^1_K\) (which is, by hypothesis, a closed point).
-
improved_approximation
()¶ Return an improved approximation of
self
.
-
is_gauss_point
()¶ Return True if self is the Gauss point.
-
is_in_unit_disk
()¶ True is self is contained in the unit disk.
-
is_inductive
()¶ Check whether this points corresponds to an inductive valuation.
-
is_limit_point
()¶ Check whether this point corresponds to a limit valuation.
-
pseudovaluation
()¶ Return the pseudovaluation corresponding to this point.
OUTPUT:
a discrete pseudovaluation on the rational function field of the Berkovich line of which
self
is a point.
-
pseudovaluation_on_polynomial_ring
()¶ Return the pseudovaluation representing
self
.OUTPUT:
A discrete pseudovaluation on a polynomial subringring \(K[y]\) from which
self
is induced. It is either inductive or a limit valuation.
-
type
()¶ Return the type of self
-
valuation
()¶ Return the function field valuation corresponding to this point.
OUTPUT:
the normalized discrete valuation on the function field of the Berkovich line corresponding to this point of type I.
This should not be confused with the pseudovaluation usually associated with a type-I-point.
EXAMPLES:
sage: from mclf.berkovich.berkovich_line import BerkovichLine sage: F.<x> = FunctionField(QQ) sage: v_2 = QQ.valuation(2) sage: X = BerkovichLine(F, v_2) sage: X.gauss_point().valuation() 2-adic valuation sage: xi = X.point_from_discoid(x+1, Infinity) sage: xi.valuation() (x + 1)-adic valuation
-
mclf.berkovich.berkovich_line.
inverse_generator
(y)¶ Return the inverse generator of a given generator of a rational function field.
INPUT:
y
- a generator of a rational function field \(F=K(x)\)
OUTPUT:
The inverse generator for \(y\). So if \(\phi:F\to F\) is the automorphism of \(F\) such that \(\phi(x)=y\) then \(z:=\phi^{-1}(x)\) is the inverse generator.
-
mclf.berkovich.berkovich_line.
is_generator
(y)¶ Test whether an element is a generator of a rational function field.
INPUT:
y
- an element of a rational function field \(F=K(x)\)
OUTPUT:
True
if \(F=K(y)\),False
otherwise.
-
mclf.berkovich.berkovich_line.
valuation_from_discoid
(vK, f, s)¶ Return the inductive valuation corresponding to a discoid.
INPUT:
vK
– a discrete valuation on a field \(K\)f
– a nonconstant monic integral polynomial over \(K\)s
– a nonnegative rational number, or \(\infty\)
OUTPUT:
an inductive valuation
v
on the domain off
, extendingvK
, corresponding to the discoid \(D\) defined by \(w(f)\geq s\). In other words, this means that \(D\) defined above is irreducible (and hence a discoid), and \(v\) is its unique boundary point.If \(D\) is not irreducible, an error is raised.
Note that \(s\) maybe \(\infty\), in which case the discoid is degenerate and consists of a single point of type I. This means that the resulting valuation is actually a pseudo-valuation.
ALGORITHM:
We use the function
valuations_from_inequality
which computes more generally the valuations corresponding to the irreducible components of the affinoid defined by an inequality \(w(f)\leq s\). We then test whether this affinoid is connected, i.e. corresponds to a single valuation.EXAMPLES:
An example that created an error in a previous version:
sage: from mclf import * sage: R.<x> = QQ[] sage: v_2 = QQ.valuation(2) sage: f = x^6 - 8030/3241*x^5 + 24468979*x^4 + 14420644*x^3 + 24136511*x^2 + 5386/1505*x + 3981/5297 sage: valuation_from_discoid(v_2, f, 76/15) [ Gauss valuation induced by 2-adic valuation, v(x + 1) = 2/3, v(x^3 + 3*x^2 + 3*x - 3) = 38/15 ] sage: _(f) 76/15
We can create pseudovaluations corresponding to points if type I by setting \(s:=\infty\):
sage: valuation_from_discoid(v_2, x^2+2, Infinity) [ Gauss valuation induced by 2-adic valuation, v(x) = 1/2, v(x^2 + 2) = +Infinity ]
-
mclf.berkovich.berkovich_line.
valuations_from_inequality
(vK, f, s, v0=None)¶ Return the list of inductive pseudo-valuations corresponding to the given inequalities.
INPUT:
vK
– a discrete valuation on a field \(K\)f
– a nonconstant monic integral polynomial over \(K\)s
– a nonnegative rational number, or \(\infty\)v0
– an inductive valuation on the parent off
(default:None
)
OUTPUT:
A list of inductive valuations on the domain of
f
, extendingvK
, corresponding to the boundary points of the irreducible components of the affinoid defined by the condition \(v(f)\geq s\). Note that these components are all discoids (possibly degenerate).If \(s=\infty\) then the list consists of pseudo-valuations and may contain algebraic limit valuations.
If \(v_0\) is given then the output only includes the valuations greater or equal to \(v_0\). So if \(v_0\) is not given, we may assume that \(v_0\) is the Gauss valuation.
ALGORITHM:
This is a modification of the MacLane algorithm. If \(v_0(f) > s\) or if the effective degree of \(f\) with respect to \(v_0\) is zero, then no valuation with the above properties can exist. If \(v_0(f)=s\) and the effective degree is positive, then \(v:=v_0\) is the only solution.
Otherwise, we consider the equivalence decomposition of \(f\) with respect to \(v_0\), such that
\[f \sim_{v_0} u\cdot \prod_{i=1}^r \phi_i^{e_i}.\]By assumption, \(r\geq 1\). For each \(i\), we determine the proper augmentation
\[v_i := [v_0, v_i(\phi_i)=t_i]\]which is maximal under the conditions that
- \(v_i(f) \leq s\), and
- the effective degree of \(f\) with respect to \(v_i\) is equal to \(e_i\).
Every valuation \(v\) we are looking for must be greater or equal to one of the \(v_i\). Therefore, we can apply our algorithms inductively.
EXAMPLES:
sage: from mclf import * sage: vK = QQ.valuation(2) sage: R.<x> = QQ[] sage: f = x^2*(x^4+2*x^2+8) sage: valuations_from_inequality(vK, f, 1) [[ Gauss valuation induced by 2-adic valuation, v(x) = 1/6 ]] sage: valuations_from_inequality(vK, f, 4) [[ Gauss valuation induced by 2-adic valuation, v(x) = 1/2, v(x^2 + 2) = 2 ], [ Gauss valuation induced by 2-adic valuation, v(x) = 3/4 ]] sage: valuations_from_inequality(vK, f, Infinity) [[ Gauss valuation induced by 2-adic valuation, v(x) = 1/2, v(x^2 + 2) = 2 , … ], [ Gauss valuation induced by 2-adic valuation, v(x + 2) = 2 , … ], [ Gauss valuation induced by 2-adic valuation, v(x) = +Infinity ]]
We test some boundary cases:
sage: valuations_from_inequality(vK, R(1), 0) [Gauss valuation induced by 2-adic valuation] sage: valuations_from_inequality(vK, R(1), 1) []