CadDataRec:
TYPE =
RECORD [
dimension: CARDINAL, -- Define r = dimension
localizationFormula: QFF.Formula ← NIL, -- r-variate rational polynomials in inputVariables
inputPolynomials: SEQ.Sequence, -- of r-variate rational polynomials in inputVariables
minPolyVariable: VARS.VariableSeq,
basis: SEQ.Sequence, -- irreducible r-variate rational polynomials
primaryPolynomials: SEQ.Sequence ← NIL, -- irreducible (<= r)-variate rational polynomials, all of which occur in the bases of some (possibly 0th) induced cad (and hence are invariant on all cells of the r-space cad), whose signs on each cell constitute its primarySignature
In other words, the polynomials in primaryPolynomials may be in different numbers of vars. Poly eval routines are assumed to be able to cope with this, i.e. if asked to eval a poly in i variables at a point with i+j coordinates, will use first i coordinates.
secondaryPolynomials: SEQ.Sequence ← NIL, -- same specs as primaryPolynomials, signs on each cell constitute its secondarySignature. Typically a superset of primaryPolynomials.
contents: SEQ.Sequence, -- (r-1)-variate rational polynomials; dimension = 1 => NIL
basisProjection: SEQ.Sequence, -- (r-1)-variate rational polynomials; dimension = 1 => NIL
projectionType: ProjectionType, -- dimension = 1 => projectionType = none
abstractGraph: Graphs.Graph ← nullGraph,
cells: SEQ.Sequence ← NIL, -- of cells, in lexicographic order (for binary searching)
basisClusters: SEQ.Sequence ← NIL, -- of SignedRegions
otherClusters: SEQ.Sequence ← NIL, -- of SignedRegions
statistics: CadStatisticsRec, -- to be added later
inducedCad: Cad ← NIL, -- dimension = 1 => NIL
parentCad: Cad ← NIL -- if any
];