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[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 .If this Berkovich space is backed by a
-adic field, then an embedding is already specified, and this returnsNone
.OUTPUT:
An ideal of a
base_ring
ifbase_ring
is a number field.A prime of
ifbase_ring
is .None
ifbase_ring
is a -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 -adic field.OUTPUT:
True
if this Berkovich space was created with a -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
.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
-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
>>> 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 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 -adic field of capped-relative precision one. For high precision, pass in a high precision -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
: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
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
-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
.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
-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
>>> 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 -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
.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
-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
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) 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 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_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)