functor
  (P : sig
         val name : string
         val dependencies : Project.Computation.t list
       end->
  sig
    module type S_ReadOnly =
      sig
        type t
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
      end
    module type S =
      sig
        type t
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
    module CodeAnnotation :
      sig
        type t = Cil_types.code_annotation
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
    module Behavior :
      sig
        type t =
            Db_types.kernel_function * Cil_types.kinstr *
            Cil_types.funbehavior
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
      end
    module Predicate :
      sig
        type t = Cil_types.identified_predicate
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
    module Assigns :
      sig
        type t =
            Db_types.kernel_function * Cil_types.kinstr *
            Cil_types.funbehavior option *
            Cil_types.identified_term Cil_types.assigns list
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
    module Complete :
      sig
        type t = Db_types.kernel_function * Cil_types.kinstr * string list
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
    module Disjoint :
      sig
        type t = Db_types.kernel_function * Cil_types.kinstr * string list
        val get_all :
          ?who:Project.Computation.t list ->
          t -> (Cil_types.annotation_status * Project.Computation.t) list
        val get_all_status :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status list
        val get_all_states :
          ?who:Project.Computation.t list -> t -> Project.Computation.t list
        val strongest :
          ?who:Project.Computation.t list ->
          t -> Cil_types.annotation_status * Project.Computation.t
        val pretty_all : Format.formatter -> t -> unit
        val compare : t -> t -> int
        val equal : t -> t -> bool
        val hash : t -> int
        val add_dependency :
          Project.Computation.t -> Project.Computation.t -> unit
        val self : Project.Computation.t
        val get : t -> Cil_types.annotation_status
        val set : t -> Cil_types.annotation_status -> unit
        val update :
          t ->
          (Cil_types.annotation_status -> Cil_types.annotation_status) ->
          Cil_types.annotation_status
      end
  end