The space of p-adic weights¶
A p-adic weight is a continuous character Z×p→C×p. These are the Cp-points of a rigid space over Qp, which is isomorphic to a disjoint union of copies (indexed by (Z/pZ)×) of the open unit p-adic disc.
Sage supports both “classical points”, which are determined by the data of a Dirichlet character modulo pm for some m and an integer k (corresponding to the character z↦zkχ(z)) and “non-classical points” which are determined by the data of an element of (Z/pZ)× and an element w∈Cp 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 W: the algebraic character, x↦x6:
sage: kappa = W(6)
sage: kappa(5)
15625
sage: kappa(5) == 5^6
True
A locally algebraic character, x↦x6χ(x) for χ 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+17Z17 to 35 and acting as μ↦μ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)¶
Bases:
sage.modular.overconvergent.weightspace.WeightCharacter
A point in weight space corresponding to a locally algebraic character, of the form x↦χ(x)xk where k is an integer and χ is a Dirichlet character modulo pn for some n.
- Lvalue()¶
Return the value of the p-adic L-function of Q evaluated at this weight-character.
If the character is x↦xkχ(x) where k>0 and χ has conductor a power of p, this is an element of the number field generated by the values of χ, equal to the value of the complex L-function L(1−k,χ). If χ is trivial, it is equal to (1−pk−1)ζ(1−k).
At present this is not implemented in any other cases, except the trivial character (for which the value is ∞).
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 sage: pAdicWeightSpace(7)(5, DirichletGroup(7, Qp(7)).0^4).Lvalue() 0 sage: pAdicWeightSpace(7)(6, DirichletGroup(7, Qp(7)).0^4).Lvalue() 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↦xkχ(x) for an integer k and a Dirichlet character χ, return χ.
EXAMPLES:
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↦xkχ(x) for an integer k and a Dirichlet character χ, return k.
EXAMPLES:
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 κ.
This is the unique t∈Z/(p−1)Z such that κ(μ)=μt for μ a (p−1)-st root of 1.
For p=2 this does not make sense, but we still want the Teichmuller type to correspond to the index of the component of weight space in which κ lies, so we return 1 if κ is odd and 0 otherwise.
EXAMPLES:
sage: pAdicWeightSpace(11)(2, DirichletGroup(11,QQ).0).teichmuller_type() 7 sage: pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0).teichmuller_type() 14 sage: pAdicWeightSpace(2)(3, DirichletGroup(4,QQ).0).teichmuller_type() 0
- class sage.modular.overconvergent.weightspace.ArbitraryWeight(parent, w, t)¶
Bases:
sage.modular.overconvergent.weightspace.WeightCharacter
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.
EXAMPLES:
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 κ.
This is the unique t∈Z/(p−1)Z such that κ(μ)=μt for mu a (p−1)-st root of 1.
For p=2 this does not make sense, but we still want the Teichmuller type to correspond to the index of the component of weight space in which κ lies, so we return 1 if κ 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)¶
Bases:
sage.structure.element.Element
Abstract base class representing an element of the p-adic weight space Hom(Z×p,C×p).
- Lvalue()¶
Return the value of the p-adic L-function of Q, 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.
The ring R must have a canonical map from the current base ring.
EXAMPLES:
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.
EXAMPLES:
sage: pAdicWeightSpace(17)(0).is_even() True sage: pAdicWeightSpace(17)(11).is_even() 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 sage: pAdicWeightSpace(11)(2, DirichletGroup(11, QQ).0).is_trivial() False sage: pAdicWeightSpace(11)(0).is_trivial() 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 sage: pAdicWeightSpace(11)(3, DirichletGroup(11, QQ).0).one_over_Lvalue() -1/6 sage: pAdicWeightSpace(11)(3).one_over_Lvalue() Traceback (most recent call last): ... ZeroDivisionError: rational division by zero sage: pAdicWeightSpace(11)(0).one_over_Lvalue() 0 sage: type(_) <type 'sage.rings.integer.Integer'>
- pAdicEisensteinSeries(ring, prec=20)¶
Calculate the q-expansion of the p-adic Eisenstein series of given weight-character, normalised so the constant term is 1.
EXAMPLES:
sage: kappa = pAdicWeightSpace(3)(3, DirichletGroup(3,QQ).0) sage: kappa.pAdicEisensteinSeries(QQ[['q']], 20) 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 κ is this character, calculate the values (κ(r),t) where r is 1+p (or 5 if p=2) and t is the unique element of Z/(p−1)Z such that κ(μ)=μt for μ a (p-1)st root of unity. (If p=2, we take t to be 0 or 1 according to whether κ is odd or even.) These two values uniquely determine the character κ.
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)¶
Bases:
sage.structure.parent.Parent
The space of p-adic weight-characters W=Hom(Z×p,C×p).
This is 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)
- base_extend(R)¶
Extend scalars to the ring R.
There must be a canonical coercion map from the present base ring to R.
EXAMPLES:
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.
EXAMPLES:
sage: pAdicWeightSpace(17).prime() 17
- zero()¶
Return the zero of this weight space.
EXAMPLES:
sage: W = pAdicWeightSpace(17) sage: W.zero() 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 Z×p→C×p. These are the Cp-points of a rigid space over Qp, which is isomorphic to a disjoint union of copies (indexed by (Z/pZ)×) 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 Z; in particular, although the default base ring is Qp, base ring Q 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 sage: pAdicWeightSpace(3, QQ) Space of 3-adic weight-characters defined over Rational Field sage: pAdicWeightSpace(10) Traceback (most recent call last): ... ValueError: p must be prime