Berkovich Space over #
The Berkovich affine line is the set of seminorms on
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
For an exposition of Berkovich space over
AUTHORS:
Alexander Galarraga (2020-06-22): initial implementation
- class sage.schemes.berkovich.berkovich_space.Berkovich#
Bases:
UniqueRepresentation,ParentThe parent class for any Berkovich space
- class sage.schemes.berkovich.berkovich_space.Berkovich_Cp#
Bases:
BerkovichAbstract parent class for Berkovich space over
Cp.- ideal()#
The ideal which defines an embedding of the
base_ringinto .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_ringifbase_ringis a number field.A prime of
ifbase_ringis .Noneifbase_ringis 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
Trueif this Berkovich space is backed by a p-adic field.OUTPUT:
Trueif this Berkovich space was created with a number field.Falseotherwise.
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
Trueif this Berkovich space is backed by a p-adic field.OUTPUT:
Trueif this Berkovich space was created with a p-adic field.Falseotherwise.
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:
Berkovich_CpThe Berkovich affine line over
.The Berkovich affine line is the set of seminorms on
, with the weakest topology such that the map is continuous for all .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
. See the examples.INPUT:
base– Three cases:a prime number
. Centers of elements are then represented as points of . or a finite extension of . Centers of elements are then represented as points ofbase.A number field
. Centers of elements are then represented as points of .
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 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
Bwas 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
: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
are supported, while there is currently limited functionality for extensions of . 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 .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
Berkovich_Element_Cp_Affine
- class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Projective(base, ideal=None)#
Bases:
Berkovich_CpThe Berkovich projective line over
.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
. See the examples.INPUT:
base– Three cases:a prime number
. Centers of elements are then represented as points of projective space of dimension 1 over . or a finite extension of . Centers of elements are then represented as points of projective space of dimension 1 overbase.A number field
. Centers of elements are then represented as points of projective space of dimension 1 overbase.
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
.Number fields also have the advantage of added functionality, as arbitrary extensions of
can be constructed while there is currently limited functionality for extensions of . 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 .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
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
spaceis a Berkovich space.OUTPUT:
Trueifspaceis a Berkovich space.Falseotherwise.
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
spaceis a Berkovich space overCp.OUTPUT:
Trueifspaceis a Berkovich space overCp.Falseotherwise.
EXAMPLES:
sage: B = Berkovich_Cp_Projective(3) sage: from sage.schemes.berkovich.berkovich_space import is_Berkovich sage: is_Berkovich(B) True