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: 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. HQECadStructure.mesa Last Edited by: Arnon, October 8, 1986 11:38:33 am PDT Cad Representation signatures: LIST OF SIGNATURES primaryPolynomials: SEQ.Sequence _ NIL, -- irreducible (<= r)-variate rational polynomials, all of which occur in the bases of some (possibly 0th) induced cad (and hence are invariant on all cells of the r-space cad), whose signs on each cell constitute its primarySignature In other words, the polynomials in primaryPolynomials may be in different numbers of vars. Poly eval routines are assumed to be able to cope with this, i.e. if asked to eval a poly in i variables at a point with i+j coordinates, will use first i coordinates. secondaryPolynomials: SEQ.Sequence _ NIL, -- same specs as primaryPolynomials, signs on each cell constitute its secondarySignature. Typically a superset of primaryPolynomials. projectionType: ProjectionType, -- dimension = 1 => projectionType = none abstractGraph: Graphs.Graph _ nullGraph, basisClusters: SEQ.Sequence _ NIL, -- of SignedRegions otherClusters: SEQ.Sequence _ NIL, -- of SignedRegions statistics: CadStatisticsRec, -- to be added later Instance Data for Cad Structures CadStructureData: TYPE = REF CadStructureDataRec; CadStructureDataRec: TYPE = RECORD [ samplePointVariable: Variables.Variable, -- = variable of appropriate Sample Point Structure, i.e. variable in terms of which the minimal polynomials of sample point primitive elements will be expressed, and so also SamplePoint coordinates polynomialRing: AC.Object -- for the input polynomials and the polynomials occurring in cell defining formulas. Length[allVariables] of this polynomial ring = ambientSpaceDimension of cell = ambientSpaceDimension of appropriate Covering Set Structure = dimension of appropriate Sample Point Structure. ]; Cad Structure Ops Conversion and IO Selectors Operations Args are a Sequence of Cells and a Cell Index Read a covering set file, and for each cell in the cad, hang its covering set off it. Find all cells having a given signature. Need to be able to specify whether we mean basis signature or input polynomial signature. สฺ˜Jšœ™J™6J˜J˜J™šฯk ˜ J˜Jšœ˜J˜Jšœ˜J˜ Jšœ˜J˜ Jšœ˜Jšœ ˜ J˜ J˜ J˜ J˜—J˜head2šœœ ˜!J˜—Jšœœœœœ œœœ œœ œœ˜ชheadšฯn™Jšœœœ˜J˜Jšœ œœ ˜šœ œœ˜Jšœ œฯc˜,Jšœœ Ÿ*˜OJšœœ œŸ4˜\Jšœœ Ÿ˜ฏJšœœ Ÿ˜/Jšœœ Ÿ9œŸ˜wJšœœ Ÿ[˜…Jšœœ Ÿ5˜]Jšœ4˜4Jšœœ œŸ;˜WJšœœŸ˜0JšœœŸ ˜J˜J™Jšœœ œŸ๋™“Jšœƒ™ƒJšœœ œŸˆ™ฒJšœ Ÿ)™IJšœ(™(Jšœœ œŸ™8Jšœœ œŸ™8Jšœ2™2J™J˜J˜—šœœ(˜J˜—šžœœ Ÿœ˜นJ˜—šžœœ ˜J˜—šž œœ ˜J˜—šž œœ ˜J˜—šž œœ ˜J˜—šž œœ ˜J˜——™ šž œœ ˜Mšœ-™-M™—šžœœœœ˜6J™VJ˜—šžœœ˜/J˜—šžœœ ˜ Jšœƒ™ƒJ˜—šžœœ Ÿ|˜’J˜——J˜šœ˜J˜—J˜—…— `‚