module Solve: sig end
This module implements a solver for general systems of equations. The solver uses a simple worklist algorithm to solve the equation system.
The algorith proceeds as follows. The set of variables yet to be evaluated is kept in a worklist. It is initialized with the set X of variables in which we are interested. For every variable x considered so far, we (globally) maintain the current value together with a set infl(x) of certain variables y such that the evaluation of the right-hand side for y may access value s(x).
As long as the worklist is nonempty, the algorithm iteratively
extracts some variable x from teh worklist and evaluates the
right-hand side f of x on the current partial variable
assignment s. If the least upper bound of the old value
s(s) and f(s) is different from the old value,
the value of s for all y of infl(x), may no longer
be valid; therefore, they are added to the worklist. Afterwards,
infl(x) is reset to the empty set.
module type Domain = sig end
Solve.Make
representing the domain
of the equations.
module type ItemEq = sig end
Solve.Make
representing the variables.
module type Solver = sig end
Solve.Make
.
module Make: functor (Item : ItemEq) -> functor (Domain : Domain) -> sig end