# Berkovich Space over $$\CC_p$$¶

The Berkovich affine line is the set of seminorms on $$\CC_p[x]$$, with the weakest topology that makes the map $$| \cdot | \to |f|$$ continuous for all $$f \in \CC_p[x]$$. The Berkovich projective line is the one-point compactification of the Berkovich affine line.

The two main classes are Berkovich_Cp_Affine and Berkovich_Cp_Projective, which implement the affine and projective lines, respectively.

Berkovich_Cp_Affine and Berkovich_Cp_Projective take as input one of the following: the prime $$p$$, a finite extension of $$\QQ_p$$, or a number field and a place.

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_space.Berkovich

The parent class for any Berkovich space

class sage.schemes.berkovich.berkovich_space.Berkovich_Cp

Abstract parent class for Berkovich space over Cp.

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.

OUTPUT:

• An ideal of a base_ring if base_ring is a number field.

• A prime of $$\QQ$$ if base_ring is $$\QQ$$.

• None if base_ring is a p-adic field.

EXAMPLES:

sage: R.<z> = QQ[]
sage: A.<a> = NumberField(z^2 + 1)
sage: ideal = A.prime_above(5)
sage: B = Berkovich_Cp_Projective(A, ideal)
sage: B.ideal()
Fractional ideal (-a - 2)

sage: B = Berkovich_Cp_Projective(QQ, 3)
sage: B.ideal()
3

sage: B = Berkovich_Cp_Projective(Qp(3))
sage: B.ideal() is None
True

is_number_field_base()

Return True if this Berkovich space is backed by a p-adic field.

OUTPUT:

• True if this Berkovich space was created with a number field.

• False otherwise.

EXAMPLES:

sage: B = Berkovich_Cp_Affine(Qp(3))
sage: B.is_number_field_base()
False

sage: B = Berkovich_Cp_Affine(QQ, 3)
sage: B.is_number_field_base()
True


Return True if this Berkovich space is backed by a p-adic field.

OUTPUT:

• True if this Berkovich space was created with a p-adic field.

• False otherwise.

EXAMPLES:

sage: B = Berkovich_Cp_Affine(Qp(3))
True

sage: B = Berkovich_Cp_Affine(QQ, 3)
False

prime()

The residue characteristic of the base.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: B.prime()
3

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_Affine(A, ideal)
sage: B.residue_characteristic()
7

residue_characteristic()

The residue characteristic of the base.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: B.prime()
3

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_Affine(A, ideal)
sage: B.residue_characteristic()
7

class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Affine(base, ideal=None)

The Berkovich affine line over $$\CC_p$$.

The Berkovich affine line is the set of seminorms on $$\CC_p[x]$$, with the weakest topology such that the map $$| \cdot | \to |f|$$ is continuous for all $$f \in \CC_p[x]$$.

We can represent the Berkovich affine line in two separate ways: either using a p-adic field to represent elements or using a number field to represent elements while storing an ideal of the ring of integers of the number field, which specifies an embedding of the number field into $$\CC_p$$. See the examples.

INPUT:

• base – Three cases:

• a prime number $$p$$. Centers of elements are then represented as points of $$\QQ_p$$.

• $$\QQ_p$$ or a finite extension of $$\QQ_p$$. Centers of elements are then represented as points of base.

• A number field $$K$$. Centers of elements are then represented as points of $$K$$.

• ideal – (optional) a prime ideal of base. Must be specified if a number field is passed to base, otherwise it is ignored.

EXAMPLES:

sage: B = Berkovich_Cp_Affine(3); B
Affine Berkovich line over Cp(3) of precision 20


We can create elements:

sage: B(-2)
Type I point centered at 1 + 2*3 + 2*3^2 + 2*3^3 + 2*3^4 + 2*3^5
+ 2*3^6 + 2*3^7 + 2*3^8 + 2*3^9 + 2*3^10 + 2*3^11 + 2*3^12 + 2*3^13
+ 2*3^14 + 2*3^15 + 2*3^16 + 2*3^17 + 2*3^18 + 2*3^19 + O(3^20)

sage: B(1, 2)
Type III point centered at 1 + O(3^20) of radius 2.00000000000000


For details on element creation, see the documentation of Berkovich_Element_Cp_Affine. Initializing by passing in $$\QQ_p$$ looks the same:

sage: B = Berkovich_Cp_Affine(Qp(3)); B
Affine Berkovich line over Cp(3) of precision 20


However, this method allows for more control over behind-the-scenes conversion:

sage: B = Berkovich_Cp_Affine(Qp(3, 1)); B
Affine Berkovich line over Cp(3) of precision 1

sage: B(1/2)
Type I point centered at 2 + O(3)


Note that this point has very low precision, as B was initialized with a p-adic field of capped-relative precision one. For high precision, pass in a high precision p-adic field:

sage: B = Berkovich_Cp_Affine(Qp(3, 1000)); B
Affine Berkovich line over Cp(3) of precision 1000


Points of Berkovich space can be created from points of extensions of $$\QQ_p$$:

sage: B = Berkovich_Cp_Affine(3)
sage: A.<a> = Qp(3).extension(x^3 - 3)
sage: B(a)
Type I point centered at a + O(a^61)


For exact computation, a number field can be used:

sage: R.<x> = QQ[]
sage: A.<a> = NumberField(x^3 + 20)
sage: ideal = A.prime_above(3)
sage: B = Berkovich_Cp_Affine(A, ideal); B
Affine Berkovich line over Cp(3), with base Number
Field in a with defining polynomial x^3 + 20


Number fields have a major advantage of exact computation.

Number fields also have added functionality. Arbitrary extensions of $$\QQ$$ are supported, while there is currently limited functionality for extensions of $$\QQ_p$$. As seen above, constructing a Berkovich space backed by a number field requires specifying an ideal of the ring of integers of the number field. Specifying the ideal uniquely specifies an embedding of the number field into $$\CC_p$$.

Unlike in the case where Berkovich space is backed by a p-adic field, any point of a Berkovich space backed by a number field must be centered at a point of that number field:

sage: R.<x> = QQ[]
sage: A.<a> = NumberField(x^3 + 20)
sage: ideal = A.prime_above(3)
sage: B = Berkovich_Cp_Affine(A, ideal)
sage: C.<c> = NumberField(x^2 + 1)
sage: B(c)
Traceback (most recent call last):
...
ValueError: could not convert c to Number Field in a
with defining polynomial x^3 + 20

Element
class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Projective(base, ideal=None)

The Berkovich projective line over $$\CC_p$$.

The Berkovich projective line is the one-point compactification of the Berkovich affine line.

We can represent the Berkovich projective line in two separate ways: either using a p-adic field to represent elements or using a number field to represent elements while storing an ideal of the ring of integers of the number field, which specifies an embedding of the number field into $$\CC_p$$. See the examples.

INPUT:

• base – Three cases:

• a prime number $$p$$. Centers of elements are then represented as points of projective space of dimension 1 over $$\QQ_p$$.

• $$\QQ_p$$ or a finite extension of $$\QQ_p$$. Centers of elements are then represented as points of projective space of dimension 1 over base.

• A number field $$K$$. Centers of elements are then represented as points of projective space of dimension 1 over base.

• ideal – (optional) a prime ideal of base. Must be specified if a number field is passed to base, otherwise it is ignored.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3); B
Projective Berkovich line over Cp(3) of precision 20


Elements can be constructed:

sage: B(1/2)
Type I point centered at (2 + 3 + 3^2 + 3^3 + 3^4 + 3^5
+ 3^6 + 3^7 + 3^8 + 3^9 + 3^10 + 3^11 + 3^12 + 3^13 + 3^14
+ 3^15 + 3^16 + 3^17 + 3^18 + 3^19 + O(3^20) : 1 + O(3^20))

sage: B(2, 1)
Type II point centered at (2 + O(3^20) : 1 + O(3^20)) of radius 3^0


For details about element construction, see the documentation of Berkovich_Element_Cp_Projective. Initializing a Berkovich projective line by passing in a p-adic space looks the same:

sage: B = Berkovich_Cp_Projective(Qp(3)); B
Projective Berkovich line over Cp(3) of precision 20


However, this method allows for more control over behind-the-scenes conversion:

sage: S = Qp(3, 1)
sage: B = Berkovich_Cp_Projective(S); B
Projective Berkovich line over Cp(3) of precision 1

sage: Q1 = B(1/2); Q1
Type I point centered at (2 + O(3) : 1 + O(3))


Note that this point has very low precision, as S has low precision cap. Berkovich space can also be created over a number field, as long as an ideal is specified:

sage: R.<x> = QQ[]
sage: A.<a> = NumberField(x^2 + 1)
sage: ideal = A.prime_above(2)
sage: B = Berkovich_Cp_Projective(A, ideal); B
Projective Berkovich line over Cp(2), with base
Number Field in a with defining polynomial x^2 + 1


Number fields have the benefit that computation is exact, but lack support for all of $$\CC_p$$.

Number fields also have the advantage of added functionality, as arbitrary extensions of $$\QQ$$ can be constructed while there is currently limited functionality for extensions of $$\QQ_p$$. As seen above, constructing a Berkovich space backed by a number field requires specifying an ideal of the ring of integers of the number field. Specifying the ideal uniquely specifies an embedding of the number field into $$\CC_p$$.

Unlike in the case where Berkovich space is backed by a p-adic field, any point of a Berkovich space backed by a number field must be centered at a point of that number field:

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: C.<c> = NumberField(x^2 + 1)
sage: B(c)
Traceback (most recent call last):
...
TypeError: could not convert c to Projective Space
of dimension 1 over Number Field in a with defining polynomial x^3 + 20

Element
base_ring()

The base ring of this Berkovich Space.

OUTPUT: A field.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: B.base_ring()
3-adic Field with capped relative precision 20

sage: C = Berkovich_Cp_Projective(ProjectiveSpace(Qp(3, 1), 1))
sage: C.base_ring()
3-adic Field with capped relative precision 1

sage: R.<x> = QQ[]
sage: A.<a> = NumberField(x^3 + 20)
sage: ideal = A.prime_above(3)
sage: D = Berkovich_Cp_Projective(A, ideal)
sage: D.base_ring()
Number Field in a with defining polynomial x^3 + 20

sage.schemes.berkovich.berkovich_space.is_Berkovich(space)

Checks if space is a Berkovich space.

OUTPUT:

• True if space is a Berkovich space.

• False otherwise.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich
sage: is_Berkovich(B)
True

sage.schemes.berkovich.berkovich_space.is_Berkovich_Cp(space)

Checks if space is a Berkovich space over Cp.

OUTPUT:

• True if space is a Berkovich space over Cp.

• False otherwise.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich
sage: is_Berkovich(B)
True