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. €QEClusterStructure.mesa Last Edited by: Arnon, November 19, 1987 8:31:50 am PST Structure Constructor: Clusters with respect to argument Structures. Type Abbreviations Element Representation So given clusters A and B, we first find all cells of A adjacent to a cell of B, then we use intraclusterAdjacencies to find maximal clusters among these. Rule: signature polynomials are elements of i-variate basis for some i. However nothing assumed about the order in which they occur in the PolynomialSequenceFile. Rule: a cluster's set or signature polynomials is as large as possible, i.e. is the largest collection of basis polynomials that is invariant on the constituent cells of this cluster. Thus for example, when we are not doing any pasting of clusters as we extend our cad, i.e. clusters just have one constituent cell, i.e. "original" cad algorithm, then signature polys in dimension i should be collection of all i and lower dimensional basis polynomials. Note: to get a cluster's rep cell sample point, you have to look in the stack file containing the rep cell. Assert: there will always exist a stack file containing any cluster's rep cell. Structure Instance Data Structure Constructor Structure Operations selector: data1 selector: data2 selector: returns LIST[definingSet, elementUniverse] of a Set Structure Element Conversion and IO Element Constructor Element Operations firstArg _ baseCluster from LowerDimCluster environment variable. Set LowerDimCell environment variable to representative cell of baseCluster. Call ExtendCellToStack. Retrieve the stack it writes from CurrentDimStack environment variable. Build initial clusters over baseCluster, write them out as a single ClusterFile. Rep cell of each initial cluster is appropriate element of stack over rep cell of baseCluster. Cluster signature polynomials are union of baseCluster signature polynomials and this dimensional basis (cf. ClusterFile format). Κ˜Jšœ™J™7J˜JšœD™DJ™šΟk ˜ Icodešœ˜Kšœ˜Kšœ˜—Ihead2šΟnœœ ˜%Jšœ˜headšž™Kšœœœ˜—šž™Jšœ œ˜&J˜Jšœ œœ˜'šœœ˜šœ˜Jšœ˜JšœΟc˜*Jšœ˜JšœŸ8˜Ršœ"ŸK˜mJšŸŒ˜ŒJšŸΖ˜ΖJšœ›™›—Jšœ1Ÿ˜?Jšœ1Ÿ˜?JšœœœŸ+Ÿ/˜„JšœœŸE˜ZK˜J˜JšŸ‘˜‘JšŸΩ˜ΩJšŸŒœ™£J™ΗšœΌ™ΌJ™—J˜———šœ™Kšœœœ˜9šœœœ˜(Jšœ˜K˜——™KšžœŸœ˜?—šœ™šž œ˜#K˜—šžœ˜(K˜—šžœ ˜1J˜—šžœ˜'Jšœ Οtœ ™J™—šžœ˜'Jšœ  œ ™J™—šž œ˜,JšœH™H——šœ™šžœ˜ J˜—šž œ!˜*J˜—šžœ˜ J˜—šžœ"˜0J˜—šžœ˜J˜—šžœ˜$J˜—šžœ˜ J˜—Jšžœ˜—šœ™Jšžœ˜-—šœ™šž œ˜$J˜—Jšž œ˜"J˜šžœœ˜!Kšœ•žœύ™£K˜J˜——J˜Jšœ˜—…— ’8