A -adic weight is a continuous character
. These are the
-points of a rigid space over
, which is isomorphic to a disjoint union of copies (indexed by
) of the open unit
-adic disc.
Sage supports both “classical points”, which are determined by the data of a
Dirichlet character modulo for some
and an integer
(corresponding
to the character
) and “non-classical points” which are
determined by the data of an element of
and
an element
with
.
EXAMPLES:
sage: W = pAdicWeightSpace(17)
sage: W
Space of 17-adic weight-characters defined over '17-adic Field with capped relative precision 20'
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 : the algebraic character,
:
sage: kappa = W(6)
sage: kappa(5)
15625
sage: kappa(5) == 5^6
True
A locally algebraic character, for
a Dirichlet
character mod
:
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 to 35 and acting as
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:
A point in weight space corresponding to a locally algebraic character, of
the form where
is an integer and
is a
Dirichlet character modulo
for some
.
TESTS:
sage: w = pAdicWeightSpace(23)(12, DirichletGroup(23, QQ).0) # exact
sage: w == loads(dumps(w))
True
sage: w = pAdicWeightSpace(23)(12, DirichletGroup(23, Qp(23)).0) # inexact
sage: w == loads(dumps(w))
True
sage: w is loads(dumps(w)) # elements are not globally unique
False
Return the value of the p-adic L-function of evaluated at
this weight-character. If the character is
where
and
has conductor a power of
, this is an
element of the number field generated by the values of
, equal to
the value of the complex L-function
. If
is
trivial, it is equal to
.
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)
Evaluate this character at an element of .
EXAMPLES:
Exact answers are returned when this is possible:
sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, QQ).0)
sage: kappa(1)
1
sage: kappa(0)
0
sage: kappa(12)
-106993205379072
sage: kappa(-1)
-1
sage: kappa(13 + 4*29 + 11*29^2 + O(29^3))
9 + 21*29 + 27*29^2 + O(29^3)
When the character chi is defined over a p-adic field, the results returned are inexact:
sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0^14)
sage: kappa(1)
1 + O(29^20)
sage: kappa(0)
0
sage: kappa(12)
17 + 11*29 + 7*29^2 + 4*29^3 + 5*29^4 + 2*29^5 + 13*29^6 + 3*29^7 + 18*29^8 + 21*29^9 + 28*29^10 + 28*29^11 + 28*29^12 + 28*29^13 + 28*29^14 + 28*29^15 + 28*29^16 + 28*29^17 + 28*29^18 + 28*29^19 + O(29^20)
sage: kappa(12) == -106993205379072
True
sage: kappa(-1) == -1
True
sage: kappa(13 + 4*29 + 11*29^2 + O(29^3))
9 + 21*29 + 27*29^2 + O(29^3)
Create a locally algebraic weight-character.
EXAMPLES:
sage: pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0)
(13, 29, [2 + 2*29 + ... + O(29^20)])
String representation of self.
EXAMPLES:
sage: pAdicWeightSpace(17)(2)._repr_()
'2'
sage: pAdicWeightSpace(17)(2, DirichletGroup(17, QQ).0)._repr_()
'(2, 17, [-1])'
sage: pAdicWeightSpace(17)(2, DirichletGroup(17, QQ).0^2)._repr_()
'2'
If this character is for an integer
and a
Dirichlet character
, return
.
EXAMPLE:
sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0^14)
sage: kappa.chi()
[28 + 28*29 + 28*29^2 + ... + O(29^20)]
If this character is for an integer
and a
Dirichlet character
, return
.
EXAMPLE:
sage: kappa = pAdicWeightSpace(29)(13, DirichletGroup(29, Qp(29)).0^14)
sage: kappa.k()
13
Return the Teichmuller type of this weight-character , which is
the unique
such that
for mu a
-st root of 1.
For 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
lies, so we return 1 if
is odd and 0 otherwise.
EXAMPLE:
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
Evaluate this character at an element of .
EXAMPLES:
sage: kappa = pAdicWeightSpace(23)(1 + 23^2 + O(23^20), 4, False)
sage: kappa(2)
16 + 7*23 + 7*23^2 + 16*23^3 + 23^4 + 20*23^5 + 15*23^7 + 11*23^8 + 12*23^9 + 8*23^10 + 22*23^11 + 16*23^12 + 13*23^13 + 4*23^14 + 19*23^15 + 6*23^16 + 7*23^17 + 11*23^19 + O(23^20)
sage: kappa(-1)
1 + O(23^20)
sage: kappa(23)
0
sage: kappa(2 + 2*23 + 11*23^2 + O(23^3))
16 + 7*23 + O(23^3)
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]
String representation of this character.
EXAMPLES:
sage: pAdicWeightSpace(97)(1 + 2*97 + O(97^20), 12, False)._repr_()
'[1 + 2*97 + O(97^20), 12]'
Return the Teichmuller type of this weight-character , which is
the unique
such that
for mu a
-st root of 1.
For 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
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
Abstract base class representing an element of the p-adic weight space
.
Return the value of the p-adic L-function of , 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()
...
NotImplementedError
Compare self to other.
EXAMPLES:
sage: W=pAdicWeightSpace(11)
sage: W(2) == W(3)
False
sage: W(2, DirichletGroup(11, QQ).0) == W(2)
False
sage: W(2, DirichletGroup(11, QQ).0) == W(144 + O(11^20), 7, False)
True
Initialisation function.
EXAMPLE:
sage: pAdicWeightSpace(17)(0)
0
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
Return True if this weight-character sends -1 to +1.
EXAMPLE:
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
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
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()
...
ZeroDivisionError: Rational division by zero
sage: pAdicWeightSpace(11)(0).one_over_Lvalue()
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)
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)
If is this character, calculate the values
where
is
(or 5 if
) and
is the unique element of
such that
for
a (p-1)st root of unity. (If
, we take
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)
The space of -adic weight-characters
. This isomorphic to a
disjoint union of
open discs of radius 1 (or 2 such discs if
), with the parameter on the open disc corresponding to the image of
(or 5 if
)
TESTS:
sage: W = pAdicWeightSpace(3)
sage: W is loads(dumps(W))
True
Create an element of this space.
If algebraic = True (the default), create a locally algebraic
character. The arguments should be with
and
a Dirichlet character of
-power conductor defined over a
-adic field; this corresponds to the weight-character
. If
is omitted, it defaults to the trivial character.
If algebraic = False, create a general character. The arguments are
now (t, w) where and
with
. This corresponds to the character
satisfying
where
is a
-st
root of unity, and
.
EXAMPLES:
sage: W = pAdicWeightSpace(17)
sage: W(4)
4
sage: W(4, DirichletGroup(17, Qp(17)).0)
(4, 17, [3 + 13*17 + ... + O(17^20)])
sage: W(1 + O(17^5), 4, algebraic = False)
[1 + O(17^5), 4]
Initialisation function.
EXAMPLE:
sage: pAdicWeightSpace(17)
Space of 17-adic weight-characters defined over '17-adic Field with capped relative precision 20'
Used for pickling.
EXAMPLE:
sage: pAdicWeightSpace(3).__reduce__()
(<function WeightSpace_constructor at ...>, (3, 3-adic Field with capped relative precision 20))
Canonical coercion of x into self.
TESTS:
sage: W1 = pAdicWeightSpace(23, QQ)
sage: W2 = W1.base_extend(Qp(23))
sage: w = W1(3)
sage: W2.coerce(w) # indirect doctest
3
Convert in a weight-character whose parent is different from self (with has the prime, but possibly different base ring).
EXAMPLE:
sage: W1 = pAdicWeightSpace(23, Qp(3))
sage: W2 = pAdicWeightSpace(23, QQ)
sage: w = W1(3)
sage: W2._coerce_in_wtchar(w)
3
String representation of self.
EXAMPLE:
sage: pAdicWeightSpace(17)._repr_()
"Space of 17-adic weight-characters defined over '17-adic Field with capped relative precision 20'"
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))
...
TypeError: No coercion map from 'Rational Field' to 'Ring of integers modulo 12' is defined
Return the prime such that this is a
-adic weight space.
EXAMPLE:
sage: pAdicWeightSpace(17).prime()
17
Construct the p-adic weight space for the given prime p. A -adic weight
is a continuous character
.
These are the
-points of a rigid space over
,
which is isomorphic to a disjoint union of copies (indexed by
) of the open unit
-adic disc.
Note that the “base ring” of a -adic weight is the smallest ring
containing the image of
; in particular, although the default base
ring is
, base ring
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)
...
ValueError: p must be prime