sig
  module Calls :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module Return :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module Threat :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module Assert :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module LoopInv :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module LoopVar :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module Pragma :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module RdAccess :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module WrAccess :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
  module Value :
    sig
      type t = Datatype.String.Set.t
      val set : t -> unit
      val add_set_hook : (t -> t -> unit) -> unit
      val get : unit -> t
      val clear : unit -> unit
      val is_default : unit -> bool
      val is_set : unit -> bool
      val self : State.t
      val name : string
      val kind : State.kind
      val mark_as_computed : ?project:Project.t -> unit -> unit
      val is_computed : ?project:Project.t -> unit -> bool
      module Datatype :
        sig
          type t
          val ty : t Type.t
          val name : string
          val descr : t Descr.t
          val packed_descr : Structural_descr.pack
          val reprs : t list
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val hash : t -> int
          val pretty_code : Format.formatter -> t -> unit
          val internal_pretty_code :
            Type.precedence -> Format.formatter -> t -> unit
          val pretty : Format.formatter -> t -> unit
          val varname : t -> string
          val mem_project : (Project_skeleton.t -> bool) -> t -> bool
          val copy : t -> t
        end
      val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
      val equal : t -> t -> bool
      val unsafe_set : t -> unit
      val add_alias : string list -> unit
      val add : string -> unit
      val remove : string -> unit
      val is_empty : unit -> bool
      val get_set : ?sep:string -> unit -> string
      val iter : (string -> unit) -> unit
      val exists : (string -> bool) -> bool
    end
end