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 f∈Cp[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
ifbase_ring
is a number field.A prime of Q if
base_ring
is Q.None
ifbase_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 f∈Cp[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 ofbase
. Must be specified if a number field is passed tobase
, 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
- 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 ofbase
. Must be specified if a number field is passed tobase
, 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
- 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
ifspace
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 overCp
.OUTPUT:
True
ifspace
is a Berkovich space overCp
.False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich sage: is_Berkovich(B) True