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