module type GROUND = sig end
GROUND
. 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, prettyprint...)
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 semilattice
structure.
module Lb: sig end
Lb
specifies the set of constant lower bounds.
module Ub: sig end
Ub
specifies the set of constant upper bounds.
module Lub: sig end
Lub
provides functions relating lower and upper bounds.
Row labels

module Label: sig end
Label
.
Type constructors

module Type: sig end
Type
.