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.alv...@gmail.com> 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+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. -- 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.