Elements of Berkovich space.#
Berkovich_Element
is an abstract parent class for elements of any Berkovich space.
Berkovich_Element_Cp_Affine
and Berkovich_Element_Cp_Projective
implement elements of Berkovich space over \(\CC_p\) and \(P^1(\CC_p)\). Elements are
determined by specific data and fall into one of the four following types:
Type I points are represented by a center.
Type II points are represented by a center and a rational power of \(p\).
Type III points are represented by a center and a non-negative real radius.
Type IV points are represented by a finite list of centers and a finite list of non-negative radii.
For an exposition of Berkovich space over \(\CC_p\), see Chapter 6 of [Ben2019]. For a more involved exposition, see Chapter 1 and 2 of [BR2010].
AUTHORS:
Alexander Galarraga (2020-06-22): initial implementation
- class sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element#
Bases:
sage.structure.element.Element
The parent class for any element of a Berkovich space
- class sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp(parent, center, radius=None, power=None, prec=20, space_type=None, error_check=True)#
Bases:
sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element
The abstract parent class for any element of Berkovich space over \(\CC_p\).
This class should never be instantiated, instead use
Berkovich_Element_Cp_Affine
orBerkovich_Element_Cp_Projective
.EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: B(2) Type I point centered at 2 + O(3^20)
sage: B(0, 1) Type II point centered at 0 of radius 3^0
- Hsia_kernel(other, basepoint)#
The Hsia kernel of this point and
other
, with basepointbasepoint
.The Hsia kernel with arbitrary basepoint is a generalization of the Hsia kernel at infinity.
INPUT:
other
– A point of the same Berkovich space as this point.basepoint
– A point of the same Berkovich space as this point.
OUTPUT: A finite or infinite real number.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(2, 9) sage: Q2 = B(1/27, 1/27) sage: Q3 = B(1, 1/3) sage: Q1.Hsia_kernel(Q2, Q3) 0.111111111111111
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(2, 9) sage: Q2 = B(1/2) sage: Q3 = B(1/2) sage: Q1.Hsia_kernel(Q2, Q3) +infinity
- Hsia_kernel_infinity(other)#
Return the Hsia kernel at infinity of this point with
other
.The Hsia kernel at infinity is the natural extension of the absolute value on \(\CC_p\) to Berkovich space.
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(Qp(3)) sage: Q1 = B(1/4, 4) sage: Q2 = B(1/4, 6) sage: Q1.Hsia_kernel_infinity(Q2) 6.00000000000000
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) sage: ideal = A.ideal(-1/2*a^2 + a - 3) sage: B = Berkovich_Cp_Projective(A, ideal) sage: Q1 = B(4) sage: Q2 = B(0, 1.5) sage: Q1.Hsia_kernel_infinity(Q2) 1.50000000000000
- big_metric(other)#
Return the path distance metric distance between this point and
other
.Also referred to as the hyperbolic metric, or the big metric.
On the set of type II, III and IV points, the path distance metric is a metric. Following Baker and Rumely, we extend the path distance metric to type I points \(x\), \(y\) by \(\rho(x,x) = 0\) and \(\rho(x,y) = \infty\). See [BR2010].
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A finite or infinite real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/4, 4) sage: Q2 = B(1/4, 6) sage: Q1.path_distance_metric(Q2) 0.369070246428542
sage: Q3 = B(1) sage: Q3.path_distance_metric(Q1) +infinity
sage: Q3.path_distance_metric(Q3) 0
- center()#
Return the center of the corresponding disk (or sequence of disks) in \(\CC_p\).
OUTPUT: An element of the
base
of the parent Berkovich space.EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: B(3, 1).center() 3 + O(3^21)
sage: C = Berkovich_Cp_Projective(3) sage: C(3, 1).center() (3 + O(3^21) : 1 + O(3^20))
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) sage: ideal = A.ideal(-1/2*a^2 + a - 3) sage: B = Berkovich_Cp_Projective(A, ideal) sage: B(a^2 + 4).center() (a^2 + 4 : 1)
- center_function()#
Return the function defining the centers of disks in the approximation.
Not defined unless this point is a type IV point created by using a univariate function to compute centers.
OUTPUT: A univariate function.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(5) sage: L.<t> = PolynomialRing(Qp(5)) sage: T = FractionField(L) sage: f = T(1/t) sage: R.<x> = RR[] sage: Y = FractionField(R) sage: g = (40*pi)/x sage: Q1 = B(f, g) sage: Q1.center_function() (1 + O(5^20))/((1 + O(5^20))*t)
- diameter(basepoint=+ Infinity)#
Generalized diameter function on Berkovich space.
If the basepoint is infinity, the diameter is equal to the limit of the radii of the corresponding disks in \(\CC_p\).
If the basepoint is not infinity, the diameter is the Hsia kernel of this point with itself at basepoint
basepoint
.INPUT:
basepoint
– (default = Infinity) A point of the same Berkovich space as this point.
OUTPUT: A real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(3) sage: Q1.diameter() 0
sage: Q2 = B(1/2, 9) sage: Q2.diameter() 9.00000000000000
The diameter of a type IV point is the limit of the radii:
sage: R.<x> = PolynomialRing(Qp(3)) sage: f = R(2) sage: S.<y> = PolynomialRing(RR) sage: S = FractionField(S) sage: g = (y+1)/y sage: B(f,g).diameter() 1.0
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/81, 1) sage: Q2 = B(1/3) sage: Q1.diameter(Q2) 0.00137174211248285
sage: Q2.diameter(Q2) +infinity
- hyperbolic_metric(other)#
Return the path distance metric distance between this point and
other
.Also referred to as the hyperbolic metric, or the big metric.
On the set of type II, III and IV points, the path distance metric is a metric. Following Baker and Rumely, we extend the path distance metric to type I points \(x\), \(y\) by \(\rho(x,x) = 0\) and \(\rho(x,y) = \infty\). See [BR2010].
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A finite or infinite real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/4, 4) sage: Q2 = B(1/4, 6) sage: Q1.path_distance_metric(Q2) 0.369070246428542
sage: Q3 = B(1) sage: Q3.path_distance_metric(Q1) +infinity
sage: Q3.path_distance_metric(Q3) 0
- ideal()#
The ideal which defines an embedding of the
base_ring
into \(\CC_p\).If this Berkovich space is backed by a p-adic field, then an embedding is already specified, and this returns
None
.EXAMPLES:
sage: B = Berkovich_Cp_Projective(QQ, 3) sage: B(0).ideal() 3 :: sage: B = Berkovich_Cp_Projective(3) sage: B(0).ideal()
- path_distance_metric(other)#
Return the path distance metric distance between this point and
other
.Also referred to as the hyperbolic metric, or the big metric.
On the set of type II, III and IV points, the path distance metric is a metric. Following Baker and Rumely, we extend the path distance metric to type I points \(x\), \(y\) by \(\rho(x,x) = 0\) and \(\rho(x,y) = \infty\). See [BR2010].
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A finite or infinite real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/4, 4) sage: Q2 = B(1/4, 6) sage: Q1.path_distance_metric(Q2) 0.369070246428542
sage: Q3 = B(1) sage: Q3.path_distance_metric(Q1) +infinity
sage: Q3.path_distance_metric(Q3) 0
- potential_kernel(other, basepoint)#
The potential kernel of this point with
other
, with basepointbasepoint
.The potential kernel is the hyperbolic distance between
basepoint
and the join of this point withother
relative tobasepoint
.INPUT:
other
– A point of the same Berkovich space as this point.basepoint
– A point of the same Berkovich space as this point.
OUTPUT: A finite or infinite real number.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(27, 1) sage: Q2 = B(1/3, 2) sage: Q3 = B(1/9, 1/2) sage: Q3.potential_kernel(Q1, Q2) 0.369070246428543
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(27, 1) sage: Q2 = B(1/3, 2) sage: Q3 = B(1/9, 1/2) sage: Q3.potential_kernel(Q1, Q2) 0.369070246428543
- power()#
The power of
p
such that \(p^\text{power} = \text{radius}\).For type II points, always in \(\QQ\). For type III points, a real number. Not defined for type I or IV points.
OUTPUT:
A rational for type II points.
A real number for type III points.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1, 9) sage: Q1.power() 2
sage: Q2 = B(1, 4) sage: Q2.power() 1.26185950714291
- prec()#
Return the precision of a type IV point.
This integer is the number of disks used in the approximation of the type IV point. Not defined for type I, II, or III points.
OUTPUT: An integer.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(Qp(3)) sage: d = B([2, 2, 2], [1.761, 1.123, 1.112]) sage: d.precision() 3
- precision()#
Return the precision of a type IV point.
This integer is the number of disks used in the approximation of the type IV point. Not defined for type I, II, or III points.
OUTPUT: An integer.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(Qp(3)) sage: d = B([2, 2, 2], [1.761, 1.123, 1.112]) sage: d.precision() 3
- prime()#
The residue characteristic of the parent.
OUTPUT: A prime integer.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: B(1).prime() 3
- radius()#
Radius of the corresponding disk (or sequence of disks) in \(\CC_p\).
OUTPUT:
A non-negative real number for type I, II, or III points.
A list of non-negative real numbers for type IV points.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1, 2/5) sage: Q1.radius() 0.400000000000000
sage: d = B([2, 2, 2], [1.761, 1.123, 1.112]) sage: d.radius() [1.76100000000000, 1.12300000000000, 1.11200000000000]
- radius_function()#
Return the function defining the radii of disks in the approximation.
Not defined unless this point is a type IV point created by using a univariate function to compute radii.
OUTPUT: A univariate function.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(5) sage: L.<t> = PolynomialRing(Qp(5)) sage: T = FractionField(L) sage: f = T(1/t) sage: R.<x> = RR[] sage: Y = FractionField(R) sage: g = (40*pi)/x sage: Q1 = B(f, g) sage: Q1.radius_function() 40.0000000000000*pi/x
- small_metric(other)#
Return the small metric distance between this point and
other
.The small metric is an extension of twice the spherical distance on \(P^1(\CC_p)\).
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A real number.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/4, 4) sage: Q2 = B(1/4, 6) sage: Q1.small_metric(Q2) 0.0833333333333333
sage: B = Berkovich_Cp_Projective(QQ, 5) sage: Q1 = B(0, 1) sage: Q2 = B(99) sage: Q1.small_metric(Q2) 1.00000000000000
sage: Q3 = B(1/4, 4) sage: Q3.small_metric(Q2) 1.75000000000000
sage: Q2.small_metric(Q3) 1.75000000000000
- spherical_kernel(other)#
The spherical kernel of this point with
other
.The spherical kernel is one possible extension of the spherical distance on \(P^1(\CC_p)\) to the projective Berkovich line. See [BR2010] for details.
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT: A real number.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(2, 2) sage: Q2 = B(1/9, 1) sage: Q1.spherical_kernel(Q2) 0.500000000000000
sage: Q3 = B(2) sage: Q3.spherical_kernel(Q3) 0
- type_of_point()#
Return the type of this point of Berkovich space over \(\CC_p\).
OUTPUT: An integer between 1 and 4 inclusive.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: B(1).type_of_point() 1
sage: B(0, 1).type_of_point() 2
- class sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp_Affine(parent, center, radius=None, power=None, prec=20, error_check=True)#
Bases:
sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp
Element class of the Berkovich affine line over \(\CC_p\).
Elements are categorized into four types, represented by specific data:
Type I points are represented by a center in the
base
of the parent Berkovich space, which is \(\QQ_p\), a finite extension of \(\QQ_p\), or a number field.Type II points are represented by a center in the
base
of the parent Berkovich space, and a rational power of \(p\).Type III points are represented by a center in the
base
of the parent Berkovich space, and a radius, a real number in \([0,\infty)\).Type IV points are represented by a finite list of centers in the
base
of the parent Berkovich space and a finite list of radii in \([0,\infty)\). Type IV points can be created from univariate functions, allowing for arbitrary precision.
INPUT:
center
– For type I, II, and III points, the center of the corresponding disk in \(\CC_p\). If the parent Berkovich space was created using a number field \(K\), thencenter
must be an element of \(K\). Otherwise,center
must be an element of a p-adic field. For type IV points, can be a list of centers used to approximate the point or a univariate function that computes the centers (computation starts at 1).radius
– (optional) For type I, II, and III points, the radius of the corresponding disk inCp
. Must coerce into the real numbers. For type IV points, can be a list of radii used to approximate the point or a univariate function that computes the radii (computation starts at 1).power
– (optional) Rational number. Used for constructing type II points; specifies the power ofp
such that \(p^\text{power}\) = radius.prec
– (default: 20) The number of disks to be used to approximate a type IV point.error_check
– (default: True) If error checking should be run on input. If input is correctly formatted, can be set toFalse
for better performance. WARNING: with error check set toFalse
, any error in the input will lead to incorrect results.
EXAMPLES:
Type I points can be created by specifying the corresponding point of
Cp
:sage: B = Berkovich_Cp_Affine(Qp(3)) sage: B(4) Type I point centered at 1 + 3 + O(3^20)
The center of a point can be an element of a finite extension of
Qp
:sage: A.<t> = Qq(27) sage: B(1 + t) Type I point centered at (t + 1) + O(3^20)
Type II and III points can be created by specifying a center and a radius:
sage: B(2, 3**(1/2)) Type II point centered at 2 + O(3^20) of radius 3^1/2
sage: B(2, 1.6) Type III point centered at 2 + O(3^20) of radius 1.60000000000000
Some type II points may be mistaken for type III points:
sage: B(3, 3**0.5) #not tested Type III point centered at 3 + O(3^21) of radius 1.73205080756888
To avoid these errors, specify the power instead of the radius:
sage: B(3, power=RR(1/100000)) Type II point centered at 3 + O(3^21) of radius 3^1/100000
Type IV points can be constructed in a number of ways, the first being from a list of centers and radii used to approximate the point:
sage: B([Qp(3)(2), Qp(3)(2), Qp(3)(2)], [1.761, 1.123, 1.112]) Type IV point of precision 3, approximated by disks centered at [2 + O(3^20), 2 + O(3^20)] ... with radii [1.76100000000000, 1.12300000000000] ...
Type IV points can be constructed from univariate functions, with arbitrary precision:
sage: A.<t> = Qq(27) sage: R.<x> = PolynomialRing(A) sage: f = (1 + t)^2*x sage: S.<y> = PolynomialRing(RR) sage: S = FractionField(S) sage: g = (y + 1)/y sage: d = B(f, g, prec=100); d Type IV point of precision 100 with centers given by ((t^2 + 2*t + 1) + O(3^20))*x and radii given by (y + 1.00000000000000)/y
For increased performance, error_check can be set to
False
. WARNING: with error check set toFalse
, any error in the input will lead to incorrect results:sage: B(f, g, prec=100, error_check=False) Type IV point of precision 100 with centers given by ((t^2 + 2*t + 1) + O(3^20))*x and radii given by (y + 1.00000000000000)/y
When creating a Berkovich space backed by a number field, points can be created similarly:
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) sage: ideal = A.prime_above(3) sage: B = Berkovich_Cp_Projective(A, ideal) sage: Q1 = B(a); Q1 Type I point centered at (a : 1)
sage: B(a + 1, 3) Type II point centered at (a + 1 : 1) of radius 3^1
- as_projective_point()#
Return the corresponding point of projective Berkovich space.
We identify affine Berkovich space with the subset \(P^1_{\text{Berk}}(C_p) - \{(1 : 0)\}\).
EXAMPLES:
sage: B = Berkovich_Cp_Affine(5) sage: B(5).as_projective_point() Type I point centered at (5 + O(5^21) : 1 + O(5^20))
sage: B(0, 1).as_projective_point() Type II point centered at (0 : 1 + O(5^20)) of radius 5^0
sage: L.<t> = PolynomialRing(Qp(5)) sage: T = FractionField(L) sage: f = T(1/t) sage: R.<x> = RR[] sage: Y = FractionField(R) sage: g = (40*pi)/x sage: Q2 = B(f, g) sage: Q2.as_projective_point() Type IV point of precision 20 with centers given by (1 + O(5^20))/((1 + O(5^20))*t) and radii given by 40.0000000000000*pi/x
- contained_in_interval(start, end)#
Check if this point is an element of the interval [
start
,end
].INPUT:
start
– A point of the same Berkovich space as this point.end
– A point of the same Berkovich space as this point.
OUTPUT:
True
if this point is an element of [start
,end
].False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective((3)) sage: Q1 = B(2, 1) sage: Q2 = B(2, 4) sage: Q3 = B(1/3) sage: Q2.contained_in_interval(Q1, Q3.join(Q1)) False
sage: Q4 = B(1/81, 1) sage: Q2.contained_in_interval(Q1, Q4.join(Q1)) True
- gt(other)#
Return
True
if this point is strictly greater thanother
in the standard partial order.Roughly, the partial order corresponds to containment of the corresponding disks in \(\CC_p\).
For example, let x and y be points of type II or III. If x has center \(c_1\) and radius \(r_1\) and y has center \(c_2\) and radius \(r_2\), \(x < y\) if and only if \(D(c_1,r_1)\) is a subset of \(D(c_2,r_2)\) in \(\CC_p\).
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT:
True
– If this point is greater thanother
in the standard partial order.False
– Otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(QQ, 3) sage: Q1 = B(5, 3) sage: Q2 = B(5, 1) sage: Q1.gt(Q2) True
sage: Q3 = B(1/27) sage: Q1.gt(Q3) False
- involution_map()#
Return the image of this point under the involution map.
The involution map is the extension of the map
z |-> 1/z
on \(\CC_p\) to Berkovich space.For affine Berkovich space, not defined for the type I point centered at 0.
If zero is contained in every disk approximating a type IV point, then the image under the involution map is not defined. To avoid this error, increase precision.
OUTPUT: A point of the same Berkovich space.
EXAMPLES:
The involution map is 1/z on type I points:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(1/2) sage: Q1.involution_map() Type I point centered at 2 + O(3^20)
sage: Q2 = B(0, 1/3) sage: Q2.involution_map() Type II point centered at 0 of radius 3^1
sage: Q3 = B(1/3, 1/3) sage: Q3.involution_map() Type II point centered at 3 + O(3^21) of radius 3^-3
- join(other, basepoint=+ Infinity)#
Compute the join of this point and
other
with respect tobasepoint
.The join is first point that lies on the intersection of the path from this point to
basepoint
and the path fromother
tobasepoint
.INPUT:
other
– A point of the same Berkovich space as this point.basepoint
– (default: Infinity) A point of the same Berkovich space as this point or Infinity.
OUTPUT: A point of the same Berkovich space.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3) sage: Q1 = B(2, 1) sage: Q2 = B(2, 2) sage: Q1.join(Q2) Type III point centered at 2 + O(3^20) of radius 2.00000000000000
sage: Q3 = B(5) sage: Q3.join(Q1) Type II point centered at 2 + 3 + O(3^20) of radius 3^0
sage: Q3.join(Q1, basepoint=Q2) Type II point centered at 2 + O(3^20) of radius 3^0
- lt(other)#
Return
True
if this point is strictly less thanother
in the standard partial order.Roughly, the partial order corresponds to containment of the corresponding disks in
Cp
.For example, let x and y be points of type II or III. If x has center \(c_1\) and radius \(r_1\) and y has center \(c_2\) and radius \(r_2\), \(x < y\) if and only if \(D(c_1,r_1)\) is a subset of \(D(c_2,r_2)\) in \(\CC_p\).
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT:
True
– If this point is less thanother
in the standard partial order.False
– Otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(5, 0.5) sage: Q2 = B(5, 1) sage: Q1.lt(Q2) True
sage: Q3 = B(1) sage: Q1.lt(Q3) False
- class sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp_Projective(parent, center, radius=None, power=None, prec=20, error_check=True)#
Bases:
sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp
Element class of the Berkovich projective line over \(\CC_p\).
Elements are categorized into four types, represented by specific data:
Type I points are represented by a center in the
base
of the parent Berkovich space, which is projective space of dimension 1 over either \(\QQ_p\), a finite extension of \(\QQ_p\), or a number field.Type II points are represented by a center in the
base
of the parent Berkovich space, and a rational power of \(p\).Type III points are represented by a center in the
base
of the parent Berkovich space, and by a radius, a real number, in \([0,\infty)\).Type IV points are represented by a finite list of centers in the
base
of the parent Berkovich space and a finite list of radii in \([0,\infty)\).
The projective Berkovich line is viewed as the one-point compactification of the affine Berkovich line. The projective Berkovich line therefore contains every point of the affine Berkovich line, along with a type I point centered at infinity.
INPUT:
center
– For type I, II, and III points, the center of the corresponding disk in \(P^1(\CC_p)\). If the parent Berkovich space was created using a number field \(K\), thencenter
can be an element of \(P^1(K)\). Otherwise,center
must be an element of a projective space of dimension 1 over a padic field. For type IV points, can be a list of centers used to approximate the point or a univariate function that computes the centers (computation starts at 1).radius
– (optional) For type I, II, and III points, the radius of the corresponding disk in \(\CC_p\). Must coerce into the real numbers. For type IV points, can be a list of radii used to approximate the point or a univariate function that computes the radii (computation starts at 1).power
– (optional) Rational number. Used for constructing type II points; specifies the power ofp
such that \(p^\text{power}\) = radiusprec
– (default: 20) The number of disks to be used to approximate a type IV pointerror_check
– (default: True) If error checking should be run on input. If input is correctly formatted, can be set toFalse
for better performance. WARNING: with error check set toFalse
, any error in the input will lead to incorrect results.
EXAMPLES:
Type I points can be created by specifying the corresponding point of \(P^1(\CC_p)\):
sage: S = ProjectiveSpace(Qp(5), 1) sage: P = Berkovich_Cp_Projective(S); P Projective Berkovich line over Cp(5) of precision 20
sage: a = S(0, 1) sage: Q1 = P(a); Q1 Type I point centered at (0 : 1 + O(5^20))
sage: Q2 = P((1,0)); Q2 Type I point centered at (1 + O(5^20) : 0)
Type II and III points can be created by specifying a center and a radius:
sage: Q3 = P((0,5), 5**(3/2)); Q3 Type II point centered at (0 : 1 + O(5^20)) of radius 5^3/2
sage: Q4 = P(0, 3**(3/2)); Q4 Type III point centered at (0 : 1 + O(5^20)) of radius 5.19615242270663
Type IV points can be created from lists of centers and radii:
sage: b = S((3,2)) #create centers sage: c = S((4,3)) sage: d = S((2,3)) sage: L = [b, c, d] sage: R = [1.761, 1.123, 1.112] sage: Q5 = P(L, R); Q5 Type IV point of precision 3, approximated by disks centered at [(4 + 2*5 + 2*5^2 + 2*5^3 + 2*5^4 + 2*5^5 + 2*5^6 + 2*5^7 + 2*5^8 + 2*5^9 + 2*5^10 + 2*5^11 + 2*5^12 + 2*5^13 + 2*5^14 + 2*5^15 + 2*5^16 + 2*5^17 + 2*5^18 + 2*5^19 + O(5^20) : 1 + O(5^20)), (3 + 3*5 + 5^2 + 3*5^3 + 5^4 + 3*5^5 + 5^6 + 3*5^7 + 5^8 + 3*5^9 + 5^10 + 3*5^11 + 5^12 + 3*5^13 + 5^14 + 3*5^15 + 5^16 + 3*5^17 + 5^18 + 3*5^19 + O(5^20) : 1 + O(5^20))] ... with radii [1.76100000000000, 1.12300000000000] ...
Type IV points can also be created from univariate functions. Since the centers of the sequence of disks can not be the point at infinity in \(P^1(\CC_p)\), only functions into \(\CC_p\) are supported:
sage: L.<t> = PolynomialRing(Qp(5)) sage: T = FractionField(L) sage: f = T(1/t) sage: R.<x> = RR[] sage: Y = FractionField(R) sage: g = (40*pi)/x sage: Q6 = P(f, g); Q6 Type IV point of precision 20 with centers given by (1 + O(5^20))/((1 + O(5^20))*t) and radii given by 40.0000000000000*pi/x
- as_affine_point()#
Return the corresponding affine point after dehomogenizing at infinity.
OUTPUT: A point of affine Berkovich space.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(5) sage: B(5).as_affine_point() Type I point centered at 5 + O(5^21)
sage: Q = B(0, 1).as_affine_point(); Q Type II point centered at 0 of radius 5^0 sage: Q.parent() Affine Berkovich line over Cp(5) of precision 20
sage: L.<t> = PolynomialRing(Qp(5)) sage: T = FractionField(L) sage: f = T(1/t) sage: R.<x> = RR[] sage: Y = FractionField(R) sage: g = (40*pi)/x sage: Q2 = B(f, g) sage: Q2.as_affine_point() Type IV point of precision 20 with centers given by (1 + O(5^20))/((1 + O(5^20))*t) and radii given by 40.0000000000000*pi/x
- contained_in_interval(start, end)#
Check if this point is an element of the interval [
start
,end
].INPUT:
start
– A point of the same Berkovich space as this point.end
– A point of the same Berkovich space as this point.
OUTPUT:
True
if this point is an element of [start
,end
].False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(2, 1) sage: Q2 = B(2, 4) sage: Q3 = B(1/3) sage: Q2.contained_in_interval(Q1, Q3.join(Q1)) False
sage: Q4 = B(1/81, 1) sage: Q2.contained_in_interval(Q1, Q4.join(Q1)) True
- gt(other)#
Return
True
if this point is strictly greater thanother
in the standard partial order.Roughly, the partial order corresponds to containment of the corresponding disks in \(\CC_p\).
For example, let x and y be points of type II or III. If x has center \(c_1\) and radius \(r_1\) and y has center \(c_2\) and radius \(r_2\), \(x < y\) if and only if \(D(c_1, r_1)\) is a subset of \(D(c_2, r_2)\) in \(\CC_p\).
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT:
True
– If this point is greater thanother
in the standard partial order.False
– Otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(QQ, 3) sage: Q1 = B(5, 3) sage: Q2 = B(5, 1) sage: Q1.gt(Q2) True
sage: Q3 = B(1/27) sage: Q1.gt(Q3) False
- involution_map()#
Return the image of this point under the involution map.
The involution map is the extension of the map
z |-> 1/z
on \(P^1(\CC_p)\) to Berkovich space.If zero is contained in every disk approximating a type IV point, then the image under the involution map is not defined. To avoid this error, increase precision.
OUTPUT: A point of the same Berkovich space.
EXAMPLES:
The involution map is 1/z on type I points:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(1/2) sage: Q1.involution_map() Type I point centered at (2 + O(3^20) : 1 + O(3^20))
sage: Q2 = B(0, 1/3) sage: Q2.involution_map() Type II point centered at (0 : 1 + O(3^20)) of radius 3^1
sage: Q3 = B(1/3, 1/3) sage: Q3.involution_map() Type II point centered at (3 + O(3^21) : 1 + O(3^20)) of radius 3^-3
- join(other, basepoint=+ Infinity)#
Compute the join of this point and
other
, with respect tobasepoint
.The join is first point that lies on the intersection of the path from this point to
basepoint
and the path fromother
tobasepoint
.INPUT:
other
– A point of the same Berkovich space as this point.basepoint
– (default: Infinity) A point of the same Berkovich space as this point, or infinity.
OUTPUT: A point of the same Berkovich space.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(2, 1) sage: Q2 = B(2, 2) sage: Q1.join(Q2) Type III point centered at (2 + O(3^20) : 1 + O(3^20)) of radius 2.00000000000000
sage: Q3 = B(5) sage: Q3.join(Q1) Type II point centered at (2 + 3 + O(3^20) : 1 + O(3^20)) of radius 3^0
sage: Q3.join(Q1, basepoint=Q2) Type II point centered at (2 + O(3^20) : 1 + O(3^20)) of radius 3^0
- lt(other)#
Return
True
if this point is strictly less thanother
in the standard partial order.Roughly, the partial order corresponds to containment of the corresponding disks in \(\CC_p\).
For example, let x and y be points of type II or III. If x has center \(c_1\) and radius \(r_1\) and y has center \(c_2\) and radius \(r_2\), \(x < y\) if and only if \(D(c_1,r_1)\) is a subset of \(D(c_2,r_2)\) in \(\CC_p\).
INPUT:
other
– A point of the same Berkovich space as this point.
OUTPUT:
True
– If this point is less thanother
in the standard partial order.False
– Otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: Q1 = B(5, 0.5) sage: Q2 = B(5, 1) sage: Q1.lt(Q2) True
sage: Q3 = B(1) sage: Q1.lt(Q3) False