
Roberto Bagnara wrote:
[...]
The same sin is committed by Constraint, Generator and so forth. I believe we should stick to one, unambiguous definition of "space dimension" and be consistent with it throughout the library.
If a Constraint/Generator has to become a syntactic object, then several things have to be changed, besides the space dimension issue. Currently, a Constraint is an affine half-space or an affine hyperplane, i.e., a semantic object. This allows for the automatic normalization of the variables' coefficients and of the inhomogeneous term, as well as for semantic comparisons. Therefore, if I understand what you mean, we should maybe have both a semantic and a syntactic constraint (with appropriate naming schemes).
For instance, considering polyhedra, the semantic constraints should correspond to, say, Hyperplane, Closed_Halfspace and Open_Halfspace. Their syntactic counterpart is given by linear constraints (or affine constraints, if we want to be terminologically strict) having rational coefficients.
Similarly, the semantic generators will be (automatically normalized) lines, rays, points and closure points, all having integer coefficients and (for points and closure points) a divisor. Their syntactic counterparts are given by (possibly un-normalized) vectors having rational coefficients.
We know what "space dimension" is for a semantic object: it is also clearly stated in the documentation. We need to find a similar definition that works for syntactic objects (such as the minimum space dimension for which the object makes sense) or conclude that the notion of "space dimension" should be reserved to semantic objects only and find another name for this other concept. Feedback is welcome on all these points. Ciao,
Roberto
When considering systems of semantic objects, all the object in a system will have the same space dimension. They can be reordered and modified as long as the semantics of the system stays the same. We can add/remove redundant objects in the multiset.
In contrast, a system of syntactic objects is a list of syntactic objects: should reordering and/or semantics-preserving modifications be allowed on it? What is the "space dimension" of this object? The maximum of the "space dimensions" of the objects it contains?
To keep it short, I think that this change of perspective has to be carefully considered, one facet at a time, striving for maximum consistency and clarity. It will take some time to foresee all of the possible consequences of any design change in this respect ...
Ciao, Enea.