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 <[email protected] <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 [email protected] <javascript:>.
> > To post to this group, send email to
> > [email protected]<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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.