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#
Bases:
UniqueRepresentation
,Parent
The parent class for any Berkovich space
- class sage.schemes.berkovich.berkovich_space.Berkovich_Cp#
Bases:
Berkovich
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
ifbase_ring
is a number field.A prime of \(\QQ\) if
base_ring
is \(\QQ\).None
ifbase_ring
is a p-adic field.
EXAMPLES:
sage: R.<z> = QQ[] sage: A.<a> = NumberField(z^2 + 1) # optional - sage.rings.number_field sage: ideal = A.prime_above(5) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Projective(A, ideal) # optional - sage.rings.number_field sage: B.ideal() # optional - sage.rings.number_field Fractional ideal (-a - 2)
sage: B = Berkovich_Cp_Projective(QQ, 3) sage: B.ideal() 3
sage: B = Berkovich_Cp_Projective(Qp(3)) # optional - sage.rings.padics sage: B.ideal() is None # optional - sage.rings.padics True
- is_number_field_base()#
Return
True
if this Berkovich space is backed by a number field.OUTPUT:
True
if this Berkovich space was created with a number field.False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(Qp(3)) # optional - sage.rings.padics sage: B.is_number_field_base() # optional - sage.rings.padics 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)) # optional - sage.rings.padics sage: B.is_padic_base() # optional - sage.rings.padics 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) # optional - sage.rings.padics sage: B.prime() # optional - sage.rings.padics 3
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) # optional - sage.rings.number_field sage: ideal = A.ideal(-1/2*a^2 + a - 3) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Affine(A, ideal) # optional - sage.rings.number_field sage: B.residue_characteristic() # optional - sage.rings.number_field 7
- residue_characteristic()#
The residue characteristic of the
base
.EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) # optional - sage.rings.padics sage: B.prime() # optional - sage.rings.padics 3
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) # optional - sage.rings.number_field sage: ideal = A.ideal(-1/2*a^2 + a - 3) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Affine(A, ideal) # optional - sage.rings.number_field sage: B.residue_characteristic() # optional - sage.rings.number_field 7
- class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Affine(base, ideal=None)#
Bases:
Berkovich_Cp
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 ofbase
. Must be specified if a number field is passed tobase
, otherwise it is ignored.
EXAMPLES:
sage: B = Berkovich_Cp_Affine(3); B # optional - sage.rings.padics Affine Berkovich line over Cp(3) of precision 20
We can create elements:
sage: B(-2) # optional - sage.rings.padics 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) # optional - sage.rings.padics 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 # optional - sage.rings.padics 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 # optional - sage.rings.padics Affine Berkovich line over Cp(3) of precision 1 sage: B(1/2) # optional - sage.rings.padics 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 # optional - sage.rings.padics 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) # optional - sage.rings.padics sage: A.<a> = Qp(3).extension(x^3 - 3) # optional - sage.rings.padics sage: B(a) # optional - sage.rings.padics 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) # optional - sage.rings.number_field sage: ideal = A.prime_above(3) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Affine(A, ideal); B # optional - sage.rings.number_field 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) # optional - sage.rings.number_field sage: ideal = A.prime_above(3) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Affine(A, ideal) # optional - sage.rings.number_field sage: C.<c> = NumberField(x^2 + 1) # optional - sage.rings.number_field sage: B(c) # optional - sage.rings.number_field Traceback (most recent call last): ... ValueError: could not convert c to Number Field in a with defining polynomial x^3 + 20
- Element#
alias of
Berkovich_Element_Cp_Affine
- class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Projective(base, ideal=None)#
Bases:
Berkovich_Cp
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 ofbase
. Must be specified if a number field is passed tobase
, otherwise it is ignored.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3); B # optional - sage.rings.padics Projective Berkovich line over Cp(3) of precision 20
Elements can be constructed:
sage: B(1/2) # optional - sage.rings.padics 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) # optional - sage.rings.padics 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 # optional - sage.rings.padics 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) # optional - sage.rings.padics sage: B = Berkovich_Cp_Projective(S); B # optional - sage.rings.padics Projective Berkovich line over Cp(3) of precision 1 sage: Q1 = B(1/2); Q1 # optional - sage.rings.padics 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) # optional - sage.rings.number_field sage: ideal = A.prime_above(2) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Projective(A, ideal); B # optional - sage.rings.number_field 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) # optional - sage.rings.number_field sage: ideal = A.prime_above(3) # optional - sage.rings.number_field sage: B = Berkovich_Cp_Projective(A, ideal) # optional - sage.rings.number_field sage: C.<c> = NumberField(x^2 + 1) # optional - sage.rings.number_field sage: B(c) # optional - sage.rings.number_field 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
Berkovich_Element_Cp_Projective
- base_ring()#
The base ring of this Berkovich Space.
OUTPUT: A field.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) # optional - sage.rings.padics sage: B.base_ring() # optional - sage.rings.padics 3-adic Field with capped relative precision 20
sage: C = Berkovich_Cp_Projective(ProjectiveSpace(Qp(3, 1), 1)) # optional - sage.rings.padics sage: C.base_ring() # optional - sage.rings.padics 3-adic Field with capped relative precision 1
sage: R.<x> = QQ[] sage: A.<a> = NumberField(x^3 + 20) # optional - sage.rings.number_field sage: ideal = A.prime_above(3) # optional - sage.rings.number_field sage: D = Berkovich_Cp_Projective(A, ideal) # optional - sage.rings.number_field sage: D.base_ring() # optional - sage.rings.number_field Number Field in a with defining polynomial x^3 + 20
- sage.schemes.berkovich.berkovich_space.is_Berkovich(space)#
Check if
space
is a Berkovich space.OUTPUT:
True
ifspace
is a Berkovich space.False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) # optional - sage.rings.padics sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich sage: is_Berkovich(B) # optional - sage.rings.padics True
- sage.schemes.berkovich.berkovich_space.is_Berkovich_Cp(space)#
Check if
space
is a Berkovich space overCp
.OUTPUT:
True
ifspace
is a Berkovich space overCp
.False
otherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) # optional - sage.rings.padics sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich sage: is_Berkovich(B) # optional - sage.rings.padics True