[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Structure Operations
Structure Operations
Subsections
Related Structures
Category(F) : FldFin -> Cat
Parent(F) : FldFin -> PowerStructure
Centre(F) : FldFin -> FldFin
PrimeRing(F) : FldFin -> FldFin
PrimeField(F) : FldFin -> FldFin
FieldOfFractions(F) : FldFin -> FldFin
AdditiveGroup(F) : FldFin -> GrpAb, Map
Given F=GF(q), create the finite additive abelian group A of order q=p^r
that is the direct sum of r copies of the cyclic group of order p,
together with a map from the field F to A that gives an isomorphism.
MultiplicativeGroup(F) : FldFin -> GrpAb, Map
UnitGroup(F) : FldFin -> GrpAb, Map
Given F=GF(q), create the multiplicative group of R as an abelian group.
This returns the (additive) cyclic group A of order q - 1, together
with a (partial) map from F - 0 to A,
sending a primitive element of F to 1.
Set(F) : FldFin -> SetEnum
Create the enumerated set consisting of the elements of finite field F.
VectorSpace(F, E) : FldFin, FldFin -> ModTupFld, Map
Given a finite field F that is an extension of degree n of E,
define the natural isomorphism
between F and the n-dimensional vector
space E^n.
The function returns two values:
- A vector space V isomorphic to E^n;
- The isomorphism phi : F -> V.
The basis of V is chosen to correspond with the power
basis alpha^0, alpha^1, ..., alpha^(n - 1) of F,
where alpha is the generator returned by Generator(F, E),
so that V=E.1 x E.alpha x ... x E.alpha^(n - 1)
and phi : alpha^i -> e_(i + 1), (for i = 0, ..., n - 1),
where e_i is the basis vector of V having all
components zero, except the i-th, which is one.
VectorSpace(F, E, B) : FldFin, FldFin, [ FldFinElt ] -> ModTupFld, Map
Given a finite field F that is an extension of degree n of E,
define the isomorphism between F and the n-dimensional vector space
E^n defined by the basis B for F over E.
The function returns two values:
- A vector space V isomorphic to E^n;
- The isomorphism phi : F -> V.
The basis of V is chosen to correspond with the basis B=beta_1, beta_2, ..., beta_(n) of F over E, as specified by the user,
so that
V=E.beta_1 x E.beta_2 x ... x E.beta_(n).
phi : beta_i -> e_(i), (for i = 1, ..., n),
where e_i is the basis vector of V having all
components zero, except the i-th, which is one.
MatrixAlgebra(F, E) : FldFin, FldFin -> AlgMat, Map
Let F be a finite field that is an extension of degree n of E.
The function returns two values:
- A matrix algebra A of degree n, such that A is isomorphic to F;
- An isomorphism phi : F -> A.
The matrix algebra A will be the subalgebra of the full algebra
of n x n matrices over E generated by the companion
matrix C of the defining polynomial of F over E. The generator
Generator(F, E) of F over E is thus mapped to C.
MatrixAlgebra(A, E) : AlgMat, FldFin -> AlgMat, Map
Let F be a finite field. Let A be a matrix algebra over F,
and E be a subfield of F.
The function returns two values:
- A matrix algebra N over E isomorphic to A, obtained from A
by expanding each component of an element of A into the block matrix associated with it;
- An E-isomorphism phi : A -> N.
N is A considered as an E-matrix algebra.
Example FldFin_VectorSpace (H27E2)
Given the field F of 7^4 elements defined as an extension of the
field F49 of 7^2 elements as above, we can construct two vector spaces,
one of dimension 2, and the other of dimension 4:
> F7 := FiniteField(7);
> F49<w> := ext< F7 | 2 >;
> F<z> := ext< F49 | 2 >;
> v2, i2 := VectorSpace(F, F49);
> v2;
Full Vector space of degree 2 over GF(7^2)
> i2(z^12);
( w w^28)
> v4, i4 := VectorSpace(F, PrimeField(F));
> v4;
Full Vector space of degree 4 over GF(7)
> i4(z^12);
(5 3 6 4)
Numerical Invariants
Characteristic(F) : FldFin -> FldFinElt
# F : FldFin -> FldFinElt
Degree(F) : FldFin -> RngIntElt
The absolute degree of F, that is, the degree over its
prime subfield.
Degree(F, E) : FldFin, FldFin -> RngIntElt
Given a finite field F that has been constructed as an
extension of a field E, return the degree of F over
E.
Polynomials for Finite Fields
DefiningPolynomial(F) : FldFin -> RngPolElt
Given a finite field F that has been constructed as an
extension of a field E, return the polynomial with coefficients
in E that was used to define F as an extension of E.
This is the minimum polynomial of F.1.
DefiningPolynomial(F, E) : FldFin -> RngPolElt
Given a finite field F and a subfield E,
return the polynomial with coefficients
in E used to define F as an extension of E.
This is the same as the minimum polynomial of the generator
Generator(F, E) over E.
IrreduciblePolynomial(F, m) : FldFin, RngIntElt -> RngPolElt
Given a finite field F and a positive integer m > 1,
construct a polynomial P of degree m that is irreducible
over F.
PrimitivePolynomial(F, m) : FldFin, RngIntElt -> RngPolElt
Given a finite field F and a positive integer m > 1,
construct a polynomial P of degree m that is primitive
over F. Thus, P is irreducible over F, and it has
a primitive root of the degree m extension field of F
as a root.
AllIrreduciblePolynomials(F, m) : FldFin, RngIntElt -> { RngPolElt }
Given a finite field F and a positive integer m > 1,
construct the set of all monic polynomials of degree m that are irreducible
over F.
ConwayPolynomial(p, n) : RngIntElt, RngIntElt -> RngUPolElt
Given a prime p and an exponent n >= 1, return the Conway
polynomial of degree n over GF(p). The Conway polynomial
is defined in the introduction. Note that this polynomial is
read in from a table containing Conway polynomials for a limited
range of p, n only.
ExistsConwayPolynomial(p, n) : RngIntElt, RngIntElt -> BoolElt, RngUPolElt
Given a prime p and an exponent n>1, return true and the Conway
polynomial if it is known for the field GF(p), false otherwise.
Ring Predicates and Booleans
IsCommutative(F) : FldFin -> BoolElt
IsUnitary(F) : FldFin -> BoolElt
IsFinite(F) : FldFin -> BoolElt
IsOrdered(F) : FldFin -> BoolElt
IsField(F) : FldFin -> BoolElt
IsEuclideanDomain(F) : FldFin -> BoolElt
IsPID(F) : FldFin -> BoolElt
IsUFD(F) : FldFin -> BoolElt
IsDivisionRing(F) : FldFin -> BoolElt
IsEuclideanRing(F) : FldFin -> BoolElt
IsPrincipalIdealRing(F) : FldFin -> BoolElt
IsDomain(F) : FldFin -> BoolElt
F eq G : FldFin, Rng -> BoolElt
F ne G : FldFin, Rng -> BoolElt
IsConway(F) : FldFin -> BoolElt
Given a finite field F, this function returns true if F is
defined over the prime field using the Conway polynomial, false
otherwise.
Roots
Roots(f) : RngPolElt -> [ < FldFinElt, RngIntElt> ]
Given a polynomial f over a finite field F, this function finds all roots
of f in F, and returns a sequence of tuples (pairs),
each consisting of a root of f in F and its multiplicity.
RootOfUnity(n, K) : RngIntElt, FldFin -> FldFinElt
A primitive n-th root of unity in the smallest possible extension field
of K.
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]