Std.SolutionA solution to a system of fixed-point equations.
We represent the solution to a system of fixed-point equations as a pair of a finite mapping M that associates a variable (a node) with its value, and a default value, that is a value of all variables that are not in M.
val create : ('n, 'd, _) Core_kernel.Map.t -> 'd -> ('n, 'd) tcreate constraints default creates an initial approximation of a solution. The default parameter defines the default value of all variables unspecified in the initial constraints.
For the returned value s the following is true:
not(is_fixpoint s)iterations s = 0get s x = constraints[x] if x in constraints else defaultequal s1 s2 is true if s1 and s2 are equal solutions.
Two solutions are equal if for all x in the data domain 'd, we have that equal s1[x] s2[x].
val iterations : ('n, 'd) t -> intiterations s returns the total number of iterations that was made to obtain the current solution.
val default : ('n, 'd) t -> 'ddefault s return the default value assigned to all variables not in the internal finite mapping. This is usually a bottom or top value, depending on whether iteration increases or decreases.
val enum : ('n, 'd) t -> ('n * 'd) Core_kernel.Sequence.tenum xs enumerates all non-trivial values in the solution.
A value is non-trivial if it differs from the default value.
val is_fixpoint : ('n, 'd) t -> boolis_fixpoint s is true if the solution is a fixed point solution, i.e., is a solution that stabilizes the system of equations.
val get : ('n, 'd) t -> 'n -> 'dget s x returns a value of x.