module type GROUND = sig endGROUND. It must defines datatypes for constant bounds,
type constructors and row labels; and simultaneously operations on
them. One may distinguish two categories of such operations:
1. Algebraic operations, which allows manipulating the mathematical
properties of the provided objects,
2. Computational operations, which relate merely the internal
representation of these objects and allow efficient algorithms
(e.g. hashing, comparison, pretty-print...)
Constant bounds
|
The client must provide two sets of atomic constants, one for
representing variables lower bounds and another one for upper
bounds. These two sets must be equipped with a semi-lattice
structure.
module Lb: sig endLb specifies the set of constant lower bounds.
module Ub: sig endUb specifies the set of constant upper bounds.
module Lub: sig endLub provides functions relating lower and upper bounds.
Row labels
|
module Label: sig endLabel.
Type constructors
|
module Type: sig endType.