<> <> <> <<>> DIRECTORY Rope, IO, AlgebraClasses; QEClusterStructure: CEDAR DEFINITIONS ~ BEGIN <> ROPE: TYPE ~ Rope.ROPE; <> Cluster: TYPE = AlgebraClasses.Object; ClusterData: TYPE = REF ClusterDataRec; ClusterDataRec: TYPE ~ RECORD [ baseCluster: Cluster, repCell: CellIndex, -- representative cell samplePoint: Object, constituentCells: Object -- Sequence of CellIndex's, sorted into increasing order intraclusterAdjacencies: Object, -- Sequence of adjacencies, sorted into increasing (lexicographical) order. We need this to be able to find subclusters maximal with respect to the property of being contained in the boundary of some other cluster. Lemma: If one cell of cluster A is contained in the boundary of a cell of cluster B, then every cell of cluster A which is adjacent to a cell of cluster B is contained in the boundary of cluster B. <> basisSignature: QESignatureStructure.Signature, -- (see below) inputSignature: QESignatureStructure.Signature, -- (see below) satisfiesLocalization: BOOL _ FALSE, -- satisfies localization formula; default FALSE reflects default assumption of no localization inSolutionSet: BOOL, -- meaningless unless both this cluster and "solution set" in i-space ]; We can be keeping track of signatures of several different polynomial sequences simultaneously for a cluster, e.g. r-variate input polynomials, and basis polynomials in r and lower dimensions. Comparing names of signature Structures should enable us to keep them straight. When we construct initial clusters in i-space, signature polynomials will be be complete factors, i.e. all irreducible factors, of i-variate input polynomials. We get the signs of factors which are not i-variate basis polys (which we get from cells) by making this cells signature polys union of baseCluster signature polys and i-variate basis. <> <> <> <<>> ]; <> ClusterStructureData: TYPE = REF ClusterStructureDataRec; ClusterStructureDataRec: TYPE = RECORD [ cad: Cad ]; <> MakeNameStructure: AlgebraClasses.StructureConstructorProc; <> PrintName: AlgebraClasses.ToRopeOp; ShortPrintName: AlgebraClasses.ToRopeOp; IsNameStructure: AlgebraClasses.UnaryPredicate; SelectorProc: AlgebraClasses.UnaryOp; <> <<>> SelectorProc: 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; <> ClusterFromCell: AlgebraClasses.UnaryImbedOp; <> BinaryOp: AlgebraClasses.BinaryOp; UnaryOp: AlgebraClasses.UnaryOp; InitialClustersOverCluster: PROC; <> END.