I got it in another version! Thank you very much!

On Thursday, April 17, 2014 6:18:56 PM UTC+2, John Cremona wrote:
>
> Your code works ok with Sage 6.1.1 (apart from a small slip in the 
> code you posted:  the line 
> FFps=PolynomialRing(Fps) 
> should say 
> FFps<X>=PolynomialRing(Fps) 
>
> and the result is 
>
> x^6 + (973912*b + 2535329)*x^5 + (416282*b + 3608920)*x^4 + (686636*b 
> + 908282)*x^3 + (2100014*b + 2063451)*x^2 + (2563113*b + 751714)*x + 
> 2687623*b + 1658379 
>
>
> On 17 April 2014 09:05, Irene <irene....@gmail.com <javascript:>> wrote: 
> > p=3700001 
> > Fp=GF(p) 
> > E=EllipticCurve([Fp(3),Fp(5)]) 
> > j=E.j_invariant() 
> > l=13#Atkin prime 
> > n=((l-1)/2).round() 
> > r=2# Phi_13 factorize in factors of degree 2 
> > s=12#Psi_13 factorize in factors of degree 12 
> > 
> > #repsq(a,n) computes a^n 
> > def repsq(a,n): 
> >     B = Integer(n).binary() 
> >     C=list(B) 
> >     k=len(B)-1 
> >     bk=a 
> >     i=1 
> >     while i <= k: 
> >         if C[i]=="1": 
> >             bk=(bk^2)*a 
> >         else: 
> >             bk=bk^2 
> >         i=i+1 
> >     return bk 
> > 
> > d=E.division_polynomial(13) 
> > Fps=GF(repsq(p,s),'a') 
> > a=Fps.gen() 
> > Fpr=GF(repsq(p,r),'b') 
> > b=Fpr.gen() 
> > FFps=PolynomialRing(Fps) 
> > Fl=GF(l) 
> > c=GF(2) 
> > rts=d.roots(Fps,multiplicities=False) 
> > Px=rts[0] 
> > Py2=Px^3+3*Px+5 
> > c=Fl.multiplicative_generator() 
> > 
> > def produx(n,Qx): 
> >     if is_odd(n): 
> > 
> > 
> pro=Qx-(E.division_polynomial(n-1,(Qx,1),two_torsion_multiplicity=1)*E.division_polynomial(n+1,(Qx,1),two_torsion_multiplicity=1)*
>  
>
> > 
> (Qx^3+3*Qx+5))/((E.division_polynomial(n,(Qx,1),two_torsion_multiplicity=1)^2))
>  
>
> >     else: 
> > 
> > 
> pro=Qx-(E.division_polynomial(n-1,(Qx,1),two_torsion_multiplicity=1)*E.division_polynomial(n+1,(Qx,1),two_torsion_multiplicity=1))/((Qx^3+3*Qx+5)*E.division_polynomial(n,(Qx,1),two_torsion_multiplicity=1)^2)
>  
>
> >     return pro 
> > 
> > 
> Ep=(X-produx(2,Px))*(X-produx(4,Px))*(X-produx(8,Px))*(X-produx(3,Px))*(X-produx(6,Px))*(X-produx(12,Px))
>  
>
> > 
> > bb=b.minpoly().roots(Fps)[0][0] 
> > i=Fpr.hom([bb],Fps) 
> > j=i.section() 
> > PolynomialRing(Fpr,'x')([j(c) for c in Ep.coeffs()]) 
> > 
> > That was the code, and the version is 5.11. Maybe the problem is because 
> the 
> > version is too old, but I was using another version and I got many 
> problems 
> > and right now I don't have another option. 
> > 
> > On Thursday, April 17, 2014 5:47:32 PM UTC+2, John Cremona wrote: 
> >> 
> >> On 17 April 2014 08:43, Irene <irene....@gmail.com> wrote: 
> >> > I think that this is exactly what I need. Nevertheless I cannot use 
> >> > neither 
> >> > i.section() nor i.inverse_image(). The second one because of the same 
> >> > reason 
> >> > as you, and the first one when I try it is says "TypeError: 
> 'NoneType' 
> >> > object is not callable". 
> >> 
> >> You'll have to post your actual code (and say which Sage version) for 
> >> us to help debug that! 
> >> 
> >> John 
> >> 
> >> > 
> >> > 
> >> > On Thursday, April 17, 2014 12:07:18 PM UTC+2, John Cremona wrote: 
> >> >> 
> >> >> OK, that makes sense now.  It boils down to this: given an element 
> of 
> >> >> F12=GF(p^12) which happens to lie in F2 = GF(p^2), how to express it 
> >> >> in terms of a generator of F2.  This is not quite as easy as it 
> should 
> >> >> be but this works (assuming that you have defined F12 with generator 
> a 
> >> >> and F2 with generator b): 
> >> >> 
> >> >> sage: bb = b.minpoly().roots(F12)[0][0] 
> >> >> sage: i = F2.hom([bb],F12) 
> >> >> sage: j = i.section() 
> >> >> 
> >> >> Here we have defined an embedding i of F2 into F12 by find a place 
> to 
> >> >> map b (called bb) and set j to be an inverse to i.  (I think we 
> should 
> >> >> be use i.inverse_image() but that gave me a NotImplementedError, 
> which 
> >> >> is a pity since I have used sort of construction easily in 
> extensions 
> >> >> of number fields). 
> >> >> 
> >> >> Now if f is your polynomial in F12[x] whose coefficients lie in F2 
> you 
> >> >> can 
> >> >> say 
> >> >> 
> >> >> sage: PolynomialRing(F2,'X')([j(c) for c in f.coeffs()]) 
> >> >> 
> >> >> to get what you want, I hope! 
> >> >> 
> >> >> John 
> >> >> 
> >> >> On 17 April 2014 02:52, Irene <irene....@gmail.com> wrote: 
> >> >> > Sorry, I didn't write it correctly. I meant GF(p^12,'a') instead 
> of 
> >> >> > GF(p^13,'a'). As 2 divides 12, GF(p^12,'a') is an extension of 
> >> >> > GF(p^2,'b'). 
> >> >> > My question is the same now with the correct data. 
> >> >> > 
> >> >> > On Thursday, April 17, 2014 11:04:40 AM UTC+2, John Cremona wrote: 
> >> >> >> 
> >> >> >> On 17 April 2014 01:55, Irene <irene....@gmail.com> wrote: 
> >> >> >> > Hello! 
> >> >> >> > 
> >> >> >> > I want to define a polynomial that I know lies in 
> GF(p^2,'b')[x], 
> >> >> >> > p=3700001. 
> >> >> >> > The problem is that I have to define it as a product 
> >> >> >> > E=(X-a_1)*(X-a_2)*(X-a_3)*(X-a_4)*(X-a_5)*(X-a_6), where every 
> a_j 
> >> >> >> > is 
> >> >> >> > in 
> >> >> >> > GF(p^13,'a')[X]. 
> >> >> >> > I tried to do GF(p^2,'b')[x](E), but then Sage just changes the 
> >> >> >> > generator 
> >> >> >> > 'a' and writes the same expression with the generator 'b'. 
> >> >> >> > Any idea about how to do this? 
> >> >> >> > Thank you!! 
> >> >> >> 
> >> >> >> Did you write that correctly?  GF(p^13) is not an extension of 
> >> >> >> GF(p^2).  If a1 is in GF(p^13) then a1.minpoly() will give its 
> min 
> >> >> >> poly, in GF(p)[x]. 
> >> >> >> 
> >> >> >> John Cremona 
> >> >> >> 
> >> >> >> > 
> >> >> >> > -- 
> >> >> >> > You received this message because you are subscribed to the 
> Google 
> >> >> >> > Groups 
> >> >> >> > "sage-support" group. 
> >> >> >> > To unsubscribe from this group and stop receiving emails from 
> it, 
> >> >> >> > send 
> >> >> >> > an 
> >> >> >> > email to sage-support...@googlegroups.com. 
> >> >> >> > To post to this group, send email to sage-s...@googlegroups.com. 
>
> >> >> >> > Visit this group at http://groups.google.com/group/sage-support. 
>
> >> >> >> > For more options, visit https://groups.google.com/d/optout. 
> >> >> > 
> >> >> > -- 
> >> >> > You received this message because you are subscribed to the Google 
> >> >> > Groups 
> >> >> > "sage-support" group. 
> >> >> > To unsubscribe from this group and stop receiving emails from it, 
> >> >> > send 
> >> >> > an 
> >> >> > email to sage-support...@googlegroups.com. 
> >> >> > To post to this group, send email to sage-s...@googlegroups.com. 
> >> >> > Visit this group at http://groups.google.com/group/sage-support. 
> >> >> > For more options, visit https://groups.google.com/d/optout. 
> >> > 
> >> > -- 
> >> > You received this message because you are subscribed to the Google 
> >> > Groups 
> >> > "sage-support" group. 
> >> > To unsubscribe from this group and stop receiving emails from it, 
> send 
> >> > an 
> >> > email to sage-support...@googlegroups.com. 
> >> > To post to this group, send email to sage-s...@googlegroups.com. 
> >> > Visit this group at http://groups.google.com/group/sage-support. 
> >> > For more options, visit https://groups.google.com/d/optout. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "sage-support" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an 
> > email to sage-support...@googlegroups.com <javascript:>. 
> > To post to this group, send email to 
> > sage-s...@googlegroups.com<javascript:>. 
>
> > Visit this group at http://groups.google.com/group/sage-support. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-support+unsubscr...@googlegroups.com.
To post to this group, send email to sage-support@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.

Reply via email to