DIRECTORY Rope USING [ROPE], IO, AlgebraClasses, RatIntervals, Polynomials; AlgebraicNumbers: CEDAR DEFINITIONS = BEGIN OPEN AC: AlgebraClasses, RI: RatIntervals, POL: Polynomials; AlgebraicNumber: TYPE = AC.Object; AlgebraicNumberData: TYPE = REF AlgebraicNumberDataRec; AlgebraicNumberDataRec: TYPE = RECORD [ minimalPolynomial: POL.Polynomial, -- a monic elt of minPolyRing irreducible over groundField, where minPolyRing is a ring of univariate polynomials over any groundField. isolatingInterval: RI.RatInterval _ NIL -- NonNIL iff groundField real; isolating interval for the unique root of minimalPolynomial which is this real algebraic number. ]; AlgebraicNumbersClass: AC.StructureClass; RealAlgebraicNumbersClass: AC.StructureClass; FieldOfAlgebraicNumbersData: TYPE = REF FieldOfAlgebraicNumbersDataRec; FieldOfAlgebraicNumbersDataRec: TYPE = RECORD [ groundField: AC.Structure, minPolyRing: AC.Structure, real: BOOL ]; FieldOfAlgebraicNumbersOps: TYPE = REF FieldOfAlgebraicNumbersOpsRec; -- prop key is $FieldOfAlgebraicNumbers. FieldOfAlgebraicNumbersOpsRec: TYPE = RECORD [ makeAlgebraicNumber: AC.BinaryImbedOp ]; MakeFieldOfAlgebraicNumbers: PROC [minPolyRing: AC.Structure, real: BOOL] RETURNS [fieldOfAlgebraicNumbers: AC.Structure]; IsFieldOfAlgebraicNumbers: PROC [structure: AC.Structure] RETURNS [BOOL]; MakeAlgebraicNumber: PROC [structure: AC.Structure] RETURNS [AC.BinaryImbedOp]; MakeAlgebraicNum: AC.BinaryImbedOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; END. φAlgebraicNumbers.mesa Last Edited by: Arnon, June 10, 1985 4:19:22 pm PDT Types and Variables Class Records for Fields of Algebraic Numbers Instance Data for Fields of Algebraic Numbers Operations Unique to Fields of Algebraic Numbers Constructor for Field of Algebraic Numbers Extract Point Operations from Class Record Property Lists Constructor 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. IO Κ„˜Jšœ™J™3J˜šΟk ˜ Jšœœœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ ˜ —J˜head2šœœ ˜#J˜—Jš œœœœœ˜DheadšΟn™šœœœ˜"J˜—Jšœœœ˜7šœœœ˜'Jšœœ Οc‡˜ͺJšœœœŸ˜ͺJšœ˜——šœ-™-Icodešœœ˜)Mšœœ˜-—šœ-™-Mšœœœ ˜Gšœ œœ˜/Mšœ œ ˜Mšœ œ ˜Mšœ˜ M˜——šœ0™0Mšœœœ Ÿ(˜nšœœœ˜.Mšœœ˜%M˜——šœ*™*Mš žœœœœœœ ˜z—šœ9™9š žœœ œ œœ˜IM˜—Mš žœœ œ œœž œ˜O—šœ ™ šžœœ˜#Mš œŸ œ Ÿ1œŸ?œŸAœŸœz™——™šžœžœ˜J˜—šžœž œ˜J˜—šžœžœ˜J˜—Jšžœ˜J˜—J˜Jšœ˜—…— ‚