Hi Kevin,
Thanks for your suggestion. You are right; we only need to find the roots
of the p-th division polynomial of P in Kq. The problem is embedding K in
Kq which is kind of the same problem of viewing P as an element of E(Kq). I
have made some progress on doing this. First of all, I realized that sage
doesn't actually compute the basic Heegner point over K. It can find the
one defined over the Hilbert class field of K. Then one has to take the
trace to K. I'll try to code this trace later. I will present an example
using K=Q(sqrt(-11)) which has class number 1 so we don't have to worry
about the Hilbert class field.
Let E be the elliptic curve 75a1. P=E.heegner_point(-11) and
Q=P.point_exact(). Q is the point (-2 : a :1). One would think that "a" is
a root of x^2+11, but it turns out (using parent() to check) that it is the
root of f=x^2+x+3 which actually defines the same extension K. Now let p=79
which is inert in K. We let Qp be Q_{79} in sage. Then we define
W.<b>=Qp.ext(f). E_local=E.base_extend(W). Since b is a root of the
polynomial f (defined over Qp) therefore to view Q as a point in W=Kq we
write in sage: Q2=E_local([-2,b]). Hence I must write code to define a new
point replacing "a" by "b".
Finally we compute Q2.is_divisible_by(p). This computation takes a long
time! let g be the p-th division polynomial of Q2. The source code for the
function is_divisible_by() shows that this function (using the polynomial
g) finds all the points R such that pR=Q2 and then checks if this list is
empty or not. All I need is to check if the polynomial g has a root in W. I
seem to remember reading somewhere there was a "fast" algorithm for
checking if a polynomial has a root in a p-adic field. I'll look into this
now
Ahmed
On Thursday, February 6, 2020 at 11:21:23 AM UTC+3, kevin lui wrote:
>
> This is probably naive. I'm also not sure how to easily consider P as an
> element of E(Kq). But perhaps we can compute the p-th division polynomial
> of P as an element of E(K). Embed this polynomial into Kq and find the
> x-coordinates by computing the roots in Kq. Then lift the roots in
> `E.change_ring(Kq)`.
>
> This is how division_points works under the hood anyways but it won't
> require you to view P as an element of E(Kq).
>
> On Wednesday, February 5, 2020 at 3:01:06 PM UTC-8, Ahmed Matar wrote:
>>
>> I have an elliptic curve E defined over the rationals and K is an
>> imaginary quadratic field. I have a Heegner point P for E over K. I also
>> have a rational prime p. Let q be a prime of K above p. I would like to use
>> Sage to check whether the point P is divisible by p in E(K) and also in
>> E(Kq) where Kq is the completion of K at the prime q. To check this in E(K)
>> is easy; one can use the heegner_index() function or one can use the
>> division_points() function. I am wondering if there is a way in Sage to do
>> my required check in E(Kq). It seems to me that completions of number
>> fields at finite primes are not defined in Sage. One can define in sage Kq
>> as an extension field of Qp but then one must consider P as an element of
>> E(Kq) via an appropriate embedding and I'm unsure how to do this.
>>
>> Any ideas on how I can do my local computation? I need to do a bunch of
>> these local computations for a paper I'm working on.
>>
>
--
You received this message because you are subscribed to the Google Groups
"sage-nt" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sage-nt/8a2a14cf-cde1-4d0f-a0a6-378a786ec0cf%40googlegroups.com.