ASExtensionFieldStructure.mesa
Last Edited by: Arnon, March 5, 1986 10:49:31 am PST
DIRECTORY
Rope USING [ROPE],
Basics,
IO USING [STREAM],
AlgebraClasses,
ASPolynomialStructure,
ASAlgebraicNumberStructure;
ASExtensionFieldStructure: CEDAR DEFINITIONS
~ BEGIN
Element Representation
ExtensionFieldElement: TYPE = ASPolynomialStructure.Polynomial;
wrt primitiveElement of the field: an element of minPolyRing, of degree less than the degree of minimalPolynomial.
Structure Instance Data
ExtensionFieldData: TYPE = REF ExtensionFieldDataRec;
ExtensionFieldDataRec: TYPE = RECORD [
groundField: AlgebraClasses.Object,
primitiveElement: ASAlgebraicNumberStructure.AlgebraicNumber
];
Structure Constructor
MakeExtensionField: PROC [primitiveElement: ASAlgebraicNumberStructure.AlgebraicNumber] RETURNS [extensionField: AlgebraClasses.Object];
extensionField is a structure of category divisionAlgebra, with properties depending on whether primitiveElement is a general or real algebraic number.
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: BOOLFALSE] RETURNS [out: ExtensionFieldElement];
If not reduced, then reduce mod the minimal polynomial
ExtensionFieldElementFromRope: PROC [in: Rope.ROPE, extensionField: AlgebraClasses.Object, reduced: BOOLFALSE] RETURNS [out: ExtensionFieldElement];
Element Constructor
ConstructorProc: AlgebraClasses.ListImbedOp;
Element Arithmetic
Add: AC.BinaryOp;
Negate: AC.UnaryOp;
Subtract: AC.BinaryOp;
Multiply: AC.BinaryOp;
Invert: AC.UnaryOp;
Divide: AC.BinaryOp;
ScalarMultiply: AC.BinaryOp;
Element Comparison
Sign: AC.EqualityOp;
Abs: AC.UnaryOp;
Compare: AC.BinaryCompareOp;
Element Miscellaneous
Equal: AC.EqualityOp;
END.