Up
module
Dgraph
:
sig
#
module
Make :
functor
(N :
sig
#
type
t
end
)
->
functor
(NSet :
Set
.
S
with
type
elt
=
N
.
t
)
->
functor
(NMap :
Map
.
S
with
type
key
=
N
.
t
)
->
sig
#
type
t = {
#
domain
:
NSet
.
t
;
#
fold_children
: 'a . (
N
.
t
->
'a
->
'a)
->
N
.
t
->
'a
->
'a
;
}
#
val
invert :
t
->
t
#
module type
DOMAIN =
sig
#
type
t
#
val
equal :
t
->
t
->
bool
#
val
bot :
t
end
#
module
Solver :
functor
(D :
DOMAIN
)
->
sig
#
val
f :
t
->
(
D
.
t
NMap
.
t
->
N
.
t
->
D
.
t
)
->
D
.
t
NMap
.
t
end
end
#
module type
ISet =
sig
#
type
t
#
type
elt
#
val
iter : (
elt
->
unit)
->
t
->
unit
#
val
mem :
t
->
elt
->
bool
#
val
add :
t
->
elt
->
unit
#
val
remove :
t
->
elt
->
unit
#
val
copy :
t
->
t
end
#
module type
Tbl =
sig
#
type
'a t
#
type
key
#
type
size
#
val
get : 'a
t
->
key
->
'a
#
val
set : 'a
t
->
key
->
'a
->
unit
#
val
make :
size
->
'a
->
'a
t
end
#
module
Make_Imperative :
functor
(N :
sig
#
type
t
end
)
->
functor
(NSet :
ISet
with
type
elt
=
N
.
t
)
->
functor
(NTbl :
Tbl
with
type
key
=
N
.
t
)
->
sig
#
type
t = {
#
domain
:
NSet
.
t
;
#
iter_children
: (
N
.
t
->
unit)
->
N
.
t
->
unit
;
}
#
val
invert :
NTbl
.
size
->
t
->
t
#
module type
DOMAIN =
sig
#
type
t
#
val
equal :
t
->
t
->
bool
#
val
bot :
t
end
#
module
Solver :
functor
(D :
DOMAIN
)
->
sig
#
val
f :
NTbl
.
size
->
t
->
(
D
.
t
NTbl
.
t
->
N
.
t
->
D
.
t
)
->
D
.
t
NTbl
.
t
end
end
end