<> <> <> DIRECTORY Rope, Basics, IO, MathExpr, AlgebraClasses, Variables, VariableSequences, DistribPolys; Polynomials: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, DP: DistribPolys; <> Polynomial: TYPE = AC.Object; PolynomialData: TYPE = LIST OF Term; <> Term: TYPE = REF TermRec; TermRec: TYPE = RECORD [ exponent: CARDINAL, coefficient: AC.Object ]; <> PolynomialRingData: TYPE = REF PolynomialRingDataRec; PolynomialRingDataRec: TYPE = RECORD [ coeffRing: AC.Object, variable: Variables.Variable, -- main variable baseCoeffRing: AC.Object, -- not a polynomialStructure allVariables: VariableSequences.VariableSequence -- cumulative variables over baseCoeffRing ]; <> MakePolynomialStructure: AC.PolynomialStructureConstructor; <> <> <> <<>> <> PrintName: AC.PrintNameProc; ShortPrintName: AC.PrintNameProc; IsPolynomialStructure: AC.UnaryPredicate; CoeffRing: AC.UnaryOp; Variable: AC.UnaryOp; BaseCoeffRing: AC.UnaryOp; AllVariables: AC.UnaryOp; Characteristic: AC.StructureRankOp; <> Recast: AC.BinaryOp; CanRecast: AC.BinaryPredicate; ToExpr: AC.ToExprOp; LegalFirstChar: AC.LegalFirstCharOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; <<>> ToRope: AC.ToRopeOp; Write: AC.WriteOp; NewMainVariable: AC.BinaryOp; <> PolyToRope: PROC [in: Polynomial, termRope: Rope.ROPE _ NIL] RETURNS [out: Rope.ROPE]; <> WritePoly: PROC [in: Polynomial, out: IO.STREAM, termRope: Rope.ROPE _ NIL]; <> <<>> PolyFromDPoly: PROC [in: DP.DPolynomial, polynomialRing: AC.Object] RETURNS [out: Polynomial]; DPolyFromPoly: PROC [in: Polynomial] RETURNS [out: DP.DPolynomial]; <> Monomial: AC.BinaryImbedOp; <> <> LeadingCoefficient: AC.UnaryOp; <> <<>> Degree: AC.ElementRankOp; <> Reductum: AC.UnaryOp; <> <> Zero: AC.NullaryOp; One: AC.NullaryOp; Add: AC.BinaryOp; Negate: AC.UnaryOp; Subtract: AC.BinaryOp; Multiply: AC.BinaryOp; Power: AC.BinaryOp; Differentiate: AC.BinaryOp; <> IndefIntegrate: AC.BinaryOp; <> MainVarEval: AC.BinaryOp; <> AllVarEval: AC.BinaryOp; <> Subst: AC.BinaryOp; <> DegreeDelta: PROC [terms: LIST OF Term] RETURNS [CARDINAL]; <> SylvesterMatrix: AC.BinaryOp; <> Resultant: AC.BinaryOp; <> SignVars: AC.ElementRankOp; <> Reverse: AC.UnaryOp; <> <<>> Content: AC.UnaryOp; PrimitivePart: AC.UnaryOp; PseudoDivide: AC.BinaryToPairOp; <> <> TrialDivide: AC.BinaryToPairOp; <> <> <> <<>> Divide: AC.BinaryToPairOp; <> <> <<>> Remainder: AC.BinaryOp; <> ExactQuotient: AC.BinaryOp; <> GCD: AC.BinaryOp; GreatestSqFreeDivisor: AC.UnaryOp; <> <> <> Equal: AC.EqualityOp; IsZero: AC.UnaryPredicate; Sign: AC.CompareToZeroOp; <> Abs: AC.UnaryOp; Compare: AC.BinaryCompareOp; END.