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