<> <> <<>> DIRECTORY Rope, IO, AlgebraClasses, BigRats, RatIntervals, VariableSequences, Polynomials, AlgebraicNumbers, Sequences, Formulas, SamplePoints, CoveringSets, Cells; QECadStructure: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, BR: BigRats, RI: RatIntervals, AN: AlgebraicNumbers, SEQ: Sequences, POL: Polynomials, QFF: Formulas, SP: SamplePoints, CS: CoveringSets; <> Cad: TYPE = AC.Object; CadData: TYPE = REF CadDataRec; CadDataRec: TYPE = RECORD [ dimension: CARDINAL, -- Define r = dimension givenInputPolynomials: SEQ.Sequence, -- r-variate polynomials in inputVariables localizationFormula: QFF.Formula _ NIL, -- involving r-variate polynomials in inputVariables inputPolynomials: SEQ.Sequence, -- givenInputPolynomials + localizationFormula polynomials; localizationFormula = NIL => inputPolynomials = givenInputPolynomials. Initial subsequence assumed to be Contents[parentCad.inputPolynomials], to facilitate computation of inputSignatures for Cells of parentCad basis: SEQ.Sequence, -- finest squarefree basis inputPolynomialFactorizations: SEQ.Sequence, -- of CompleteFactorization's, in 1-1 correspondence with inputPolynomials basisIndividualProjections: SEQ.Sequence, -- of OnePolynomialProjection's; dimension = 1 => NIL. Need not be in same order as basis. basisPairwiseProjections: SEQ.Sequence, -- of TwoPolynomialProjection's; dimension = 1 => NIL minPolyVariable: VariableSequences.VariableSequence, cells: SEQ.Sequence _ NIL, -- of cells, in lexicographic order (for binary searching) inducedCad: Cad _ NIL, -- dimension = 1 => NIL parentCad: Cad _ NIL -- if any <> <> <> <> < projectionType = none>> <> <> <> <> <<>> ]; ProjectionType: TYPE = QEProjectionStructure.ProjectionType; Adjacency: TYPE = RECORD[ lowerDimCell, higherDimCell: Cells.Cell ]; SignedRegion: TYPE = REF; Stack: TYPE = REF; <> <> <> <> <> <<>> <<];>> <> MakeCadStructure: AC.TrueNullaryOp; <<>> PrintName: AC.ToRopeOp; ShortPrintName: AC.ToRopeOp; IsCadStructure: AC.UnaryPredicate; <<>> <> Recast: AC.BinaryOp; CanRecast: AC.BinaryPredicate; ToExpr: AC.ToExprOp; LegalFirstChar: AC.LegalFirstCharOp; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; <> Dimension: AC.UnaryOp; InputPolynomials: AC.UnaryOp; MinPolyVariable: AC.UnaryOp; Basis: AC.UnaryOp; Contents: AC.UnaryOp; -- If r = 1, then returns empty Sequence BasisProjection: AC.UnaryOp; -- If r = 1, then returns empty Sequence. Otherwise returns a Sequence of polynomials obtained from basisIndividualProjections and basisPairwiseProjections CadCells: AC.UnaryOp; InducedCad: AC.UnaryOp; ParentCad: AC.UnaryOp; BasisClusters: AC.UnaryOp; OtherClusters: AC.UnaryOp; <> LookupCell: AC.BinaryOp; <> <<>> ReadCoveringSets: PROC [in: IO.STREAM, cad: Cads.Cad]; <> CoveringSetsFromLinearRope: AC.BinaryInPlaceOp; CellsWithSignature: AC.BinaryOp; <> Cluster: AC.BinaryOp; -- extract the clusters of a cad. Need to be able to specify whether we mean basis signature or input polynomial signature. END.