id,summary,reporter,owner,description,type,status,priority,milestone,component,resolution,keywords,cc,merged,author,reviewer,upstream,work_issues,branch,commit,dependencies,stopgaps
14990,Implement algebraic closures of finite fields,pbruin,,"The goal of this ticket is a basic implementation of algebraic closures of finite fields. Most importantly, it provides the following:
- class `AlgebraicClosureFiniteField_generic` (abstract base class)
- 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
- class `AlgebraicClosureFiniteField_pseudo_conway` (implements the specific defining polynomials of the finite subfields and the relations between the generators of these subfields)
- class `AlgebraicClosureFiniteFieldElement`
(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)
- factory class `AlgebraicClosureFiniteField` (to get unique parents)
- method `FiniteField.algebraic_closure()` (invokes the factory class)
An example using the new functionality is the following analogue of the example from #8335:
{{{
sage: Fbar = GF(3).algebraic_closure('z')
sage: Fbar
Algebraic closure of Finite Field of size 3
sage: F2, e2 = Fbar.subfield(2)
sage: F3, e3 = Fbar.subfield(3)
sage: F2
Finite Field in z2 of size 3^2
}}}
To add, we first embed into `Fbar`:
{{{
sage: x2 = e2(F2.gen())
sage: x3 = e3(F3.gen())
sage: x = x2 + x3
sage: x
z6^5 + 2*z6^4 + 2*z6^3 + z6^2 + 2*z6 + 1
sage: x.parent() is Fbar
True
}}}
One 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`:
{{{
sage: x2 == Fbar.gen(2)
True
sage: x == Fbar.gen(2) + Fbar.gen(3)
True
}}}
It is conceivable that there will be different coexisting implementations (deriving from `AlgebraicClosureFiniteField_generic`). 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.",enhancement,closed,major,sage-6.3,algebra,fixed,finite field algebraic closure,roed jpflori JCooley dfesti defeo vdelecroix erousseau,,Peter Bruin,Vincent Delecroix,N/A,,b0e1539b899af271fb16dcc6dadfaa7e567620b9,,"#14958, #13214",