DIRECTORY Rope USING [ROPE], Basics, IO USING [STREAM], AlgebraClasses, ASPolynomialStructure, ASAlgebraicNumberStructure; ASExtensionFieldStructure: CEDAR DEFINITIONS ~ BEGIN ExtensionFieldElement: TYPE = ASPolynomialStructure.Polynomial; ExtensionFieldData: TYPE = REF ExtensionFieldDataRec; ExtensionFieldDataRec: TYPE = RECORD [ groundField: AlgebraClasses.Object, primitiveElement: ASAlgebraicNumberStructure.AlgebraicNumber ]; MakeExtensionField: PROC [primitiveElement: ASAlgebraicNumberStructure.AlgebraicNumber] RETURNS [extensionField: AlgebraClasses.Object]; PrintName: AlgebraClasses.ToRopeOp; ShortPrintName: AlgebraClasses.ToRopeOp; IsGeneralExtensionField: PROC [structure: AlgebraClasses.Object] RETURNS [BOOL]; IsRealField: PROC [structure: AlgebraClasses.Object] RETURNS [BOOL]; IsRealExtensionField: PROC [structure: AlgebraClasses.Object] RETURNS [BOOL]; SelectorProc: AlgebraClasses.UnaryOp; SelectorProc: AlgebraClasses.UnaryOp; StructureData: AlgebraClasses.UnaryToListOp; 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]; ExtensionFieldElementFromRope: PROC [in: Rope.ROPE, extensionField: AlgebraClasses.Object, reduced: BOOL _ FALSE] RETURNS [out: ExtensionFieldElement]; ConstructorProc: AlgebraClasses.ListImbedOp; Add: AC.BinaryOp; Negate: AC.UnaryOp; Subtract: AC.BinaryOp; Multiply: AC.BinaryOp; Invert: AC.UnaryOp; Divide: AC.BinaryOp; ScalarMultiply: AC.BinaryOp; Sign: AC.EqualityOp; Abs: AC.UnaryOp; Compare: AC.BinaryCompareOp; Equal: AC.EqualityOp; END. 2ASExtensionFieldStructure.mesa Last Edited by: Arnon, March 5, 1986 10:49:31 am PST Element Representation wrt primitiveElement of the field: an element of minPolyRing, of degree less than the degree of minimalPolynomial. Structure Instance Data Structure Constructor extensionField is a structure of category divisionAlgebra, with properties depending on whether primitiveElement is a general or real algebraic number. Structure Operations check that has category field or divisionAlgebra, and is realField; may or may not be an extension field selector: data1 selector: data2 selector: returns LIST[data1, data2] of a Name Structure Element Conversion and IO If not reduced, then reduce mod the minimal polynomial Element Constructor Element Arithmetic Element Comparison Element Miscellaneous Κ€˜Jšœ™J™4J˜šΟk ˜ Jšœœœ˜J˜Jšœœœ˜Jšœ˜Jšœ˜Jšœ˜—J˜J˜head2šœœ ˜,J˜—Jšœ˜headšΟn™šœœ$˜?Jšœr™r——šœ™Icodešœœœ˜5šœœœ˜&Mšœ#˜#Mšœ,œ˜