sig
  module type IndexedType =
    sig
      type t
      val index : Index.IndexedType.t -> int
      val inverse : int -> Index.IndexedType.t
    end
  module type Map =
    sig
      type key
      type 'a t
      val size : 'a Index.Map.t -> int
      val create : 'a -> 'a Index.Map.t
      val is_empty : 'a Index.Map.t -> bool
      val mem : 'a Index.Map.t -> Index.Map.key -> bool
      val find : 'a Index.Map.t -> Index.Map.key -> 'a
      val add : 'a Index.Map.t -> Index.Map.key -> 'a -> unit
      val replace : 'a Index.Map.t -> Index.Map.key -> 'a -> unit
      val copy : 'a Index.Map.t -> 'a Index.Map.t
      val iter : (Index.Map.key -> 'a -> unit) -> 'a Index.Map.t -> unit
      val iter_const :
        ('a -> Index.Map.key -> 'b -> unit) -> 'a -> 'b Index.Map.t -> unit
      val fold :
        ('a -> Index.Map.key -> 'b -> 'a) -> 'a -> 'b Index.Map.t -> 'a
      val fold_const :
        ('a -> 'b -> Index.Map.key -> 'c -> 'b) ->
        'a -> 'b -> 'c Index.Map.t -> 'b
      val modify : ('a -> 'a) -> 'a Index.Map.t -> unit
      val modify_const : ('a -> 'b -> 'b) -> 'a -> 'b Index.Map.t -> unit
      val set_all : 'a Index.Map.t -> 'a -> unit
    end
  module Make_map :
    functor (I : IndexedType) ->
      sig
        type key = I.t
        type 'a t
        val size : 'a t -> int
        val create : 'a -> 'a t
        val is_empty : 'a t -> bool
        val mem : 'a t -> key -> bool
        val find : 'a t -> key -> 'a
        val add : 'a t -> key -> 'a -> unit
        val replace : 'a t -> key -> 'a -> unit
        val copy : 'a t -> 'a t
        val iter : (key -> 'a -> unit) -> 'a t -> unit
        val iter_const : ('a -> key -> 'b -> unit) -> 'a -> 'b t -> unit
        val fold : ('a -> key -> 'b -> 'a) -> 'a -> 'b t -> 'a
        val fold_const :
          ('a -> 'b -> key -> 'c -> 'b) -> 'a -> 'b -> 'c t -> 'b
        val modify : ('a -> 'a) -> 'a t -> unit
        val modify_const : ('a -> 'b -> 'b) -> 'a -> 'b t -> unit
        val set_all : 'a t -> 'a -> unit
      end
  module Nat_map :
    sig
      type key = int
      type 'a t
      val size : 'a t -> int
      val create : 'a -> 'a t
      val is_empty : 'a t -> bool
      val mem : 'a t -> key -> bool
      val find : 'a t -> key -> 'a
      val add : 'a t -> key -> 'a -> unit
      val replace : 'a t -> key -> 'a -> unit
      val copy : 'a t -> 'a t
      val iter : (key -> 'a -> unit) -> 'a t -> unit
      val iter_const : ('a -> key -> 'b -> unit) -> 'a -> 'b t -> unit
      val fold : ('a -> key -> 'b -> 'a) -> 'a -> 'b t -> 'a
      val fold_const :
        ('a -> 'b -> key -> 'c -> 'b) -> 'a -> 'b -> 'c t -> 'b
      val modify : ('a -> 'a) -> 'a t -> unit
      val modify_const : ('a -> 'b -> 'b) -> 'a -> 'b t -> unit
      val set_all : 'a t -> 'a -> unit
    end
  module type Map2 =
    sig
      type key0
      type key1
      type 'a t
      val create : int -> int -> 'a Index.Map2.t
      val mem : 'a Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> bool
      val find : 'a Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> 'a
      val set :
        'a Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> 'a -> unit
      val remove :
        'a Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> unit
    end
  module Nat_map2 :
    functor (J : Hashtbl.HashedType) ->
      sig
        type key0 = int
        type key1 = J.t
        type 'a t
        val create : int -> int -> 'a t
        val mem : 'a t -> key0 -> key1 -> bool
        val find : 'a t -> key0 -> key1 -> 'a
        val set : 'a t -> key0 -> key1 -> 'a -> unit
        val remove : 'a t -> key0 -> key1 -> unit
      end
  module Make_map2 :
    functor (I : IndexedType) ->
      functor (J : Hashtbl.HashedType) ->
        sig
          type key0 = I.t
          type key1 = J.t
          type 'a t
          val create : int -> int -> 'a t
          val mem : 'a t -> key0 -> key1 -> bool
          val find : 'a t -> key0 -> key1 -> 'a
          val set : 'a t -> key0 -> key1 -> 'a -> unit
          val remove : 'a t -> key0 -> key1 -> unit
        end
  module type Set =
    sig
      type elt
      type t
      val create : unit -> Index.Set.t
      val size : Index.Set.t -> int
      val is_empty : Index.Set.t -> bool
      val mem : Index.Set.t -> Index.Set.elt -> bool
      val add : Index.Set.t -> Index.Set.elt -> unit
      val remove : Index.Set.t -> Index.Set.elt -> unit
      val clear : Index.Set.t -> unit
      val iter : (Index.Set.elt -> unit) -> Index.Set.t -> unit
      val iter_const :
        ('a -> Index.Set.elt -> unit) -> 'a -> Index.Set.t -> unit
      val fold : ('a -> Index.Set.elt -> 'a) -> 'a -> Index.Set.t -> 'a
      val fold_const :
        ('a -> 'b -> Index.Set.elt -> 'b) -> 'a -> 'b -> Index.Set.t -> 'b
    end
  module Make_set :
    functor (I : IndexedType) ->
      sig
        type elt = I.t
        type t
        val create : unit -> t
        val size : t -> int
        val is_empty : t -> bool
        val mem : t -> elt -> bool
        val add : t -> elt -> unit
        val remove : t -> elt -> unit
        val clear : t -> unit
        val iter : (elt -> unit) -> t -> unit
        val iter_const : ('a -> elt -> unit) -> 'a -> t -> unit
        val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a
        val fold_const : ('a -> 'b -> elt -> 'b) -> 'a -> 'b -> t -> 'b
      end
  module Nat_set :
    sig
      type elt = int
      type t
      val create : unit -> t
      val size : t -> int
      val is_empty : t -> bool
      val mem : t -> elt -> bool
      val add : t -> elt -> unit
      val remove : t -> elt -> unit
      val clear : t -> unit
      val iter : (elt -> unit) -> t -> unit
      val iter_const : ('a -> elt -> unit) -> 'a -> t -> unit
      val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a
      val fold_const : ('a -> 'b -> elt -> 'b) -> 'a -> 'b -> t -> 'b
    end
  module Make_hashed_set :
    functor (H : Hashtbl.HashedType) ->
      sig
        type elt = H.t
        type t
        val create : unit -> t
        val size : t -> int
        val is_empty : t -> bool
        val mem : t -> elt -> bool
        val add : t -> elt -> unit
        val remove : t -> elt -> unit
        val clear : t -> unit
        val iter : (elt -> unit) -> t -> unit
        val iter_const : ('a -> elt -> unit) -> 'a -> t -> unit
        val fold : ('a -> elt -> 'a) -> 'a -> t -> 'a
        val fold_const : ('a -> 'b -> elt -> 'b) -> 'a -> 'b -> t -> 'b
      end
  module type PriorityQueue =
    sig
      type elt
      type t
      val create : Index.PriorityQueue.elt -> Index.PriorityQueue.t
      val length : Index.PriorityQueue.t -> int
      val is_empty : Index.PriorityQueue.t -> bool
      val mem : Index.PriorityQueue.t -> Index.PriorityQueue.elt -> bool
      val head : Index.PriorityQueue.t -> Index.PriorityQueue.elt
      val enqueue : Index.PriorityQueue.t -> Index.PriorityQueue.elt -> unit
      val dequeue : Index.PriorityQueue.t -> Index.PriorityQueue.elt
      val drop : Index.PriorityQueue.t -> unit
      val priority :
        Index.PriorityQueue.t -> Index.PriorityQueue.elt -> float
      val inc_priority :
        Index.PriorityQueue.t -> Index.PriorityQueue.elt -> float -> unit
      val scale : Index.PriorityQueue.t -> float -> unit
    end
  module Make_priority_queue :
    functor (I : IndexedType) ->
      sig
        type elt = I.t
        type t
        val create : elt -> t
        val length : t -> int
        val is_empty : t -> bool
        val mem : t -> elt -> bool
        val head : t -> elt
        val enqueue : t -> elt -> unit
        val dequeue : t -> elt
        val drop : t -> unit
        val priority : t -> elt -> float
        val inc_priority : t -> elt -> float -> unit
        val scale : t -> float -> unit
      end
  module Nat_priority_queue :
    sig
      type elt = int
      type t
      val create : elt -> t
      val length : t -> int
      val is_empty : t -> bool
      val mem : t -> elt -> bool
      val head : t -> elt
      val enqueue : t -> elt -> unit
      val dequeue : t -> elt
      val drop : t -> unit
      val priority : t -> elt -> float
      val inc_priority : t -> elt -> float -> unit
      val scale : t -> float -> unit
    end
end

Hosted by the SourceForge.net Logo* web site.
*Other names and brands may be claimed as the property of others.