DIRECTORY Rope, IO, AlgebraClasses, Ints, BigRats, RatIntervals, Variables, Polynomials, AlgebraicNumbers, Points, Sequences, Formulas, SamplePoints, Colors, CoveringSets; Cells: CEDAR DEFINITIONS ~ BEGIN OPEN AC: AlgebraClasses, BR: BigRats, RI: RatIntervals, VARS: Variables, AN: AlgebraicNumbers, PTS: Points, SEQ: Sequences, POL: Polynomials, QFF: Formulas, SP: SamplePoints, CS: CoveringSets; Cell: TYPE = AC.Object; CellIndex: TYPE = PTS.Point; -- of Ints Signature: TYPE = PTS.Point; -- of FormulaOperators.Operators CellData: TYPE = REF CellDataRec; CellDataRec: TYPE = RECORD [ cad: AC.Object _ NIL, -- access to the cad to which this cell belongs dimension: CARDINAL _ 0, -- = sum of parities of index components index: CellIndex, -- length of index (= cad.dimension) is dimension r of ambient space adjacentCells: SEQ.Sequence _ NIL, -- of cells, in lexicographic order (for binary searching). basisSignature: Signature _ NIL, -- signature with respect to cad.basis inputSignature: Signature _ NIL, -- signature with respect to cad.inputPolynomials primarySignature: Signature _ NIL, -- with respect to cad.primaryPolynomials primaryRegion: NAT _ 0, -- which signed component wrt primarySignature secondarySignature: Signature _ NIL, -- with respect to cad.secondaryPolynomials secondaryRegion: NAT _ 0, -- which signed component wrt secondarySignature samplePoint: SP.SamplePoint _ NIL, definingFormula: QFF.Formula _ NIL, identicallyZeroBasisElements: SEQ.Sequence _ NIL, -- of polynomials, elements of cad.basis which are identically zero on this cell; currently used only for degenerate 0-cells in E^2. sectionDefiningPolynomial: POL.Polynomial _ NIL, -- possibly nonNIL for sections only; r-variate integral polynomial whose variety contains it (used by display) sectionDefiningPolynomialRoot: NAT _ 0, -- which real root of sectionDefiningPolynomial is this section (over base of this stack) (used by display) coveringSet: CS.CoveringSet _ NIL, color: Colors.Color _ NIL -- paint this color in display ]; cellStructureClass: AC.StructureClass; CellStructureData: TYPE = REF CellStructureDataRec; CellStructureDataRec: TYPE = RECORD [ inputPolynomialRing: AC.Structure, minPolyRing: AC.Structure, basisSignatureStructure: AC.Structure ]; CellOps: TYPE = REF CellOpsRec; -- prop key is $CellStructure. CellOpsRec: TYPE = RECORD [ cad: AC.UnaryOp, adjacentCells: AC.UnaryOp, basisSignature: AC.UnaryOp, samplePoint: AC.UnaryOp, definingFormula: AC.UnaryOp, coveringSet: AC.UnaryOp, color: AC.UnaryOp, setColor: AC.BinaryInPlaceOp, boundingBox: AC.UnaryOp, display2D: AC.Display2DOp ]; MakeCellStructure: PROC [inputPolynomialRing, minPolyRing: AC.Structure, numBasisElements: CARDINAL] RETURNS [cellStructure: AC.Structure]; IsCellStructure: PROC [structure: AC.Structure] RETURNS [BOOL]; Cad: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; AdjacentCells: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; BasisSignature: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; SamplePoint: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; DefiningFormula: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; CoveringSet: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; Color: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; SetColor: PROC [structure: AC.Structure] RETURNS [AC.BinaryInPlaceOp]; BoundingBox: PROC [structure: AC.Structure] RETURNS [AC.UnaryOp]; Display2D: PROC [structure: AC.Structure] RETURNS [AC.Display2DOp]; Read: AC.ReadOp; FromRope: AC.FromRopeOp; ToRope: AC.ToRopeOp; Write: AC.WriteOp; SetCad: PROC [cell, cad: AC.Object]; GetCad: AC.UnaryOp; CellDim: AC.ElementRankOp; AdjCells: AC.UnaryOp; BasisSig: AC.UnaryOp; SamplePt: AC.UnaryOp; DefiningForm: AC.UnaryOp; CoverSet: AC.UnaryOp; Col: AC.UnaryOp; SetCol: AC.BinaryInPlaceOp; BoundBox: AC.UnaryOp; Disp2D: AC.Display2DOp; END. πCells.mesa Last Edited by: Arnon, May 3, 1986 3:53:47 pm PDT Cell Representation abstractVertex: Graphs.Vertex _ Graphs.nullVertex, extensionData: ExtensionData _ NIL, -- needed by current E^3 adjacency algorithm Class for Cell Structures Instance Data for Cell Structures Operations Unique to Cell Structures Cell Structure Constructor Extract Cell Operations from Class Property Lists Format is [minX, maxX, minY, maxY, ...], each element is a Reals.Real Conversion and IO Operations Κπ˜Jšœ ™ J™1J˜J™šΟk ˜ Icodešœ˜Kšœ˜J˜J˜Jšœ˜J˜ Jšœ ˜ J˜ Jšœ˜Jšœ˜Jšœ ˜ J˜ J˜ Jšœ˜J˜ J˜—head2šΟnœœ ˜J˜—Jšœœœœœ œœ œœ œ œœ œœ˜Ιheadšž™šœœœ˜J˜—Jšœ œœΟc ˜'J˜Jšœ œœŸ ˜=J˜Jšœ œœ ˜!šœ œœ˜Jšœœ œŸ/˜EJšœ œœŸ*˜CJšœŸE˜XJšœ2™2Jšœœ œŸ;˜_JšœœŸ&˜GJšœœŸ1˜RJšœœŸ)˜LJšœœŸ.˜FJšœ œŸ+˜PJšœœŸ0˜JJšœ œœ˜"Jšœœ œ˜#JšœœŸ,™QJšœœ œŸ„˜ΆJšœœœŸo˜ JšœœŸk˜“Jšœ œœ˜"JšœœŸ˜8Jšœ˜——šœ™Kšœœ˜&—šœ!™!Kšœœœ˜3šœœœ˜%Jšœœ ˜"Jšœ œ ˜Jšœœ ˜%K˜——šœ$™$Kšœ œœ Ÿ˜>šœ œœ˜Kšœœ ˜Kšœœ ˜Kšœœ ˜Kšœ œ ˜Kšœœ ˜Kšœ œ ˜Kšœœ ˜Kšœ œ˜Kšœ œ ˜Kšœ œ ˜K˜——šœ™š žœœ$œœœœ ˜‹J™——šœ1™1š žœœ œ œœ˜?K™—š žœœ œ œœ ˜9K˜—š ž œœ œ œœ ˜CK˜—š žœœ œ œœ ˜DK˜—š ž œœ œ œœ ˜AK˜—š žœœ œ œœ ˜EK˜—š ž œœ œ œœ ˜AK˜—š žœœ œ œœ ˜;K˜—š žœœ œ œœ˜FK˜—š ž œœ œ œœ ˜AKšœE™EK˜—š ž œœ œ œœ˜CK˜——šœ™šžœœ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—Jšžœ ˜J˜—™ šžœœ œ ˜$J˜—šžœœ ˜J˜—šžœœ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šž œœ ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—šžœœ˜J˜—šžœœ ˜J˜—šžœœ ˜J˜—J˜—Jšœ˜—…—*