#4667: [with patch, positive review, needs rebase] quadratic twists for p-adic
L-functions
---------------------------+------------------------------------------------
Reporter: wuthrich | Owner: was
Type: enhancement | Status: new
Priority: minor | Milestone: sage-3.4.1
Component: number theory | Keywords: padic l-functions, quadratic twists
---------------------------+------------------------------------------------
Changes (by mabshoff):
* milestone: sage-3.4 => sage-3.4.1
Old description:
> This ticket is aimed at implementing p-adic L-function of quadratic
> twists of elliptic curves.
>
> Of course one could compute the modular symbols for the twist and then
> the p-adic L-function, but it is much faster to use the simple formula
> for the twisted modular symbols as a sum of
> modular symbols. See section 8 in Mazur-Tate-Teitelbaum = [MTT].
>
> Here is a list of things implemented and changed by this patch. Maybe
> this is too long and it
> would be preferable to split it up into smaller patches. I will add more
> documentation and more compatibility checks in the docstring.
>
> == ell_modular_symbol.py ==
>
> I changed completely the normalization. Until now, the normalization was
> done in such a way as to guarantee that [0]+, the modular_symbol(0) for
> sign=+1, is equal to L(E_0,1)/Omega_E_0, where E_0 is the optimal X_0(N)
> curve in the isogeny class of E and Omega_* is the least positive real
> period of E. Up to sign, which was arbitrary, and up to a factor 2, which
> comes from the fact that we do not know that the Manin-constant is 1 as
> it should be. (I hope I got this right).
>
> Now instead I normalize it in such a way as to make sure that [0]+ is
> equal to L(E,1)/Omega_E. So the result will depend on the curve E and not
> only on the isogeny class. Let {0}+ be the non-normalized modular symbol.
> If the above algebraic L-value is non-zero, then so is {0}+ and they are
> rational multiples of each other with small numerator and denominator. So
> we just compute a real approximation to this fraction and we scale {0}+
> to get [0]+. If the L-value is zero, then we try to use a quadratic twist
> of E by a small positive (or later negative) fundamental discriminant,
> hoping that we will hit one that is not zero. If we fail to find one, we
> have to go back to the previous way of normalizing, but multiplying with
> Omega_E_0/Omega_E as to make sure that the missed factor +-1/2 is the
> same for all curves in the isogeny class. And we issue a warning to the
> user.
>
> Right now, I substituted the normalization by mine, it would be easy to
> change the optional argument in such a way as to allow the user to choose
> between the two normalizations.
>
> I have tested the correctness of this for hundreds of curves, using
> twists by -31 and 37 that do
> not appear in the code. Of course, there will be curves for which the new
> normalization fails. For negative modular symbols we only use negative
> twists (in order to avoid an obvious infinite loop). But we are safe to
> assume that negative modular symbols are not very often used without the
> positive ones.
>
> I have not rewritten the normalization of modular symbols coming from
> ec_lib in padic_lseries.py. This should be done, but I have no idea if
> the negative symbols can be computed with that library.
>
> Added more docstrings.
>
> == padic_lseries.py ==
>
> I got rid of _quotient_of_period which is no longer needed because of the
> above normalization.
> I added a try around the cremona-label look-up. Caused a bug before.
> modular_symbol has now an optional argument to twist by a fundamental
> discriminant D. Similar for measure and series.
> New we need a function to compute the quotient of Omega_E by
> Omega_(ED)*sqrt(D), if D>0, or Omega-_E by Omega_(ED)*sqrt(-D), if D<0.
> According to [MTT] this should be 1 or 2. This
> is done in _quotient_of_periods_to_twist.
>
> Furthermore, I have changed the sign of the Dp-values height, just like I
> had to change the sign in the canonical p-adic height in the ordinary
> case.
>
> So far I have tested this on good ordinary primes for curves of rank 0
> and rank 1 and some rank 2 curves. I have also checked a few
> supersingular cases.
>
> == padics.py ==
>
> I changed the sign of the padic height. It is now clear that there must
> be a -1 in front to make sure that the p-adic BSD conjecture holds as
> stated in [MTT].
> I also removed the statement that the equation must be globally minimal
> to compute the height as the gens() no longer fails for non-minimal
> curves.
>
> == ell_rational_field.py ==
>
> adjusted the documentation according to the change in ell_modular_symbol.
> added a function minimal_quadratic_twist that find a twist of E with
> minimal conductor. This is used in sha_tate.py but could be of use later
> in rank as well.
>
> todo : normalization if using ec_lib (?)[[BR]]
> todo : add in rank() the possibility to use modular-symbols for a twisted
> curve with low conductor
>
> == sha_tate.py ==
>
> an_padic has now an optional argument to control whether the modular
> symbols computations can be done on a minimal quadratic twist instead.
New description:
This ticket is aimed at implementing p-adic L-function of quadratic twists
of elliptic curves.
Of course one could compute the modular symbols for the twist and then the
p-adic L-function, but it is much faster to use the simple formula for the
twisted modular symbols as a sum of
modular symbols. See section 8 in Mazur-Tate-Teitelbaum = [MTT].
Here is a list of things implemented and changed by this patch. Maybe this
is too long and it
would be preferable to split it up into smaller patches. I will add more
documentation and more compatibility checks in the docstring.
== ell_modular_symbol.py ==
I changed completely the normalization. Until now, the normalization was
done in such a way as to guarantee that [0]+, the modular_symbol(0) for
sign=+1, is equal to L(E_0,1)/Omega_E_0, where E_0 is the optimal X_0(N)
curve in the isogeny class of E and Omega_* is the least positive real
period of E. Up to sign, which was arbitrary, and up to a factor 2, which
comes from the fact that we do not know that the Manin-constant is 1 as it
should be. (I hope I got this right).
Now instead I normalize it in such a way as to make sure that [0]+ is
equal to L(E,1)/Omega_E. So the result will depend on the curve E and not
only on the isogeny class. Let {0}+ be the non-normalized modular symbol.
If the above algebraic L-value is non-zero, then so is {0}+ and they are
rational multiples of each other with small numerator and denominator. So
we just compute a real approximation to this fraction and we scale {0}+ to
get [0]+. If the L-value is zero, then we try to use a quadratic twist of
E by a small positive (or later negative) fundamental discriminant, hoping
that we will hit one that is not zero. If we fail to find one, we have to
go back to the previous way of normalizing, but multiplying with
Omega_E_0/Omega_E as to make sure that the missed factor +-1/2 is the same
for all curves in the isogeny class. And we issue a warning to the user.
Right now, I substituted the normalization by mine, it would be easy to
change the optional argument in such a way as to allow the user to choose
between the two normalizations.
I have tested the correctness of this for hundreds of curves, using twists
by -31 and 37 that do
not appear in the code. Of course, there will be curves for which the new
normalization fails. For negative modular symbols we only use negative
twists (in order to avoid an obvious infinite loop). But we are safe to
assume that negative modular symbols are not very often used without the
positive ones.
I have not rewritten the normalization of modular symbols coming from
ec_lib in padic_lseries.py. This should be done, but I have no idea if the
negative symbols can be computed with that library.
Added more docstrings.
== padic_lseries.py ==
I got rid of _quotient_of_period which is no longer needed because of the
above normalization.
I added a try around the cremona-label look-up. Caused a bug before.
modular_symbol has now an optional argument to twist by a fundamental
discriminant D. Similar for measure and series.
New we need a function to compute the quotient of Omega_E by
Omega_(ED)*sqrt(D), if D>0, or Omega-_E by Omega_(ED)*sqrt(-D), if D<0.
According to [MTT] this should be 1 or 2. This
is done in _quotient_of_periods_to_twist.
Furthermore, I have changed the sign of the Dp-values height, just like I
had to change the sign in the canonical p-adic height in the ordinary
case.
So far I have tested this on good ordinary primes for curves of rank 0 and
rank 1 and some rank 2 curves. I have also checked a few supersingular
cases.
== padics.py ==
I changed the sign of the padic height. It is now clear that there must be
a -1 in front to make sure that the p-adic BSD conjecture holds as stated
in [MTT].
I also removed the statement that the equation must be globally minimal to
compute the height as the gens() no longer fails for non-minimal curves.
== ell_rational_field.py ==
adjusted the documentation according to the change in ell_modular_symbol.
added a function minimal_quadratic_twist that find a twist of E with
minimal conductor. This is used in sha_tate.py but could be of use later
in rank as well.
todo : normalization if using ec_lib (?)[[BR]]
todo : add in rank() the possibility to use modular-symbols for a twisted
curve with low conductor
== sha_tate.py ==
an_padic has now an optional argument to control whether the modular
symbols computations can be done on a minimal quadratic twist instead.
--
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/4667#comment:8>
Sage <http://sagemath.org/>
Sage - Open Source Mathematical Software: Building the Car Instead of
Reinventing the Wheel
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---