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[source]

Bases: UniqueRepresentation, Parent

The parent class for any Berkovich space

class sage.schemes.berkovich.berkovich_space.Berkovich_Cp[source]

Bases: Berkovich

Abstract parent class for Berkovich space over Cp.

ideal()[source]

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: # needs sage.rings.number_field
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 (2*a - 1)
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['z']; (z,) = R._first_ngens(1)
>>> A = NumberField(z**Integer(2) + Integer(1), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.prime_above(Integer(5))
>>> B = Berkovich_Cp_Projective(A, ideal)
>>> B.ideal()
Fractional ideal (2*a - 1)
# needs sage.rings.number_field
R.<z> = QQ[]
A.<a> = NumberField(z^2 + 1)
ideal = A.prime_above(5)
B = Berkovich_Cp_Projective(A, ideal)
B.ideal()

sage: B = Berkovich_Cp_Projective(QQ, 3)
sage: B.ideal()
3
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(QQ, Integer(3))
>>> B.ideal()
3
B = Berkovich_Cp_Projective(QQ, 3)
B.ideal()

sage: B = Berkovich_Cp_Projective(Qp(3))
sage: B.ideal() is None
True
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Qp(Integer(3)))
>>> B.ideal() is None
True
B = Berkovich_Cp_Projective(Qp(3))
B.ideal() is None
is_number_field_base()[source]

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))
sage: B.is_number_field_base()
False
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Qp(Integer(3)))
>>> B.is_number_field_base()
False
B = Berkovich_Cp_Affine(Qp(3))
B.is_number_field_base()

sage: B = Berkovich_Cp_Affine(QQ, 3)
sage: B.is_number_field_base()
True
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(QQ, Integer(3))
>>> B.is_number_field_base()
True
B = Berkovich_Cp_Affine(QQ, 3)
B.is_number_field_base()
is_padic_base()[source]

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
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Qp(Integer(3)))
>>> B.is_padic_base()
True
B = Berkovich_Cp_Affine(Qp(3))
B.is_padic_base()

sage: B = Berkovich_Cp_Affine(QQ, 3)
sage: B.is_padic_base()
False
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(QQ, Integer(3))
>>> B.is_padic_base()
False
B = Berkovich_Cp_Affine(QQ, 3)
B.is_padic_base()
prime()[source]

The residue characteristic of the base.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: B.prime()
3
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3))
>>> B.prime()
3
B = Berkovich_Cp_Projective(3)
B.prime()

sage: # needs sage.rings.number_field
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
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.ideal(-Integer(1)/Integer(2)*a**Integer(2) + a - Integer(3))
>>> B = Berkovich_Cp_Affine(A, ideal)
>>> B.residue_characteristic()
7
# needs sage.rings.number_field
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)
ideal = A.ideal(-1/2*a^2 + a - 3)
B = Berkovich_Cp_Affine(A, ideal)
B.residue_characteristic()
residue_characteristic()[source]

The residue characteristic of the base.

EXAMPLES:

sage: B = Berkovich_Cp_Projective(3)
sage: B.prime()
3
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3))
>>> B.prime()
3
B = Berkovich_Cp_Projective(3)
B.prime()

sage: # needs sage.rings.number_field
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
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.ideal(-Integer(1)/Integer(2)*a**Integer(2) + a - Integer(3))
>>> B = Berkovich_Cp_Affine(A, ideal)
>>> B.residue_characteristic()
7
# needs sage.rings.number_field
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)
ideal = A.ideal(-1/2*a^2 + a - 3)
B = Berkovich_Cp_Affine(A, ideal)
B.residue_characteristic()
class sage.schemes.berkovich.berkovich_space.Berkovich_Cp_Affine(base, ideal=None)[source]

Bases: 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
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Integer(3)); B
Affine Berkovich line over Cp(3) of precision 20
B = Berkovich_Cp_Affine(3); B

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)
>>> from sage.all import *
>>> B(-Integer(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)
B(-2)

sage: B(1, 2)
Type III point centered at 1 + O(3^20) of radius 2.00000000000000
>>> from sage.all import *
>>> B(Integer(1), Integer(2))
Type III point centered at 1 + O(3^20) of radius 2.00000000000000
B(1, 2)

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
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Qp(Integer(3))); B
Affine Berkovich line over Cp(3) of precision 20
B = Berkovich_Cp_Affine(Qp(3)); B

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)
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Qp(Integer(3), Integer(1))); B
Affine Berkovich line over Cp(3) of precision 1

>>> B(Integer(1)/Integer(2))
Type I point centered at 2 + O(3)
B = Berkovich_Cp_Affine(Qp(3, 1)); B
B(1/2)

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
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Qp(Integer(3), Integer(1000))); B
Affine Berkovich line over Cp(3) of precision 1000
B = Berkovich_Cp_Affine(Qp(3, 1000)); B

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)
>>> from sage.all import *
>>> B = Berkovich_Cp_Affine(Integer(3))
>>> A = Qp(Integer(3)).extension(x**Integer(3) - Integer(3), names=('a',)); (a,) = A._first_ngens(1)
>>> B(a)
Type I point centered at a + O(a^61)
B = Berkovich_Cp_Affine(3)
A.<a> = Qp(3).extension(x^3 - 3)
B(a)

For exact computation, a number field can be used:

sage: R.<x> = QQ[]
sage: A.<a> = NumberField(x^3 + 20)                                             # needs sage.rings.number_field
sage: ideal = A.prime_above(3)                                                  # needs sage.rings.number_field
sage: B = Berkovich_Cp_Affine(A, ideal); B                                      # needs sage.rings.number_field
Affine Berkovich line over Cp(3), with base
 Number Field in a with defining polynomial x^3 + 20
>>> from sage.all import *
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)# needs sage.rings.number_field
>>> ideal = A.prime_above(Integer(3))                                                  # needs sage.rings.number_field
>>> B = Berkovich_Cp_Affine(A, ideal); B                                      # needs sage.rings.number_field
Affine Berkovich line over Cp(3), with base
 Number Field in a with defining polynomial x^3 + 20
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)                                             # needs sage.rings.number_field
ideal = A.prime_above(3)                                                  # needs sage.rings.number_field
B = Berkovich_Cp_Affine(A, ideal); B                                      # needs sage.rings.number_field

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: # needs sage.rings.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
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.prime_above(Integer(3))
>>> B = Berkovich_Cp_Affine(A, ideal)
>>> C = NumberField(x**Integer(2) + Integer(1), names=('c',)); (c,) = C._first_ngens(1)
>>> B(c)
Traceback (most recent call last):
...
ValueError: could not convert c to Number Field in a
with defining polynomial x^3 + 20
# needs sage.rings.number_field
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)
ideal = A.prime_above(3)
B = Berkovich_Cp_Affine(A, ideal)
C.<c> = NumberField(x^2 + 1)
B(c)
Element[source]

alias of Berkovich_Element_Cp_Affine

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

Bases: 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
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3)); B
Projective Berkovich line over Cp(3) of precision 20
B = Berkovich_Cp_Projective(3); B

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))
>>> from sage.all import *
>>> B(Integer(1)/Integer(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))
B(1/2)

sage: B(2, 1)
Type II point centered at (2 + O(3^20) : 1 + O(3^20)) of radius 3^0
>>> from sage.all import *
>>> B(Integer(2), Integer(1))
Type II point centered at (2 + O(3^20) : 1 + O(3^20)) of radius 3^0
B(2, 1)

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
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Qp(Integer(3))); B
Projective Berkovich line over Cp(3) of precision 20
B = Berkovich_Cp_Projective(Qp(3)); B

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))
>>> from sage.all import *
>>> S = Qp(Integer(3), Integer(1))
>>> B = Berkovich_Cp_Projective(S); B
Projective Berkovich line over Cp(3) of precision 1

>>> Q1 = B(Integer(1)/Integer(2)); Q1
Type I point centered at (2 + O(3) : 1 + O(3))
S = Qp(3, 1)
B = Berkovich_Cp_Projective(S); B
Q1 = B(1/2); Q1

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)                                              # needs sage.rings.number_field
sage: ideal = A.prime_above(2)                                                  # needs sage.rings.number_field
sage: B = Berkovich_Cp_Projective(A, ideal); B                                  # needs sage.rings.number_field
Projective Berkovich line over Cp(2), with base
 Number Field in a with defining polynomial x^2 + 1
>>> from sage.all import *
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(2) + Integer(1), names=('a',)); (a,) = A._first_ngens(1)# needs sage.rings.number_field
>>> ideal = A.prime_above(Integer(2))                                                  # needs sage.rings.number_field
>>> B = Berkovich_Cp_Projective(A, ideal); B                                  # needs sage.rings.number_field
Projective Berkovich line over Cp(2), with base
 Number Field in a with defining polynomial x^2 + 1
R.<x> = QQ[]
A.<a> = NumberField(x^2 + 1)                                              # needs sage.rings.number_field
ideal = A.prime_above(2)                                                  # needs sage.rings.number_field
B = Berkovich_Cp_Projective(A, ideal); B                                  # needs sage.rings.number_field

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: # needs sage.rings.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
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.prime_above(Integer(3))
>>> B = Berkovich_Cp_Projective(A, ideal)
>>> C = NumberField(x**Integer(2) + Integer(1), names=('c',)); (c,) = C._first_ngens(1)
>>> 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
# needs sage.rings.number_field
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)
ideal = A.prime_above(3)
B = Berkovich_Cp_Projective(A, ideal)
C.<c> = NumberField(x^2 + 1)
B(c)
Element[source]

alias of Berkovich_Element_Cp_Projective

base_ring()[source]

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
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3))
>>> B.base_ring()
3-adic Field with capped relative precision 20
B = Berkovich_Cp_Projective(3)
B.base_ring()

sage: C = Berkovich_Cp_Projective(ProjectiveSpace(Qp(3, 1), 1))
sage: C.base_ring()
3-adic Field with capped relative precision 1
>>> from sage.all import *
>>> C = Berkovich_Cp_Projective(ProjectiveSpace(Qp(Integer(3), Integer(1)), Integer(1)))
>>> C.base_ring()
3-adic Field with capped relative precision 1
C = Berkovich_Cp_Projective(ProjectiveSpace(Qp(3, 1), 1))
C.base_ring()

sage: # needs sage.rings.number_field
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
>>> from sage.all import *
>>> # needs sage.rings.number_field
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> A = NumberField(x**Integer(3) + Integer(20), names=('a',)); (a,) = A._first_ngens(1)
>>> ideal = A.prime_above(Integer(3))
>>> D = Berkovich_Cp_Projective(A, ideal)
>>> D.base_ring()
Number Field in a with defining polynomial x^3 + 20
# needs sage.rings.number_field
R.<x> = QQ[]
A.<a> = NumberField(x^3 + 20)
ideal = A.prime_above(3)
D = Berkovich_Cp_Projective(A, ideal)
D.base_ring()
sage.schemes.berkovich.berkovich_space.is_Berkovich(space)[source]

Check 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)
doctest:warning...
DeprecationWarning: The function is_Berkovich is deprecated; use 'isinstance(..., Berkovich)' instead.
See https://github.com/sagemath/sage/issues/38022 for details.
True
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3))
>>> from sage.schemes.berkovich.berkovich_space import is_Berkovich
>>> is_Berkovich(B)
doctest:warning...
DeprecationWarning: The function is_Berkovich is deprecated; use 'isinstance(..., Berkovich)' instead.
See https://github.com/sagemath/sage/issues/38022 for details.
True
B = Berkovich_Cp_Projective(3)
from sage.schemes.berkovich.berkovich_space import is_Berkovich
is_Berkovich(B)
sage.schemes.berkovich.berkovich_space.is_Berkovich_Cp(space)[source]

Check 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_Cp
sage: is_Berkovich_Cp(B)
doctest:warning...
DeprecationWarning: The function is_Berkovich_Cp is deprecated; use 'isinstance(..., Berkovich_Cp)' instead.
See https://github.com/sagemath/sage/issues/38022 for details.
True
>>> from sage.all import *
>>> B = Berkovich_Cp_Projective(Integer(3))
>>> from sage.schemes.berkovich.berkovich_space import is_Berkovich_Cp
>>> is_Berkovich_Cp(B)
doctest:warning...
DeprecationWarning: The function is_Berkovich_Cp is deprecated; use 'isinstance(..., Berkovich_Cp)' instead.
See https://github.com/sagemath/sage/issues/38022 for details.
True
B = Berkovich_Cp_Projective(3)
from sage.schemes.berkovich.berkovich_space import is_Berkovich_Cp
is_Berkovich_Cp(B)