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