functor (H : HASHTBL->
  functor (Data : Project.Datatype.S->
    functor (Info : Signature.NAME_SIZE_DPDS->
      sig
        val self : Project.Computation.t
        val select :
          Kind.how ->
          Project.Computation.selection -> Project.Computation.selection
        val depend : Project.Computation.t -> unit
        val name : string
        val mark_as_computed : ?project:Project.project -> unit -> unit
        val is_computed : ?project:Project.project -> unit -> bool
        val do_not_save : unit -> unit
        module Datatype : Project.Datatype.S
        val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
        type key = H.key
        type data = Data.t
        val add : key -> Project.Computation.t list -> data -> unit
        val replace :
          reset:bool -> key -> Project.Computation.t list -> data -> unit
        val memo :
          reset:bool ->
          (data list -> data) -> key -> Project.Computation.t list -> data
        val clear : reset:bool -> unit -> unit
        val remove : reset:bool -> key -> Project.Computation.t -> unit
        val remove_all : reset:bool -> key -> unit
        val filter :
          reset:bool ->
          (key -> Project.Computation.t -> data -> bool) -> key -> unit
        val mem : key -> bool
        val find :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> data * Project.Computation.t
        val find_data :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> data
        val find_state :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> Project.Computation.t
        val find_all_local :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> (data * Project.Computation.t) list
        val find_all_local_data :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> data list
        val find_all_local_state :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t -> Project.Computation.t list
        val find_all :
          ?who:Project.Computation.t list ->
          key -> (data * Project.Computation.t) list
        val find_all_data :
          ?who:Project.Computation.t list -> key -> data list
        val find_all_states :
          ?who:Project.Computation.t list ->
          key -> Project.Computation.t list
        val iter : (key -> Project.Computation.t -> data -> unit) -> unit
        val iter_key : (Project.Computation.t -> data -> unit) -> key -> unit
        val fold :
          (key -> Project.Computation.t -> data -> '-> 'a) -> '-> 'a
        val fold_key :
          (Project.Computation.t -> data -> '-> 'a) -> key -> '-> 'a
        val length : unit -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
      end