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
.