<> <> 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.