Hello, In the future (hopefully soon; it is being worked on as I write this, see http://trac.sagemath.org/ticket/14990) Sage will have algebraic closures of finite fields; once we have those, you can use the subfield of the appropriate degree inside the algebraic closure instead of creating fields with the extension() method.
That aside, I agree with John that you can probably avoid some problems by first creating F_{p^12} and then constructing the other fields inside that. Peter Op vrijdag 25 april 2014 09:35:05 UTC+1 schreef John Cremona: > > On 25 April 2014 08:26, Irene <irene....@gmail.com <javascript:>> wrote: > > Yes, this is the example: > > > > p=3700001 > > Fpr=GF(pow(p,2),'b') > > b=Fpr.gen() > > FFpr.<x>=PolynomialRing(Fpr) > > EP= 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 > > A1.<theta>=Fpr.extension(EP) > > Qx=x^6 + (1028017*b + 514009)*x^5 + 2*x^4 + (1028017*b + 514008)*x^3 + > 2*x^2 > > + (1028017*b + 514009)*x + 1 > > > > A2.<z>=Fpr.extension(Qx) > > alpha=(1636197*b + 1129870)*z^5 + (1120295*b + 3059639)*z^4 + (2637744*b > + > > 3273090)*z^3 + (3564174*b + 890965)*z^2 + (3503957*b + 2631102)*z + > > 3343290*b + 146187 > > f=A1.hom([alpha],A2) > > This fails because Qx(alpha) is not 0. You need to map theta to a > root of Qx in A2. UNfortunately simple things like > > sage: Qx.roots(A1, multiplicities=False) > > sage: Qx.change_ring(A1).factor() > > fail with a not-implemented error. I think this is because A1 and A2 > have not been constructed as fields, though both A1.is_field() and > A2.is_field() return True. It might work to construct GF(p^12) > separately and define isomorphims from both A1 and A2 to it. > > Unfortunately you are discovering that the ability of Sage to work > with relative extensions of finite fields is not as good as it should > be. There has been fairly recent work on this, and maybe Peter Bruin > knows what stage that has reached. > > John > > > > > On Thursday, April 24, 2014 11:33:52 PM UTC+2, Peter Bruin wrote: > >> > >> Can you post a complete example? The following (simple) example works > for > >> me (at least in 6.2.beta8): > >> > >> sage: F=GF(5).extension(2) > >> sage: A1.<y>=F.extension(x^2+3) > >> sage: A2.<z>=F.extension(x^2+3) > >> sage: A1.hom([z],A2) > >> Ring morphism: > >> From: Univariate Quotient Polynomial Ring in y over Finite Field in a > of > >> size 5^2 with modulus y^2 + 3 > >> To: Univariate Quotient Polynomial Ring in z over Finite Field in a > of > >> size 5^2 with modulus z^2 + 3 > >> Defn: y |--> z > >> > >> Peter > >> > >> > >> Op donderdag 24 april 2014 16:55:34 UTC+1 schreef Irene: > >>> > >>> I have defined two extensions A1 and A2 over a finite field Fp2 with > >>> generator b, > >>> > >>> A1.<theta>=Fp2.extension(Ep) > >>> A2.<z>=Fp2.extension(Q) > >>> > >>> being Ep and Q polynomials. > >>> > >>> Now I want to define a homomorphism between those algebras. I have > >>> already computed alpha, that is the element in A2 where theta is > mapped, but > >>> Sage doesn't allow me to define it as: > >>> > >>> A1.hom([alpha], A2) > >>> > >>> Do you know how to do it? > >>> > >>> Irene > > > > -- > > 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.