# The space of $$p$$-adic weights¶

A $$p$$-adic weight is a continuous character $$\ZZ_p^\times \to \CC_p^\times$$. These are the $$\CC_p$$-points of a rigid space over $$\QQ_p$$, which is isomorphic to a disjoint union of copies (indexed by $$(\ZZ/p\ZZ)^\times$$) of the open unit $$p$$-adic disc.

Sage supports both “classical points”, which are determined by the data of a Dirichlet character modulo $$p^m$$ for some $$m$$ and an integer $$k$$ (corresponding to the character $$z \mapsto z^k \chi(z)$$) and “non-classical points” which are determined by the data of an element of $$(\ZZ/p\ZZ)^\times$$ and an element $$w \in \CC_p$$ with $$|w - 1| < 1$$.

EXAMPLES:

sage: W = pAdicWeightSpace(17)
sage: W
Space of 17-adic weight-characters defined over '17-adic Field with capped relative precision 20'
sage: R.<x> = QQ[]
sage: L = Qp(17).extension(x^2 - 17, names='a'); L.rename('L')
sage: W.base_extend(L)
Space of 17-adic weight-characters defined over 'L'


We create a simple element of $$\mathcal{W}$$: the algebraic character, $$x \mapsto x^6$$:

sage: kappa = W(6)
sage: kappa(5)
15625
sage: kappa(5) == 5^6
True


A locally algebraic character, $$x \mapsto x^6 \chi(x)$$ for $$\chi$$ a Dirichlet character mod $$p$$:

sage: kappa2 = W(6, DirichletGroup(17, Qp(17)).0^8)
sage: kappa2(5) == -5^6
True
sage: kappa2(13) == 13^6
True


A non-locally-algebraic character, sending the generator 18 of $$1 + 17 \ZZ_{17}$$ to 35 and acting as $$\mu \mapsto \mu^4$$ on the group of 16th roots of unity:

sage: kappa3 = W(35 + O(17^20), 4, algebraic=False)
sage: kappa3(2)
16 + 8*17 + ... + O(17^20)


AUTHORS:

• David Loeffler (2008-9)
class sage.modular.overconvergent.weightspace.AlgebraicWeight(parent, k, chi=None)

A point in weight space corresponding to a locally algebraic character, of the form $$x \mapsto \chi(x) x^k$$ where $$k$$ is an integer and $$\chi$$ is a Dirichlet character modulo $$p^n$$ for some $$n$$.

TESTS:

sage: w = pAdicWeightSpace(23)(12, DirichletGroup(23, QQ).0) # exact
True
sage: w = pAdicWeightSpace(23)(12, DirichletGroup(23, Qp(23)).0) # inexact
True
sage: w is loads(dumps(w)) # elements are not globally unique
False

Lvalue()

Return the value of the p-adic L-function of $$\QQ$$ evaluated at this weight-character. If the character is $$x \mapsto x^k \chi(x)$$ where $$k > 0$$ and $$\chi$$ has conductor a power of $$p$$, this is an element of the number field generated by the values of $$\chi$$, equal to the value of the complex L-function $$L(1-k, \chi)$$. If $$\chi$$ is trivial, it is equal to $$(1 - p^{k-1})\zeta(1-k)$$.

At present this is not implemented in any other cases, except the trivial character (for which the value is $$\infty$$).

TODO: Implement this more generally using the Amice transform machinery in sage/schemes/elliptic_curves/padic_lseries.py, which should clearly be factored out into a separate class.

EXAMPLES:

sage: pAdicWeightSpace(7)(4).Lvalue() == (1 - 7^3)*zeta__exact(-3)
True
0
1 + 2*7 + 7^2 + 3*7^3 + 3*7^5 + 4*7^6 + 2*7^7 + 5*7^8 + 2*7^9 + 3*7^10 + 6*7^11 + 2*7^12 + 3*7^13 + 5*7^14 + 6*7^15 + 5*7^16 + 3*7^17 + 6*7^18 + O(7^19)

chi()

If this character is $$x \mapsto x^k \chi(x)$$ for an integer $$k$$ and a Dirichlet character $$\chi$$, return $$\chi$$.

EXAMPLE:

sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0^14)
sage: kappa.chi()
Dirichlet character modulo 29 of conductor 29 mapping 2 |--> 28 + 28*29 + 28*29^2 + ... + O(29^20)

k()

If this character is $$x \mapsto x^k \chi(x)$$ for an integer $$k$$ and a Dirichlet character $$\chi$$, return $$k$$.

EXAMPLE:

sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0^14)
sage: kappa.k()
13

teichmuller_type()

Return the Teichmuller type of this weight-character $$\kappa$$, which is the unique $$t \in \ZZ/(p-1)\ZZ$$ such that $$\kappa(\mu) = \mu^t$$ for mu a $$(p-1)$$-st root of 1.

For $$p = 2$$ this doesn’t make sense, but we still want the Teichmuller type to correspond to the index of the component of weight space in which $$\kappa$$ lies, so we return 1 if $$\kappa$$ is odd and 0 otherwise.

EXAMPLE:

sage: pAdicWeightSpace(11)(2, DirichletGroup(11,QQ).0).teichmuller_type()
7
14
0

class sage.modular.overconvergent.weightspace.ArbitraryWeight(parent, w, t)

Create the element of p-adic weight space in the given component mapping 1 + p to w. Here w must be an element of a p-adic field, with finite precision.

EXAMPLE:

sage: pAdicWeightSpace(17)(1 + 17^2 + O(17^3), 11, False)
[1 + 17^2 + O(17^3), 11]

teichmuller_type()

Return the Teichmuller type of this weight-character $$\kappa$$, which is the unique $$t \in \ZZ/(p-1)\ZZ$$ such that $$\kappa(\mu) = \mu^t$$ for mu a $$(p-1)$$-st root of 1.

For $$p = 2$$ this doesn’t make sense, but we still want the Teichmuller type to correspond to the index of the component of weight space in which $$\kappa$$ lies, so we return 1 if $$\kappa$$ is odd and 0 otherwise.

EXAMPLES:

sage: pAdicWeightSpace(17)(1 + 3*17 + 2*17^2 + O(17^3), 8, False).teichmuller_type()
8
sage: pAdicWeightSpace(2)(1 + 2 + O(2^2), 1, False).teichmuller_type()
1

class sage.modular.overconvergent.weightspace.WeightCharacter(parent)

Abstract base class representing an element of the p-adic weight space $$Hom(\ZZ_p^\times, \CC_p^\times)$$.

Lvalue()

Return the value of the p-adic L-function of $$\QQ$$, which can be regarded as a rigid-analytic function on weight space, evaluated at this character.

EXAMPLES:

sage: W = pAdicWeightSpace(11)
sage: sage.modular.overconvergent.weightspace.WeightCharacter(W).Lvalue()
Traceback (most recent call last):
...
NotImplementedError

base_extend(R)

Extend scalars to the base ring R (which must have a canonical map from the current base ring)

EXAMPLE:

sage: w = pAdicWeightSpace(17, QQ)(3)
sage: w.base_extend(Qp(17))
3

is_even()

Return True if this weight-character sends -1 to +1.

EXAMPLE:

sage: pAdicWeightSpace(17)(0).is_even()
True
False
sage: pAdicWeightSpace(17)(1 + 17 + O(17^20), 3, False).is_even()
False
sage: pAdicWeightSpace(17)(1 + 17 + O(17^20), 4, False).is_even()
True

is_trivial()

Return True if and only if this is the trivial character.

EXAMPLES:

sage: pAdicWeightSpace(11)(2).is_trivial()
False
False
True

one_over_Lvalue()

Return the reciprocal of the p-adic L-function evaluated at this weight-character. If the weight-character is odd, then the L-function is zero, so an error will be raised.

EXAMPLES:

sage: pAdicWeightSpace(11)(4).one_over_Lvalue()
-12/133
-1/6
Traceback (most recent call last):
...
ZeroDivisionError: Rational division by zero
0
sage: type(_)
<type 'sage.rings.integer.Integer'>


Calculate the q-expansion of the p-adic Eisenstein series of given weight-character, normalised so the constant term is 1.

EXAMPLE:

sage: kappa = pAdicWeightSpace(3)(3, DirichletGroup(3,QQ).0)
1 - 9*q + 27*q^2 - 9*q^3 - 117*q^4 + 216*q^5 + 27*q^6 - 450*q^7 + 459*q^8 - 9*q^9 - 648*q^10 + 1080*q^11 - 117*q^12 - 1530*q^13 + 1350*q^14 + 216*q^15 - 1845*q^16 + 2592*q^17 + 27*q^18 - 3258*q^19 + O(q^20)

values_on_gens()

If $$\kappa$$ is this character, calculate the values $$(\kappa(r), t)$$ where $$r$$ is $$1 + p$$ (or 5 if $$p = 2$$) and $$t$$ is the unique element of $$\ZZ/(p-1)\ZZ$$ such that $$\kappa(\mu) = \mu^t$$ for $$\mu$$ a (p-1)st root of unity. (If $$p = 2$$, we take $$t$$ to be 0 or 1 according to whether $$\kappa$$ is odd or even.) These two values uniquely determine the character $$\kappa$$.

EXAMPLES:

sage: W=pAdicWeightSpace(11); W(2).values_on_gens()
(1 + 2*11 + 11^2 + O(11^20), 2)
sage: W(2, DirichletGroup(11, QQ).0).values_on_gens()
(1 + 2*11 + 11^2 + O(11^20), 7)
sage: W(1 + 2*11 + O(11^5), 4, algebraic = False).values_on_gens()
(1 + 2*11 + O(11^5), 4)

class sage.modular.overconvergent.weightspace.WeightSpace_class(p, base_ring)

The space of $$p$$-adic weight-characters $$\mathcal{W} = {\rm Hom}(\ZZ_p^\times, \CC_p^\times)$$. This isomorphic to a disjoint union of $$(p-1)$$ open discs of radius 1 (or 2 such discs if $$p = 2$$), with the parameter on the open disc corresponding to the image of $$1 + p$$ (or 5 if $$p = 2$$)

TESTS:

sage: W = pAdicWeightSpace(3)
True

base_extend(R)

Extend scalars to the ring R. There must be a canonical coercion map from the present base ring to R.

EXAMPLE:

sage: W = pAdicWeightSpace(3, QQ)
sage: W.base_extend(Qp(3))
Space of 3-adic weight-characters defined over '3-adic Field with capped relative precision 20'
sage: W.base_extend(IntegerModRing(12))
Traceback (most recent call last):
...
TypeError: No coercion map from 'Rational Field' to 'Ring of integers modulo 12' is defined

prime()

Return the prime $$p$$ such that this is a $$p$$-adic weight space.

EXAMPLE:

sage: pAdicWeightSpace(17).prime()
17

zero_element()

Return the zero of this weight space.

EXAMPLES:

sage: W = pAdicWeightSpace(17)
sage: W.zero_element()
0

sage.modular.overconvergent.weightspace.WeightSpace_constructor(p, base_ring=None)

Construct the p-adic weight space for the given prime p. A $$p$$-adic weight is a continuous character $$\ZZ_p^\times \to \CC_p^\times$$. These are the $$\CC_p$$-points of a rigid space over $$\QQ_p$$, which is isomorphic to a disjoint union of copies (indexed by $$(\ZZ/p\ZZ)^\times$$) of the open unit $$p$$-adic disc.

Note that the “base ring” of a $$p$$-adic weight is the smallest ring containing the image of $$\ZZ$$; in particular, although the default base ring is $$\QQ_p$$, base ring $$\QQ$$ will also work.

EXAMPLES:

sage: pAdicWeightSpace(3) # indirect doctest
Space of 3-adic weight-characters defined over '3-adic Field with capped relative precision 20'
Space of 3-adic weight-characters defined over 'Rational Field'
Traceback (most recent call last):
...
ValueError: p must be prime


#### Previous topic

Eta-products on modular curves $$X_0(N)$$

#### Next topic

Overconvergent p-adic modular forms for small primes