QEClusterStructure.mesa
Last Edited by: Arnon, November 19, 1987 8:31:50 am PST
Structure Constructor: Clusters with respect to argument Structures.
DIRECTORY
Rope,
IO,
AlgebraClasses;
QEClusterStructure: CEDAR DEFINITIONS
~ BEGIN
Type Abbreviations
ROPE: TYPE ~ Rope.ROPE;
Element Representation
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.
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.
basisSignature: QESignatureStructure.Signature, -- (see below)
inputSignature: QESignatureStructure.Signature, -- (see below)
satisfiesLocalization: BOOLFALSE, -- 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.
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
ClusterStructureData: TYPE = REF ClusterStructureDataRec;
ClusterStructureDataRec: TYPE = RECORD [
cad: Cad
];
Structure Constructor
MakeNameStructure: AlgebraClasses.StructureConstructorProc;
Structure Operations
PrintName: AlgebraClasses.ToRopeOp;
ShortPrintName: AlgebraClasses.ToRopeOp;
IsNameStructure: AlgebraClasses.UnaryPredicate;
SelectorProc: AlgebraClasses.UnaryOp;
selector: data1
SelectorProc: AlgebraClasses.UnaryOp;
selector: data2
StructureData: AlgebraClasses.UnaryToListOp;
selector: returns LIST[definingSet, elementUniverse] of a Set Structure
Element Conversion and IO
Recast: AlgebraClasses.BinaryOp;
CanRecast: AlgebraClasses.BinaryPredicate;
ToExpr: AlgebraClasses.ToExprOp;
LegalFirstChar: AlgebraClasses.LegalFirstCharOp;
Read: AlgebraClasses.ReadOp;
FromRope: AlgebraClasses.FromRopeOp;
ToRope: AlgebraClasses.ToRopeOp;
Write: AlgebraClasses.WriteOp;
Element Constructor
ClusterFromCell: AlgebraClasses.UnaryImbedOp;
Element Operations
BinaryOp: AlgebraClasses.BinaryOp;
UnaryOp: AlgebraClasses.UnaryOp;
InitialClustersOverCluster: PROC;
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).
END.