#13214: Frobenius endomorphism over finite fields
-------------------------------------------+--------------------------------
       Reporter:  caruso                   |         Owner:  AlexGhitza  
           Type:  enhancement              |        Status:  needs_review
       Priority:  major                    |     Milestone:  sage-5.3    
      Component:  basic arithmetic         |    Resolution:              
       Keywords:  frobenius finite fields  |   Work issues:              
Report Upstream:  N/A                      |     Reviewers:              
        Authors:                           |     Merged in:              
   Dependencies:                           |      Stopgaps:              
-------------------------------------------+--------------------------------

Comment (by caruso):

 Oh sorry, I forgot *.pxd files. Thanks!


 Paul, the answer to your question is probably yes... at least if q is
 small enough so that you can work with givaro fields (otherwise, it won't
 be so efficient).

 Actually, I have not implemented automatic coercions between finite fields
 (essentially because embeddings between finite fields are not canonical).
 As a consequence it's not so easy to create embeddings. Nevertheless, here
 is what you can do:

 {{{
 sage: K.<x> = GF(5^3)
 sage: L.<y> = GF(5^6)
 sage: from sage.rings.finite_rings.hom_finite_field_givaro import
 FiniteFieldEmbedding_givaro
 sage: f = FiniteFieldEmbedding_givaro(K,L); f
 Embedding of Finite Field in x of size 5^3 into Finite Field in y of size
 5^6
 sage: g = f.section(); g
 Section of Embedding of Finite Field in x of size 5^3 into Finite Field in
 y of size 5^6
 sage: g(y^126)
 3*x^2 + 1
 sage: g(y)
 Traceback (most recent call last):
 ...
 ValueError: y is not in the image of Embedding of Finite Field in x of
 size 5^3 into Finite Field in y of size 5^6
 }}}

 If you are sure that you won't never use another embedding of K into L,
 you can even define f as a coerce map as follows:

 {{{
 sage: K._unset_coercions_used()
 sage: K._populate_coercion_lists_(embedding=f)
 }}}

 Then the following will work:

 {{{
 sage: L(x)
 2*y^5 + 3*y^4 + 3*y^2 + y + 2
 sage: z = x*y; z
 3*y^5 + 3*y^4 + 4*y^2 + 2*y + 1
 sage: K(z/y)
 x
 sage: K(y)
 Traceback (most recent call last):
 ...
 ValueError: y is not in the image of Embedding of Finite Field in x of
 size 5^3 into Finite Field in y of size 5^6
 }}}

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13214#comment:5>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to