ASAlgebraicNumberStructure.mesa
Last Edited by: Arnon, June 10, 1985 4:19:22 pm PDT
DIRECTORY
Rope USING [ROPE],
IO,
AlgebraClasses,
RatIntervals,
ASPolynomialStructure;
ASAlgebraicNumberStructure: CEDAR DEFINITIONS
= BEGIN
Element Representation
AlgebraicNumber: TYPE = AlgebraClasses.Object;
AlgebraicNumberData: TYPE = REF AlgebraicNumberDataRec;
AlgebraicNumberDataRec: TYPE = RECORD [
minimalPolynomial: ASPolynomialStructure.Polynomial, -- a monic elt of minPolyRing irreducible over groundField, where minPolyRing is a ring of univariate polynomials over any groundField.
isolatingInterval: ASRatIntervals.RatInterval ← NIL -- NonNIL iff groundField real; isolating interval for the unique root of minimalPolynomial which is this real algebraic number.
];
Structure Instance Data
FieldOfAlgebraicNumbersData: TYPE = REF FieldOfAlgebraicNumbersDataRec;
FieldOfAlgebraicNumbersDataRec: TYPE = RECORD [
groundField: AlgebraClasses.Object,
minPolyRing: AlgebraClasses.Object,
real: BOOL
];
Structure Constructor
MakeFieldOfAlgebraicNumbers: PROC [minPolyRing: AlgebraClasses.Object, real: BOOL] RETURNS [fieldOfAlgebraicNumbers: AlgebraClasses.Object];
Structure Operations
PrintName: AlgebraClasses.ToRopeOp;
ShortPrintName: AlgebraClasses.ToRopeOp;
IsFieldOfAlgebraicNumbers: PROC [structure: AlgebraClasses.Object] RETURNS [BOOL];
GroundField: AlgebraClasses.UnaryOp;
selector: groundField
MinPolyRing: AlgebraClasses.UnaryOp;
selector: minPolyRing
StructureData: AlgebraClasses.UnaryToListOp;
selector: returns LIST[groundField, minPolyRing] of a FieldOfAlgebraicNumbers 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;
Element Constructor
MakeAlgebraicNumber: AlgebraClasses.BinaryImbedOp;
data1 = minimalPolynomial, a monic elt of structure.minPolyRing irreducible over groundField, where minPolyRing is a ring of univariate polynomials over any groundField. data2 = isolatingInterval; If structure.real, then groundField = structure.groundField is a real field, and isolatingInterval is an isolating interval for the unique root of minimalPolynomial which is this (real) algebraic number.
Element Operations
BinaryOp: AlgebraClasses.BinaryOp;
UnaryOp: AlgebraClasses.UnaryOp;
END.