1
(************************************************************************)
2
(* v * The Coq Proof Assistant / The Coq Development Team *)
3
(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
4
(* \VV/ **************************************************************)
5
(* // * This file is distributed under the terms of the *)
6
(* * GNU Lesser General Public License Version 2.1 *)
7
(************************************************************************)
9
(*i $Id: hashcons.mli 5920 2004-07-16 20:01:26Z herbelin $ i*)
11
(* Generic hash-consing. *)
17
val hash_sub : u -> t -> t
18
val equal : t -> t -> bool
26
val f : unit -> (u -> t -> t)
29
module Make(X:Comp) : (S with type t = X.t and type u = X.u)
31
val simple_hcons : (unit -> 'u -> 't -> 't) -> ('u -> 't -> 't)
32
val recursive_hcons : (unit -> ('t -> 't) * 'u -> 't -> 't) -> ('u -> 't -> 't)
33
val recursive_loop_hcons :
34
(unit -> ('t -> 't) * 'u -> 't -> 't) -> ('u -> 't -> 't)
35
val recursive2_hcons :
36
(unit -> ('t1 -> 't1) * ('t2 -> 't2) * 'u1 -> 't1 -> 't1) ->
37
(unit -> ('t1 -> 't1) * ('t2 -> 't2) * 'u2 -> 't2 -> 't2) ->
38
'u1 -> 'u2 -> ('t1 -> 't1) * ('t2 -> 't2)
40
(* Declaring and reinitializing global hash-consing functions *)
42
val init : unit -> unit
43
val register_hcons : ('u -> 't -> 't) -> ('u -> 't -> 't)
45
module Hstring : (S with type t = string and type u = unit)
46
module Hobj : (S with type t = Obj.t and type u = (Obj.t -> Obj.t) * unit)
48
val string : string -> string
49
val obj : Obj.t -> Obj.t
51
val magic_hash : 'a -> 'a