FiniteAlgebraicExtensionField(F)
ffcat.spad line 92
[edit on github]
FiniteAlgebraicExtensionField F is the category of fields which are finite algebraic extensions of the field F. If F is finite then any finite algebraic extension of F is finite, too. Let K be a finite algebraic extension of the finite field F. The exponentiation of elements of K defines a Z
-module structure on the multiplicative group of K. The additive group of K becomes a module over the ring of polynomials over F via the operation linearAssociatedExp(a: K
, f:
SparseUnivariatePolynomial F
) which is linear over F, i.e. for elements a from K, c, d from F and f, g univariate polynomials over F we have linearAssociatedExp(a, cf+dg) equals c times linearAssociatedExp(a, f
) plus d times linearAssociatedExp(a, g
). Therefore linearAssociatedExp is defined completely by its action on monomials from F[X]: linearAssociatedExp(a, monomial(1, k
)$
SUP(F
)) is defined to be Frobenius(a, k
) which is a^(q^k) where q=size()$F. The operations order and discreteLog associated with the multiplicative exponentiation have additive analogues associated to the operation linearAssociatedExp. These are the functions linearAssociatedOrder and linearAssociatedLog, respectively.
- * : (%, %) -> %
- from Magma
- * : (%, F) -> %
- from RightModule(F)
- * : (%, Fraction(Integer)) -> %
- from RightModule(Fraction(Integer))
- * : (F, %) -> %
- from LeftModule(F)
- * : (Fraction(Integer), %) -> %
- from LeftModule(Fraction(Integer))
- * : (Integer, %) -> %
- from AbelianGroup
- * : (NonNegativeInteger, %) -> %
- from AbelianMonoid
- * : (PositiveInteger, %) -> %
- from AbelianSemiGroup
- + : (%, %) -> %
- from AbelianSemiGroup
- - : % -> %
- from AbelianGroup
- - : (%, %) -> %
- from AbelianGroup
- / : (%, %) -> %
- from Field
- / : (%, F) -> %
- from ExtensionField(F)
- 0 : () -> %
- from AbelianMonoid
- 1 : () -> %
- from MagmaWithUnit
- = : (%, %) -> Boolean
- from BasicType
- D : % -> % if F has Finite
- from DifferentialRing
- D : (%, NonNegativeInteger) -> % if F has Finite
- from DifferentialRing
- Frobenius : % -> % if F has Finite
- from ExtensionField(F)
- Frobenius : (%, NonNegativeInteger) -> % if F has Finite
- from ExtensionField(F)
- ^ : (%, Integer) -> %
- from DivisionRing
- ^ : (%, NonNegativeInteger) -> %
- from MagmaWithUnit
- ^ : (%, PositiveInteger) -> %
- from Magma
- algebraic? : % -> Boolean
- from ExtensionField(F)
- annihilate? : (%, %) -> Boolean
- from Rng
- antiCommutator : (%, %) -> %
- from NonAssociativeSemiRng
- associates? : (%, %) -> Boolean
- from EntireRing
- associator : (%, %, %) -> %
- from NonAssociativeRng
- basis : () -> Vector(%)
- from FramedModule(F)
- basis : PositiveInteger -> Vector(%) if F has Finite
basis(n)
returns a fixed basis of a subfield of % as F
-vector space.
- characteristic : () -> NonNegativeInteger
- from NonAssociativeRing
- characteristicPolynomial : % -> SparseUnivariatePolynomial(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- charthRoot : % -> % if F has Finite
- from FiniteFieldCategory
- charthRoot : % -> Union(%, "failed") if F has CharacteristicNonZero or F has Finite
- from PolynomialFactorizationExplicit
- coerce : % -> %
- from Algebra(%)
- coerce : F -> %
- from CoercibleFrom(F)
- coerce : Fraction(Integer) -> %
- from Algebra(Fraction(Integer))
- coerce : Integer -> %
- from NonAssociativeRing
- coerce : % -> OutputForm
- from CoercibleTo(OutputForm)
- commutator : (%, %) -> %
- from NonAssociativeRng
- conditionP : Matrix(%) -> Union(Vector(%), "failed") if F has Finite
- from PolynomialFactorizationExplicit
- convert : Vector(F) -> %
- from FramedModule(F)
- convert : % -> InputForm if F has Finite
- from ConvertibleTo(InputForm)
- convert : % -> Vector(F)
- from FramedModule(F)
- coordinates : Vector(%) -> Matrix(F)
- from FramedModule(F)
- coordinates : (Vector(%), Vector(%)) -> Matrix(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- coordinates : % -> Vector(F)
- from FramedModule(F)
- coordinates : (%, Vector(%)) -> Vector(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- createNormalElement : () -> % if F has Finite
createNormalElement()
computes a normal element over the ground field F
, that is, a^(q^i), 0 <= i < extensionDegree()
is an F
-basis, where q = size()$F
. Reference: Such an element exists Lidl/Niederreiter: Theorem 2.35.
- createPrimitiveElement : () -> % if F has Finite
- from FiniteFieldCategory
- definingPolynomial : () -> SparseUnivariatePolynomial(F)
definingPolynomial()
returns the polynomial used to define the field extension.
- degree : % -> OnePointCompletion(PositiveInteger)
- from ExtensionField(F)
- degree : % -> PositiveInteger
degree(a)
returns the degree of the minimal polynomial of an element a
over the ground field F
.
- differentiate : % -> % if F has Finite
- from DifferentialRing
- differentiate : (%, NonNegativeInteger) -> % if F has Finite
- from DifferentialRing
- discreteLog : % -> NonNegativeInteger if F has Finite
- from FiniteFieldCategory
- discreteLog : (%, %) -> Union(NonNegativeInteger, "failed") if F has CharacteristicNonZero or F has Finite
- from FieldOfPrimeCharacteristic
- discriminant : () -> F
- from FramedAlgebra(F, SparseUnivariatePolynomial(F))
- discriminant : Vector(%) -> F
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- divide : (%, %) -> Record(quotient : %, remainder : %)
- from EuclideanDomain
- enumerate : () -> List(%) if F has Finite
- from Finite
- euclideanSize : % -> NonNegativeInteger
- from EuclideanDomain
- expressIdealMember : (List(%), %) -> Union(List(%), "failed")
- from PrincipalIdealDomain
- exquo : (%, %) -> Union(%, "failed")
- from EntireRing
- extendedEuclidean : (%, %) -> Record(coef1 : %, coef2 : %, generator : %)
- from EuclideanDomain
- extendedEuclidean : (%, %, %) -> Union(Record(coef1 : %, coef2 : %), "failed")
- from EuclideanDomain
- extensionDegree : () -> OnePointCompletion(PositiveInteger)
- from ExtensionField(F)
- extensionDegree : () -> PositiveInteger
extensionDegree()
returns the degree of field extension.
- factor : % -> Factored(%)
- from UniqueFactorizationDomain
- factorPolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if F has Finite
- from PolynomialFactorizationExplicit
- factorSquareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if F has Finite
- from PolynomialFactorizationExplicit
- factorsOfCyclicGroupSize : () -> List(Record(factor : Integer, exponent : NonNegativeInteger)) if F has Finite
- from FiniteFieldCategory
- gcd : (%, %) -> %
- from GcdDomain
- gcd : List(%) -> %
- from GcdDomain
- gcdPolynomial : (SparseUnivariatePolynomial(%), SparseUnivariatePolynomial(%)) -> SparseUnivariatePolynomial(%)
- from PolynomialFactorizationExplicit
- generator : () -> % if F has Finite
generator()
returns a root of the defining polynomial. This element generates the field as an algebra over the ground field.
- hash : % -> SingleInteger if F has Hashable
- from Hashable
- hashUpdate! : (HashState, %) -> HashState if F has Hashable
- from Hashable
- inGroundField? : % -> Boolean
- from ExtensionField(F)
- index : PositiveInteger -> % if F has Finite
- from Finite
- init : () -> % if F has Finite
- from StepThrough
- inv : % -> %
- from DivisionRing
- latex : % -> String
- from SetCategory
- lcm : (%, %) -> %
- from GcdDomain
- lcm : List(%) -> %
- from GcdDomain
- lcmCoef : (%, %) -> Record(llcm_res : %, coeff1 : %, coeff2 : %)
- from LeftOreRing
- leftPower : (%, NonNegativeInteger) -> %
- from MagmaWithUnit
- leftPower : (%, PositiveInteger) -> %
- from Magma
- leftRecip : % -> Union(%, "failed")
- from MagmaWithUnit
- linearAssociatedExp : (%, SparseUnivariatePolynomial(F)) -> % if F has Finite
linearAssociatedExp(a, f)
is linear over F, i.e. for elements a from $, c, d form F and f, g univariate polynomials over F we have linearAssociatedExp(a, cf+dg) equals c times linearAssociatedExp(a, f
) plus d times linearAssociatedExp(a, g
). Therefore linearAssociatedExp is defined completely by its action on monomials from F[X]: linearAssociatedExp(a, monomial(1, k
)$
SUP(F
)) is defined to be Frobenius(a, k
) which is a^(q^k), where q=size()$F.
- linearAssociatedLog : % -> SparseUnivariatePolynomial(F) if F has Finite
linearAssociatedLog(a)
returns a polynomial g, such that linearAssociatedExp(normalElement(), g
) equals a.
- linearAssociatedLog : (%, %) -> Union(SparseUnivariatePolynomial(F), "failed") if F has Finite
linearAssociatedLog(b, a)
returns a polynomial g, such that the linearAssociatedExp(b
, g
) equals a. If there is no such polynomial g, then linearAssociatedLog fails.
- linearAssociatedOrder : % -> SparseUnivariatePolynomial(F) if F has Finite
linearAssociatedOrder(a)
returns the monic polynomial g of least degree, such that linearAssociatedExp(a, g
) is 0.
- lookup : % -> PositiveInteger if F has Finite
- from Finite
- minimalPolynomial : (%, PositiveInteger) -> SparseUnivariatePolynomial(%) if F has Finite
minimalPolynomial(x, n)
computes the minimal polynomial of x
over the field of extension degree n
over the ground field F
.
- minimalPolynomial : % -> SparseUnivariatePolynomial(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- multiEuclidean : (List(%), %) -> Union(List(%), "failed")
- from EuclideanDomain
- nextItem : % -> Union(%, "failed") if F has Finite
- from StepThrough
- norm : (%, PositiveInteger) -> % if F has Finite
norm(a, d)
computes the norm of a
with respect to the intermediate field of extension degree d
over the ground field F
. Error: if d
does not divide the extension degree n
of %
. Note: norm(a, d
) = reduce(*, [a^(q^
(d*i)) for i
in 0..n/d
]) where q
is size of F
.
- norm : % -> F
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- normal? : % -> Boolean if F has Finite
normal?(a)
tests whether the element a
is normal over the ground field F
, i.e. a^(q^i), 0 <= i <= extensionDegree()-1
is an F
-basis, where q = size()$F
. Implementation according to Lidl/Niederreiter: Theorem 2.39.
- normalElement : () -> % if F has Finite
normalElement()
returns a element, normal over the ground field F
, i.e. a^(q^i), 0 <= i < extensionDegree()
is an F
-basis, where q = size()$F
. At the first call, the element is computed by createNormalElement then cached in a global variable. On subsequent calls, the element is retrieved by referencing the global variable.
- one? : % -> Boolean
- from MagmaWithUnit
- opposite? : (%, %) -> Boolean
- from AbelianMonoid
- order : % -> OnePointCompletion(PositiveInteger) if F has CharacteristicNonZero or F has Finite
- from FieldOfPrimeCharacteristic
- order : % -> PositiveInteger if F has Finite
- from FiniteFieldCategory
- plenaryPower : (%, PositiveInteger) -> %
- from NonAssociativeAlgebra(%)
- prime? : % -> Boolean
- from UniqueFactorizationDomain
- primeFrobenius : % -> % if F has CharacteristicNonZero or F has Finite
- from FieldOfPrimeCharacteristic
- primeFrobenius : (%, NonNegativeInteger) -> % if F has CharacteristicNonZero or F has Finite
- from FieldOfPrimeCharacteristic
- primitive? : % -> Boolean if F has Finite
- from FiniteFieldCategory
- primitiveElement : () -> % if F has Finite
- from FiniteFieldCategory
- principalIdeal : List(%) -> Record(coef : List(%), generator : %)
- from PrincipalIdealDomain
- quo : (%, %) -> %
- from EuclideanDomain
- random : () -> % if F has Finite
- from Finite
- rank : () -> PositiveInteger
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- recip : % -> Union(%, "failed")
- from MagmaWithUnit
- regularRepresentation : % -> Matrix(F)
- from FramedAlgebra(F, SparseUnivariatePolynomial(F))
- regularRepresentation : (%, Vector(%)) -> Matrix(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- rem : (%, %) -> %
- from EuclideanDomain
- representationType : () -> Union("prime", "polynomial", "normal", "cyclic") if F has Finite
- from FiniteFieldCategory
- represents : Vector(F) -> %
- from FramedModule(F)
- represents : (Vector(F), Vector(%)) -> %
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- retract : % -> F
- from RetractableTo(F)
- retractIfCan : % -> Union(F, "failed")
- from RetractableTo(F)
- rightPower : (%, NonNegativeInteger) -> %
- from MagmaWithUnit
- rightPower : (%, PositiveInteger) -> %
- from Magma
- rightRecip : % -> Union(%, "failed")
- from MagmaWithUnit
- sample : () -> %
- from AbelianMonoid
- size : () -> NonNegativeInteger if F has Finite
- from Finite
- sizeLess? : (%, %) -> Boolean
- from EuclideanDomain
- smaller? : (%, %) -> Boolean if F has Finite
- from Comparable
- solveLinearPolynomialEquation : (List(SparseUnivariatePolynomial(%)), SparseUnivariatePolynomial(%)) -> Union(List(SparseUnivariatePolynomial(%)), "failed") if F has Finite
- from PolynomialFactorizationExplicit
- squareFree : % -> Factored(%)
- from UniqueFactorizationDomain
- squareFreePart : % -> %
- from UniqueFactorizationDomain
- squareFreePolynomial : SparseUnivariatePolynomial(%) -> Factored(SparseUnivariatePolynomial(%)) if F has Finite
- from PolynomialFactorizationExplicit
- subtractIfCan : (%, %) -> Union(%, "failed")
- from CancellationAbelianMonoid
- tableForDiscreteLogarithm : Integer -> Table(PositiveInteger, NonNegativeInteger) if F has Finite
- from FiniteFieldCategory
- trace : (%, PositiveInteger) -> % if F has Finite
trace(a, d)
computes the trace of a
with respect to the intermediate field of extension degree d
over the ground field F
. Error: if d
does not divide the extension degree n
of %
. Note: trace(a, d) = reduce(+, [a^(q^(d*i)) for i in 0..n/d])
where q
is size of F
.
- trace : % -> F
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- traceMatrix : () -> Matrix(F)
- from FramedAlgebra(F, SparseUnivariatePolynomial(F))
- traceMatrix : Vector(%) -> Matrix(F)
- from FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
- transcendenceDegree : () -> NonNegativeInteger
- from ExtensionField(F)
- transcendent? : % -> Boolean
- from ExtensionField(F)
- unit? : % -> Boolean
- from EntireRing
- unitCanonical : % -> %
- from EntireRing
- unitNormal : % -> Record(unit : %, canonical : %, associate : %)
- from EntireRing
- zero? : % -> Boolean
- from AbelianMonoid
- ~= : (%, %) -> Boolean
- from BasicType
Algebra(Fraction(Integer))
Module(Fraction(Integer))
PrincipalIdealDomain
NonAssociativeSemiRing
BiModule(%, %)
ConvertibleTo(InputForm)
Field
canonicalUnitNormal
Rng
TwoSidedRecip
FiniteRankAlgebra(F, SparseUnivariatePolynomial(F))
CoercibleFrom(F)
SemiRing
EntireRing
DivisionRing
CharacteristicNonZero
unitsKnown
MagmaWithUnit
noZeroDivisors
UniqueFactorizationDomain
SemiGroup
RightModule(Fraction(Integer))
Magma
GcdDomain
IntegralDomain
LeftModule(%)
NonAssociativeRing
ExtensionField(F)
CharacteristicZero
CommutativeRing
Algebra(%)
RetractableTo(F)
DifferentialRing
NonAssociativeSemiRng
CancellationAbelianMonoid
EuclideanDomain
canonicalsClosed
Comparable
Algebra(F)
CommutativeStar
AbelianMonoid
RightModule(%)
BiModule(F, F)
Hashable
NonAssociativeAlgebra(F)
FramedModule(F)
Module(%)
CoercibleTo(OutputForm)
LeftModule(F)
Module(F)
RightModule(F)
Finite
SemiRng
Monoid
PolynomialFactorizationExplicit
FiniteFieldCategory
LeftOreRing
NonAssociativeAlgebra(%)
StepThrough
FramedAlgebra(F, SparseUnivariatePolynomial(F))
BasicType
Ring
LeftModule(Fraction(Integer))
AbelianSemiGroup
SetCategory
NonAssociativeRng
FieldOfPrimeCharacteristic
BiModule(Fraction(Integer), Fraction(Integer))
NonAssociativeAlgebra(Fraction(Integer))
AbelianGroup