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 [
primaryKey: ROPE, -- key for search of LoganBerry DB
SELECT type:* FROM
onLine => [
repCell: Cell, -- representative cell
signatures: LIST OF QESignatureStructure.Signature, -- (see below)
truthValue: BOOL, -- result of formula evalution (e.g. at repCell sample point, or at signature), or determination of containment in solution set
constituentCells: LIST OF Cell,
AdjacencyFile -- intracluster adjacencies (11/87 - why do we need this?)
];
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.
offLine => [];
ENDCASE
];
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;
Recursively ToRopes all fields of the Cluster data. Can be a very large ROPE.
ToRopeOneLevel: AlgebraClasses.ToRopeOp;
Returns the value to store for the $Data attribute in the LoganBerry DB entry for this input item. Fields which contain QE Objects (i.e. objects stored in the LoganBerry DB are ToRope'd down to the QE Objects, which are ToOfflineRope'd (e.g. LIST OF Cell gets written as "(offLineCell, offLineCell, ...)". Other fields are simply ToRope'd.
ToOfflineRope: AlgebraClasses.ToRopeOp;
Returns a Rope for the Offline version of the object. When writing out the Object's Structure, QE Objects in the StructureData are ToOfflineRope'd.
Write: AlgebraClasses.WriteOp;
Element Constructor
ClusterFromCell: AlgebraClasses.UnaryImbedOp;
Element Selector
ToLBPrimaryKey: AlgebraClasses.ToRopeOp;
Returns the value to store for the primary attribute of the LoganBerry DB.
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.