Berkovich Space over Cp

The Berkovich affine line is the set of seminorms on Cp[x], with the weakest topology that makes the map |||f| continuous for all fCp[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 Qp, or a number field and a place.

For an exposition of Berkovich space over Cp, 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

Bases: sage.structure.unique_representation.UniqueRepresentation, sage.structure.parent.Parent

The parent class for any Berkovich space

class sage.schemes.berkovich.berkovich_space.Berkovich_Cp

Bases: sage.schemes.berkovich.berkovich_space.Berkovich

Abstract parent class for Berkovich space over Cp.

ideal()

The ideal which defines an embedding of the base_ring into Cp.

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 Q if base_ring is Q.

  • 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
is_padic_base()

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))
sage: B.is_padic_base()
True
sage: B = Berkovich_Cp_Affine(QQ, 3)
sage: B.is_padic_base()
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)

Bases: sage.schemes.berkovich.berkovich_space.Berkovich_Cp

The Berkovich affine line over Cp.

The Berkovich affine line is the set of seminorms on Cp[x], with the weakest topology such that the map |||f| is continuous for all fCp[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 Cp. See the examples.

INPUT:

  • base – Three cases:

    • a prime number p. Centers of elements are then represented as points of Qp.

    • Qp or a finite extension of Qp. 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 Qp 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 Qp:

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 Q are supported, while there is currently limited functionality for extensions of Qp. 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 Cp.

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

alias of sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp_Affine

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

Bases: sage.schemes.berkovich.berkovich_space.Berkovich_Cp

The Berkovich projective line over Cp.

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 Cp. 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 Qp.

    • Qp or a finite extension of Qp. 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 Cp.

Number fields also have the advantage of added functionality, as arbitrary extensions of Q can be constructed while there is currently limited functionality for extensions of Qp. 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 Cp.

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

alias of sage.schemes.berkovich.berkovich_cp_element.Berkovich_Element_Cp_Projective

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