`module type SCHEME_ROOT = ``sig end`

A (type) scheme is made of a constraint set and a series of entry
nodes, its roots. The same instance of the library may deal with
several form of schemes. Each of them has to be described by an
implementation of the signature

`SCHEME_ROOT`

.`type t `

The type of schemes.

`val cset : ``t -> Dalton.Make.cset`

`cset sh`

returns the constraint set of the scheme `sh`

.`val copy : ``Dalton.Make.cset ->`

(Dalton.Make.node -> Dalton.Make.node) ->

t -> t

`copy cset' f sh`

creates a new scheme `sh'`

as follows:- the constraint set of
`sh'`

is`cset'`

, - each root of
`sh'`

is obtained by applying`f`

on the corresponding root of`sh`

.

`val iter : ``(Dalton_aux.variance -> Dalton.Make.node -> unit) ->`

t -> unit

`iter f sh`

applies `f`

on every root of `sh`

(with the
variance of the root as first argument).`val iter2 : ``(Dalton_aux.variance -> Dalton.Make.node -> Dalton.Make.node -> unit) ->`

t -> t -> unit

`iter2 f sh1 sh2`

applieas `f`

on every pair of corresponding
roots of `sh1`

and `sh2`

(with the variance of the roots as first
argument).`val fprint : ``Format.formatter ->`

Dalton.Make.cset Dalton_aux.printer ->

(Dalton_aux.variance -> Format.formatter -> Dalton.Make.node -> unit) ->

t -> unit

`fprint ppf print_cset print_node sh`

pretty prints the scheme
`sh`

on the formatter `ppf`

. Two functions are provided as argument
to allow printing of information handled by the solver:`print_cset ppf cset`

prints the constraint set`cset`

on the formatter`ppf`

`print_node v ppf nd`

prints the node`nd`

of variance`v`

on the formatter`ppf`

.