Changes between Initial Version and Version 3 of Ticket #14990


Ignore:
Timestamp:
08/15/13 14:38:57 (6 years ago)
Author:
pbruin
Comment:

Here is a first implementation. The examples in the ticket description work exactly as written. It doesn't have a huge amount of functionality yet; for example, it would be nice to be able to factor polynomials over an algebraic closure of Fp. But this can probably wait until another ticket.

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #14990

    • Property Status changed from new to needs_review
    • Property Dependencies changed from #14958 to #14958, #13214
    • Property Authors changed from to Peter Bruin
  • Ticket #14990 – Description

    initial v3  
    1 Algebraic closures of finite fields should be implemented.  Most importantly, we will need the following:
     1The goal of this ticket is a basic implementation of algebraic closures of finite fields.  Most importantly, it provides the following:
    22
    33- class `AlgebraicClosureFiniteField`
    44  - method `subfield(n)` returning a tuple consisting of the subfield of order ''p^n^'' and a `RingHomomorphism_im_gens` giving the canonical embedding into the algebraic closure
    55- class `AlgebraicClosureFiniteFieldElement`
    6   (should mostly be a wrapper around `FiniteFieldElement`, so actually an element of a finite subfield, but having the algebraic closure as its parent and taking care of coercion into larger subfields)
     6  (mostly a wrapper around `FiniteFieldElement`, so actually an element of a finite subfield, but having the algebraic closure as its parent and taking care of coercion into larger subfields)
    77- method `FiniteField.algebraic_closure()`
    88
    99(Alternative names: `FiniteFieldAlgebraicClosure`, `FiniteFieldAlgebraicClosureElement`, maybe with aliases `FFpbar`, `FFpbarElement`?)
    1010
    11 An example using the new functionality would be the following analogue of the example from #8335:
     11An example using the new functionality is the following analogue of the example from #8335:
    1212{{{
    1313sage: Fbar = GF(3).algebraic_closure('z')
     
    2929True
    3030}}}
    31 It would be nice to do this without explicitly invoking the embeddings; as a shortcut, `Fbar` should have a method `gen(n)` returning the fixed generator of the subfield of degree ''n'', but as an element of `Fbar`:
     31One can also do this without explicitly invoking the embeddings; as a shortcut, `Fbar` has a method `gen(n)` returning the fixed generator of the subfield of degree ''n'', but as an element of `Fbar`:
    3232{{{
    3333sage: x2 == Fbar.gen(2)
     
    3737}}}
    3838
    39 (The above example assumes that an `AlgebraicClosureFiniteFieldElement` is printed in the same way as the underlying `FiniteFieldElement`; we do not necessarily have to do this.)
     39(The above example shows that `AlgebraicClosureFiniteFieldElement` is printed in the same way as the underlying `FiniteFieldElement`.)
    4040
    41 It is conceivable that there will be different coexisting implementations (classes deriving from an abstract `AlgebraicClosureFiniteField`).  The first (and easiest) to implement should use Conway polynomials and the pseudo-Conway polynomials from #14958, probably using some of the code from #8335.
     41It is conceivable that there will be different coexisting implementations (classes deriving from an abstract `AlgebraicClosureFiniteField`).  The current implementation uses Conway polynomials and the pseudo-Conway polynomials from #14958, as well as the functionality for finite field homomorphisms provided by #13214.