Structure Instance Data
ExtensionFieldData: TYPE = REF ExtensionFieldDataRec;
ExtensionFieldDataRec:
TYPE =
RECORD [
groundField: AlgebraClasses.Object,
primitiveElement: ASAlgebraicNumberStructure.AlgebraicNumber
];
Structure Operations
PrintName: AlgebraClasses.ToRopeOp;
ShortPrintName: AlgebraClasses.ToRopeOp;
IsGeneralExtensionField:
PROC [structure: AlgebraClasses.Object]
RETURNS [
BOOL];
IsRealField:
PROC [structure: AlgebraClasses.Object]
RETURNS [
BOOL];
check that has category field or divisionAlgebra, and is realField; may or may not be an extension field
IsRealExtensionField:
PROC [structure: AlgebraClasses.Object]
RETURNS [
BOOL];
SelectorProc: AlgebraClasses.UnaryOp;
selector: data1
SelectorProc: AlgebraClasses.UnaryOp;
selector: data2
StructureData: AlgebraClasses.UnaryToListOp;
selector: returns LIST[data1, data2] of a Name Structure
Element Conversion and IO
Recast: AlgebraClasses.BinaryOp;
CanRecast: AlgebraClasses.BinaryPredicate;
ToExpr: AlgebraClasses.ToExprOp;
LegalFirstChar: AlgebraClasses.LegalFirstCharOp;
Read: AlgebraClasses.ReadOp;
FromRope: AlgebraClasses.FromRopeOp;
ToRope: AlgebraClasses.ToRopeOp;
Write: AlgebraClasses.WriteOp;
ReadExtensionFieldElement:
PROC [in:
IO.
STREAM, extensionField: AlgebraClasses.Object, reduced:
BOOL ←
FALSE]
RETURNS [out: ExtensionFieldElement];
If not reduced, then reduce mod the minimal polynomial
ExtensionFieldElementFromRope: PROC [in: Rope.ROPE, extensionField: AlgebraClasses.Object, reduced: BOOL ← FALSE] RETURNS [out: ExtensionFieldElement];