DIRECTORY Rope USING [ROPE], IO, AlgebraClasses, RatIntervals, ASPolynomialStructure; ASAlgebraicNumberStructure: CEDAR DEFINITIONS = BEGIN 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. ]; FieldOfAlgebraicNumbersData: TYPE = REF FieldOfAlgebraicNumbersDataRec; FieldOfAlgebraicNumbersDataRec: TYPE = RECORD [ groundField: AlgebraClasses.Object, minPolyRing: AlgebraClasses.Object, real: BOOL ]; MakeFieldOfAlgebraicNumbers: PROC [minPolyRing: AlgebraClasses.Object, real: BOOL] RETURNS [fieldOfAlgebraicNumbers: AlgebraClasses.Object]; PrintName: AlgebraClasses.ToRopeOp; ShortPrintName: AlgebraClasses.ToRopeOp; IsFieldOfAlgebraicNumbers: PROC [structure: AlgebraClasses.Object] RETURNS [BOOL]; GroundField: AlgebraClasses.UnaryOp; MinPolyRing: 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; MakeAlgebraicNumber: AlgebraClasses.BinaryImbedOp; BinaryOp: AlgebraClasses.BinaryOp; UnaryOp: AlgebraClasses.UnaryOp; END. ASAlgebraicNumberStructure.mesa Last Edited by: Arnon, June 10, 1985 4:19:22 pm PDT Element Representation Structure Instance Data Structure Constructor Structure Operations selector: groundField selector: minPolyRing selector: returns LIST[groundField, minPolyRing] of a FieldOfAlgebraicNumbers Structure Element Conversion and IO Element 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. Element Operations Κw˜Jšœ™J™3J˜šΟk ˜ Jšœœœ˜Jšœ˜Jšœ˜Jšœ ˜ Jšœ˜—J˜head2šœœ ˜-J˜—Jš˜headšΟn™šœœ˜.J˜—Jšœœœ˜7šœœœ˜'Jšœ5Οc‡˜ΌJšœ0œŸ˜ΆJšœ˜——šœ™Icodešœœœ ˜Gšœ œœ˜/Mšœ#˜#Mšœ#˜#Mšœ˜ M˜——™Mšžœœ,œœ2˜Œ—šœ™šž œ˜#M˜—šžœ˜(M˜—šžœœ$œœ˜RM˜—šž œ˜$Jšœ™J™—šž œ˜$Jšœ™J™—šž œ˜,JšœX™X——šœ™šžœ˜ J˜—šž œ!˜*J˜—šžœ˜ J˜—šžœ"˜0J˜—šžœ˜J˜—šžœ˜$J˜—šžœ˜ J˜—Jšžœ˜—šœ™šžœ˜2Mš œŸ œ Ÿ1œŸ?œŸAœŸœz™——šœ™šž œ˜$J˜—šž œ˜"J˜——J˜Jšœ˜—…—Ά ;