sig   val memory_footprint_var_name : string   val cache_size : int   module type Cacheable =     sig       type t       val hash : Binary_cache.Cacheable.t -> int       val sentinel : Binary_cache.Cacheable.t       val equal :         Binary_cache.Cacheable.t -> Binary_cache.Cacheable.t -> bool     end   module type Result = sig type t val sentinel : Binary_cache.Result.t end   module Symmetric_Binary :     functor (H : Cacheable) (R : Result->       sig         val clear : unit -> unit         val merge : (H.t -> H.t -> R.t) -> H.t -> H.t -> R.t       end   module Binary_Predicate :     functor (H0 : Cacheable) (H1 : Cacheable->       sig         val clear : unit -> unit         val merge : (H0.t -> H1.t -> bool) -> H0.t -> H1.t -> bool       end   module Symmetric_Binary_Predicate :     functor (H0 : Cacheable->       sig         val clear : unit -> unit         val merge : (H0.t -> H0.t -> bool) -> H0.t -> H0.t -> bool       end   module Arity_One :     functor (H : Cacheable) (R : Result->       sig val clear : unit -> unit val merge : (H.t -> R.t) -> H.t -> R.t end   module Arity_Two :     functor (H0 : Cacheable) (H1 : Cacheable) (R : Result->       sig         val clear : unit -> unit         val merge : (H0.t -> H1.t -> R.t) -> H0.t -> H1.t -> R.t       end   module Arity_Three :     functor       (H0 : Cacheable) (H1 : Cacheable) (H2 : Cacheable) (R : Result->       sig         val clear : unit -> unit         val merge :           (H0.t -> H1.t -> H2.t -> R.t) -> H0.t -> H1.t -> H2.t -> R.t       end end