Up

module Fix

: sig
#
module type IMPERATIVE_MAPS = sig
#
type key
#
type 'data t
#
val create : unit -> 'data t
#
val clear : 'data t -> unit
#
val add : key -> 'data -> 'data t -> unit
#
val find : key -> 'data t -> 'data
#
val iter : (key -> 'data -> unit) -> 'data t -> unit
end
#
module type PROPERTY = sig
#
type property
#
val bottom : property
#
val equal : property -> property -> bool
#
val is_maximal : property -> bool
end
#
module Make : functor (M : IMPERATIVE_MAPS) -> functor (P : PROPERTY) -> sig
#
type variable = M.key
#
type property = P.property
#
type valuation = variable -> property
#
type rhs = valuation -> property
#
type equations = variable -> rhs
#
val lfp : equations -> valuation
end
end