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 : 'Index.Map.t -> int
      val create : '-> 'Index.Map.t
      val is_empty : 'Index.Map.t -> bool
      val mem : 'Index.Map.t -> Index.Map.key -> bool
      val find : 'Index.Map.t -> Index.Map.key -> 'a
      val add : 'Index.Map.t -> Index.Map.key -> '-> unit
      val replace : 'Index.Map.t -> Index.Map.key -> '-> unit
      val copy : 'Index.Map.t -> 'Index.Map.t
      val iter : (Index.Map.key -> '-> unit) -> 'Index.Map.t -> unit
      val iter_const :
        ('-> Index.Map.key -> '-> unit) -> '-> 'Index.Map.t -> unit
      val fold :
        ('-> Index.Map.key -> '-> 'a) -> '-> 'Index.Map.t -> 'a
      val fold_const :
        ('-> '-> Index.Map.key -> '-> 'b) ->
        '-> '-> 'Index.Map.t -> 'b
      val modify : ('-> 'a) -> 'Index.Map.t -> unit
      val modify_const : ('-> '-> 'b) -> '-> 'Index.Map.t -> unit
      val set_all : 'Index.Map.t -> '-> unit
    end
  module Make_map :
    functor (I : IndexedType->
      sig
        type key = I.t
        type 'a t
        val size : 'a t -> int
        val create : '-> '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 -> '-> unit
        val replace : 'a t -> key -> '-> unit
        val copy : 'a t -> 'a t
        val iter : (key -> '-> unit) -> 'a t -> unit
        val iter_const : ('-> key -> '-> unit) -> '-> 'b t -> unit
        val fold : ('-> key -> '-> 'a) -> '-> 'b t -> 'a
        val fold_const :
          ('-> '-> key -> '-> 'b) -> '-> '-> 'c t -> 'b
        val modify : ('-> 'a) -> 'a t -> unit
        val modify_const : ('-> '-> 'b) -> '-> 'b t -> unit
        val set_all : 'a t -> '-> unit
      end
  module Nat_map :
    sig
      type key = int
      type 'a t
      val size : 'a t -> int
      val create : '-> '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 -> '-> unit
      val replace : 'a t -> key -> '-> unit
      val copy : 'a t -> 'a t
      val iter : (key -> '-> unit) -> 'a t -> unit
      val iter_const : ('-> key -> '-> unit) -> '-> 'b t -> unit
      val fold : ('-> key -> '-> 'a) -> '-> 'b t -> 'a
      val fold_const :
        ('-> '-> key -> '-> 'b) -> '-> '-> 'c t -> 'b
      val modify : ('-> 'a) -> 'a t -> unit
      val modify_const : ('-> '-> 'b) -> '-> 'b t -> unit
      val set_all : 'a t -> '-> unit
    end
  module type Map2 =
    sig
      type key0
      type key1
      type 'a t
      val create : int -> int -> 'Index.Map2.t
      val mem : 'Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> bool
      val find : 'Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> 'a
      val set :
        'Index.Map2.t -> Index.Map2.key0 -> Index.Map2.key1 -> '-> unit
      val remove :
        '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 -> '-> 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 -> '-> 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 :
        ('-> Index.Set.elt -> unit) -> '-> Index.Set.t -> unit
      val fold : ('-> Index.Set.elt -> 'a) -> '-> Index.Set.t -> 'a
      val fold_const :
        ('-> '-> Index.Set.elt -> '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 : ('-> elt -> unit) -> '-> t -> unit
        val fold : ('-> elt -> 'a) -> '-> t -> 'a
        val fold_const : ('-> '-> elt -> '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 : ('-> elt -> unit) -> '-> t -> unit
      val fold : ('-> elt -> 'a) -> '-> t -> 'a
      val fold_const : ('-> '-> elt -> '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 : ('-> elt -> unit) -> '-> t -> unit
        val fold : ('-> elt -> 'a) -> '-> t -> 'a
        val fold_const : ('-> '-> elt -> '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.