sig
  module Int_Set_and_Map :
    sig
      type elt = int
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  type position = Locality.t
  type agent_name = string
  type site_name = string
  type internal_state = string
  type c_agent_name
  type c_site_name
  type c_state
  type c_rule_id
  type c_agent_id
  type c_link_value
  val rule_id_to_json : Ckappa_sig.c_rule_id -> Yojson.Basic.json
  val rule_id_of_json : Yojson.Basic.json -> Ckappa_sig.c_rule_id
  val write_c_rule_id : Bi_outbuf.t -> Ckappa_sig.c_rule_id -> unit
  val string_of_c_rule_id : ?len:int -> Ckappa_sig.c_rule_id -> string
  val read_c_rule_id :
    Yojson.Safe.lexer_state -> Lexing.lexbuf -> Ckappa_sig.c_rule_id
  val c_rule_id_of_string : string -> Ckappa_sig.c_rule_id
  val string_of_c_link_value : Ckappa_sig.c_link_value -> string
  val dummy_agent_name : Ckappa_sig.c_agent_name
  val dummy_site_name : Ckappa_sig.c_site_name
  val dummy_state_index : Ckappa_sig.c_state
  val dummy_rule_id : Ckappa_sig.c_rule_id
  val dummy_agent_id : Ckappa_sig.c_agent_id
  val dummy_link_value : Ckappa_sig.c_link_value
  val dummy_site_name_1 : Ckappa_sig.c_site_name
  val dummy_site_name_minus1 : Ckappa_sig.c_site_name
  val next_lnk_value : Ckappa_sig.c_link_value -> Ckappa_sig.c_link_value
  val fst_site : Ckappa_sig.c_site_name
  val snd_site : Ckappa_sig.c_site_name
  val dummy_state_index_1 : Ckappa_sig.c_state
  val string_of_agent_name : Ckappa_sig.c_agent_name -> string
  val int_of_agent_name : Ckappa_sig.c_agent_name -> int
  val agent_name_of_int : int -> Ckappa_sig.c_agent_name
  val string_of_agent_id : Ckappa_sig.c_agent_id -> string
  val site_name_of_int : int -> Ckappa_sig.c_site_name
  val int_of_site_name : Ckappa_sig.c_site_name -> int
  val string_of_site_name : Ckappa_sig.c_site_name -> string
  val state_index_of_int : int -> Ckappa_sig.c_state
  val int_of_state_index : Ckappa_sig.c_state -> int
  val string_of_state_index : Ckappa_sig.c_state -> string
  val int_of_rule_id : Ckappa_sig.c_rule_id -> int
  val rule_id_of_int : int -> Ckappa_sig.c_rule_id
  val string_of_rule_id : Ckappa_sig.c_rule_id -> string
  val int_of_agent_id : Ckappa_sig.c_agent_id -> int
  val agent_id_of_int : int -> Ckappa_sig.c_agent_id
  val lnk_value_of_int : int -> Ckappa_sig.c_link_value
  val add_agent_id : Ckappa_sig.c_agent_id -> int -> Ckappa_sig.c_agent_id
  val sub_rule_id : Ckappa_sig.c_rule_id -> int -> Ckappa_sig.c_rule_id
  val add_rule_id : Ckappa_sig.c_rule_id -> int -> Ckappa_sig.c_rule_id
  val next_agent_id : Ckappa_sig.c_agent_id -> Ckappa_sig.c_agent_id
  val next_agent_name : Ckappa_sig.c_agent_name -> Ckappa_sig.c_agent_name
  val next_rule_id : Ckappa_sig.c_rule_id -> Ckappa_sig.c_rule_id
  val next_site_name : Ckappa_sig.c_site_name -> Ckappa_sig.c_site_name
  val next_state_index : Ckappa_sig.c_state -> Ckappa_sig.c_state
  val pred_site_name : Ckappa_sig.c_site_name -> Ckappa_sig.c_site_name
  val pred_agent_name : Ckappa_sig.c_agent_name -> Ckappa_sig.c_agent_name
  val pred_state_index : Ckappa_sig.c_state -> Ckappa_sig.c_state
  val compare_agent_id :
    Ckappa_sig.c_agent_id -> Ckappa_sig.c_agent_id -> int
  val compare_rule_id : Ckappa_sig.c_rule_id -> Ckappa_sig.c_rule_id -> int
  val compare_site_name :
    Ckappa_sig.c_site_name -> Ckappa_sig.c_site_name -> int
  val compare_state_index : Ckappa_sig.c_state -> Ckappa_sig.c_state -> int
  val compare_agent_name :
    Ckappa_sig.c_agent_name -> Ckappa_sig.c_agent_name -> int
  val get_agent_shape :
    Ckappa_sig.c_site_name -> Remanent_parameters_sig.parameters -> string
  val get_agent_color :
    Ckappa_sig.c_site_name -> Remanent_parameters_sig.parameters -> string
  val compare_unit : unit -> unit -> int
  val compare_unit_agent_name : unit -> unit -> Ckappa_sig.c_agent_name
  val compare_unit_site_name : unit -> unit -> Ckappa_sig.c_site_name
  val compare_unit_state_index : unit -> unit -> Ckappa_sig.c_state
  val compare_unit_agent_site : unit -> unit -> int
  type binding_state =
      Free
    | Lnk_type of Ckappa_sig.agent_name * Ckappa_sig.site_name
  type mixture =
      SKIP of Ckappa_sig.mixture
    | COMMA of Ckappa_sig.agent * Ckappa_sig.mixture
    | DOT of Ckappa_sig.c_agent_id * Ckappa_sig.agent * Ckappa_sig.mixture
    | PLUS of Ckappa_sig.c_agent_id * Ckappa_sig.agent * Ckappa_sig.mixture
    | EMPTY_MIX
  and agent = {
    ag_nme : string;
    ag_intf : Ckappa_sig.interface;
    ag_nme_pos : Ckappa_sig.position;
  }
  and interface =
      EMPTY_INTF
    | PORT_SEP of Ckappa_sig.port * Ckappa_sig.interface
  and port = {
    port_nme : string;
    port_int : Ckappa_sig.internal;
    port_lnk : Ckappa_sig.link;
    port_free : bool option;
  }
  and internal = string list
  and link =
      LNK_VALUE of
        (Ckappa_sig.c_agent_id * Ckappa_sig.agent_name *
         Ckappa_sig.site_name * Ckappa_sig.c_link_value * Ckappa_sig.position)
    | FREE
    | LNK_ANY of Ckappa_sig.position
    | LNK_SOME of Ckappa_sig.position
    | LNK_TYPE of (string Locality.annot * string Locality.annot)
  type direction = Direct | Reverse
  type 'pattern rule = {
    position : Locality.t;
    prefix : int;
    interprete_delta : Ckappa_sig.direction;
    delta : int;
    lhs : 'pattern;
    rhs : 'pattern;
    k_def : ('pattern, string) Alg_expr.e Locality.annot;
    k_un : ('pattern, string) Alg_expr.e Locality.annot option;
    ast : string;
    ast_no_rate : string;
    original_ast : string;
    original_ast_no_rate : string;
    from_a_biderectional_rule : bool;
  }
  type ('pattern, 'rule) perturbation =
      ('pattern, 'pattern, string, 'rule) Ast.perturbation
  type ('pattern, 'rule) modif_expr =
      ('pattern, 'pattern, string, 'rule) Ast.modif_expr
  type 'pattern variable = ('pattern, string) Ast.variable_def
  type ('agent, 'pattern, 'mixture, 'rule) compil =
      ('agent, 'pattern, 'mixture, string, 'rule) Ast.compil
  type ('a, 'b) site_type = Internal of '| Binding of 'b
  type site =
      (Ckappa_sig.site_name, Ckappa_sig.site_name) Ckappa_sig.site_type
  type state =
      (Ckappa_sig.internal_state, Ckappa_sig.binding_state)
      Ckappa_sig.site_type
  val rename_link :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    (Remanent_parameters_sig.parameters ->
     Exception.method_handler ->
     Ckappa_sig.c_agent_id ->
     Exception.method_handler * Ckappa_sig.c_agent_id) ->
    Ckappa_sig.link -> Exception.method_handler * Ckappa_sig.link
  val rename_mixture :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    (Remanent_parameters_sig.parameters ->
     Exception.method_handler ->
     Ckappa_sig.c_agent_id ->
     Exception.method_handler * Ckappa_sig.c_agent_id) ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val join_link :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.link ->
    Ckappa_sig.link -> Exception.method_handler * Ckappa_sig.link
  val join_mixture :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.mixture ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_agent :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.agent_name ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_site :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.site_name ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_internal_state :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.site_name ->
    Ckappa_sig.internal_state ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_link :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    ?agent_name:Ckappa_sig.agent_name ->
    Ckappa_sig.site_name ->
    Ckappa_sig.c_agent_id ->
    ?agent_name':Ckappa_sig.agent_name ->
    Ckappa_sig.site_name ->
    Ckappa_sig.c_link_value ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_binding_type :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.site_name ->
    Ckappa_sig.agent_name ->
    Ckappa_sig.site_name ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_bound :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.site_name ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  val add_free :
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    Ckappa_sig.c_agent_id ->
    Ckappa_sig.site_name ->
    Ckappa_sig.mixture -> Exception.method_handler * Ckappa_sig.mixture
  type c_binding_state =
      C_Free
    | C_Lnk_type of Ckappa_sig.c_agent_name * Ckappa_sig.c_site_name
  type state' =
      (Ckappa_sig.internal_state, Ckappa_sig.c_binding_state)
      Ckappa_sig.site_type
  module Dictionary_of_States :
    sig
      type key = c_state
      type value = state'
      type ('a, 'b) dictionary
      val init : unit -> ('a, 'b) dictionary
      val member :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value -> ('a, 'b) dictionary -> Exception.method_handler * bool
      val allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_uniquely :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_bool :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (bool * (key * 'a * 'b * ('a, 'b) dictionary) option)
      val unsafe_allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (key * 'a * 'b * ('a, 'b) dictionary)
      val translate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        key ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (value * 'a * 'b) option
      val stabilize : ('a, 'b) dictionary -> ('a, 'b) dictionary
      val iter :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         key -> value -> '-> '-> Exception.method_handler) ->
        ('a, 'b) dictionary -> Exception.method_handler
      val last_entry :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('a, 'b) dictionary -> Exception.method_handler * key
      val fold :
        (value -> 'a * '-> key -> '-> 'c) ->
        ('a, 'b) dictionary -> '-> 'c
    end
  type internal_state_specification = { string : Ckappa_sig.internal_state; }
  module Dictionary_of_agents :
    sig
      type key = c_agent_name
      type value = agent_name
      type ('a, 'b) dictionary
      val init : unit -> ('a, 'b) dictionary
      val member :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value -> ('a, 'b) dictionary -> Exception.method_handler * bool
      val allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_uniquely :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_bool :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (bool * (key * 'a * 'b * ('a, 'b) dictionary) option)
      val unsafe_allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (key * 'a * 'b * ('a, 'b) dictionary)
      val translate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        key ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (value * 'a * 'b) option
      val stabilize : ('a, 'b) dictionary -> ('a, 'b) dictionary
      val iter :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         key -> value -> '-> '-> Exception.method_handler) ->
        ('a, 'b) dictionary -> Exception.method_handler
      val last_entry :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('a, 'b) dictionary -> Exception.method_handler * key
      val fold :
        (value -> 'a * '-> key -> '-> 'c) ->
        ('a, 'b) dictionary -> '-> 'c
    end
  module Dictionary_of_sites :
    sig
      type key = c_site_name
      type value = site
      type ('a, 'b) dictionary
      val init : unit -> ('a, 'b) dictionary
      val member :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value -> ('a, 'b) dictionary -> Exception.method_handler * bool
      val allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_uniquely :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (key * 'a * 'b * ('a, 'b) dictionary) option
      val allocate_bool :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('-> '-> key) ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler *
        (bool * (key * 'a * 'b * ('a, 'b) dictionary) option)
      val unsafe_allocate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        value ->
        '->
        (key -> 'b) ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (key * 'a * 'b * ('a, 'b) dictionary)
      val translate :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        key ->
        ('a, 'b) dictionary ->
        Exception.method_handler * (value * 'a * 'b) option
      val stabilize : ('a, 'b) dictionary -> ('a, 'b) dictionary
      val iter :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         key -> value -> '-> '-> Exception.method_handler) ->
        ('a, 'b) dictionary -> Exception.method_handler
      val last_entry :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        ('a, 'b) dictionary -> Exception.method_handler * key
      val fold :
        (value -> 'a * '-> key -> '-> 'c) ->
        ('a, 'b) dictionary -> '-> 'c
    end
  type site_list = {
    used : (Ckappa_sig.site_name list * Ckappa_sig.position) list;
    declared : (Ckappa_sig.site_name list * Ckappa_sig.position) list;
    creation : (Ckappa_sig.site_name list * Ckappa_sig.position) list;
  }
  type agent_dic = (unit, unit) Ckappa_sig.Dictionary_of_agents.dictionary
  type site_dic = (unit, unit) Ckappa_sig.Dictionary_of_sites.dictionary
  type state_dic = (unit, unit) Ckappa_sig.Dictionary_of_States.dictionary
  type agent_specification = {
    binding_sites_usage : Ckappa_sig.site_list;
    marked_sites_usage : Ckappa_sig.site_list;
  }
  type kappa_handler = {
    agents_dic : Ckappa_sig.agent_dic;
    interface_constraints :
      Ckappa_sig.agent_specification Int_storage.Nearly_inf_Imperatif.t;
    sites : Ckappa_sig.site_dic Int_storage.Nearly_inf_Imperatif.t;
    states_dic :
      Ckappa_sig.state_dic Int_storage.Nearly_inf_Imperatif.t
      Int_storage.Nearly_inf_Imperatif.t;
  }
  type 'a interval = { min : 'a; max : 'a; }
  type c_port = {
    c_site_name : Ckappa_sig.c_site_name;
    c_site_position : Ckappa_sig.position;
    c_site_interval : Ckappa_sig.c_state Ckappa_sig.interval;
  }
  module Site_map_and_set :
    sig
      type elt = c_site_name
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  type c_interface = Ckappa_sig.c_port Ckappa_sig.Site_map_and_set.Map.t
  type c_proper_agent = {
    c_agent_kasim_id : Ckappa_sig.c_agent_id;
    c_agent_name : Ckappa_sig.c_agent_name;
    c_agent_interface : Ckappa_sig.c_interface;
    c_agent_position : Ckappa_sig.position;
  }
  type site_address = {
    agent_index : Ckappa_sig.c_agent_id;
    site : Ckappa_sig.c_site_name;
  }
  type c_bond = Ckappa_sig.site_address * Ckappa_sig.site_address
  type c_agent = C_ghost | C_agent of Ckappa_sig.c_proper_agent
  type c_mixture = {
    c_views : Ckappa_sig.c_agent Int_storage.Quick_Nearly_inf_Imperatif.t;
    c_bonds :
      Ckappa_sig.site_address Ckappa_sig.Site_map_and_set.Map.t
      Int_storage.Nearly_inf_Imperatif.t;
    c_plus : (int * int) list;
    c_dot : (int * int) list;
  }
  type c_variable = (Ckappa_sig.c_mixture, string) Alg_expr.e
  type action =
      Release of Ckappa_sig.c_bond
    | Bind of Ckappa_sig.c_bond
    | Half_breaf of Ckappa_sig.site_address
  type c_rule = {
    c_rule_lhs : Ckappa_sig.c_mixture;
    c_rule_bidirectional : bool;
    c_rule_rhs : Ckappa_sig.c_mixture;
    c_diff_direct : Ckappa_sig.c_mixture;
    c_diff_reverse : Ckappa_sig.c_mixture;
    c_side_effects : Ckappa_sig.action list;
  }
  type c_modif_expr =
      C_APPLY of
        ((Ckappa_sig.c_mixture, string) Alg_expr.e * Ckappa_sig.c_rule *
         Ckappa_sig.position)
    | C_UPDATE of
        (string * (Ckappa_sig.c_mixture, string) Alg_expr.e *
         Ckappa_sig.position)
    | C_STOP of Ckappa_sig.position
    | C_SNAPSHOT of Ckappa_sig.position
  type c_perturbation =
      (((Ckappa_sig.c_mixture, string) Alg_expr.bool * Ckappa_sig.position) *
       Ckappa_sig.c_modif_expr list *
       ((Ckappa_sig.c_mixture, string) Alg_expr.bool * Ckappa_sig.position)
       option) *
      Ckappa_sig.position
  type enriched_rule = {
    e_rule_label : (string * Ckappa_sig.position) option;
    e_rule_direct : bool;
    e_rule_rule : Ckappa_sig.c_mixture Ckappa_sig.rule;
    e_rule_c_rule : Ckappa_sig.c_rule;
  }
  type enriched_init = {
    e_init_factor : int;
    e_init_mixture : Ckappa_sig.mixture;
    e_init_c_mixture : Ckappa_sig.c_mixture;
    e_init_pos : Ckappa_sig.position;
  }
  type c_compil = {
    c_variables : Ckappa_sig.c_variable Int_storage.Nearly_inf_Imperatif.t;
    c_signatures :
      (Ckappa_sig.agent * Ckappa_sig.position)
      Int_storage.Nearly_inf_Imperatif.t;
    c_rules : Ckappa_sig.enriched_rule Int_storage.Nearly_inf_Imperatif.t;
    c_observables :
      (Ckappa_sig.c_mixture, string) Alg_expr.e
      Int_storage.Nearly_inf_Imperatif.t;
    c_init : Ckappa_sig.enriched_init Int_storage.Nearly_inf_Imperatif.t;
    c_perturbations :
      (Ckappa_sig.c_mixture Locality.annot, Ckappa_sig.enriched_rule)
      Ckappa_sig.perturbation Int_storage.Nearly_inf_Imperatif.t;
  }
  module Rule_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_rule_id
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  val array_of_list_rule_id :
    (Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.dimension,
     'Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.t)
    Int_storage.unary ->
    (Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.key, 'a,
     'Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.t,
     'Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.t)
    Int_storage.ternary ->
    Remanent_parameters_sig.parameters ->
    Exception.method_handler ->
    'a list ->
    Exception.method_handler *
    'Ckappa_sig.Rule_nearly_Inf_Int_storage_Imperatif.t
  module Agent_type_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_agent_name
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_type_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_agent_name
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_type_site_nearly_Inf_Int_Int_storage_Imperatif_Imperatif :
    sig
      type 'a t
      type key = c_agent_name * c_site_name
      type dimension = int * int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_type_site_quick_nearly_Inf_Int_Int_storage_Imperatif_Imperatif :
    sig
      type 'a t
      type key = c_agent_name * c_site_name
      type dimension = int * int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_type_site_state_nearly_Inf_Int_Int_Int_storage_Imperatif_Imperatif_Imperatif :
    sig
      type 'a t
      type key = c_agent_name * (c_site_name * c_state)
      type dimension = int * (int * int)
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Site_type_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_site_name
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Site_type_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_site_name
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module State_index_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_state
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module State_index_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_state
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Rule_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_rule_id
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Site_union_find :
    sig
      type key = c_site_name
      type dimension = int
      type t = c_site_name Site_type_nearly_Inf_Int_storage_Imperatif.t
      val create :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler -> dimension -> Exception.method_handler * t
      val union_list :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        t -> key list -> Exception.method_handler * t
      val iteri :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler -> key -> key -> Exception.method_handler) ->
        t -> Exception.method_handler
    end
  module Rule_FIFO :
    sig
      type elt = c_rule_id
      type t
      val empty : t
      val is_empty : t -> bool
      val push :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler -> elt -> t -> Exception.method_handler * t
      val pop :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        t -> Exception.method_handler * (elt option * t)
      val fold_left : ('-> elt -> 'a) -> '-> t -> 'a
      val print_wl : Remanent_parameters_sig.parameters -> t -> unit
    end
  module Agent_id_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_agent_id
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_id_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_agent_id
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Rule_id_quick_nearly_Inf_Int_storage_Imperatif :
    sig
      type 'a t
      type key = c_rule_id
      type dimension = int
      val create : (dimension, 'a t) Int_storage.unary
      val create_biggest_key : (key, 'a t) Int_storage.unary
      val expand_and_copy : ('a t, dimension, 'a t) Int_storage.binary
      val init :
        (dimension, (key, 'a) Int_storage.unary, 'a t) Int_storage.binary
      val set : (key, 'a, 'a t, 'a t) Int_storage.ternary
      val free : (key, 'a t, 'a t) Int_storage.binary
      val get : (key, 'a t, 'a option) Int_storage.binary
      val unsafe_get : (key, 'a t, 'a option) Int_storage.binary
      val dimension : ('a t, dimension) Int_storage.unary
      val print :
        ('Int_storage.unary_no_output, 'a t) Int_storage.binary_no_output
      val key_list : ('a t, key list) Int_storage.unary
      val iter :
        ((key, 'a) Int_storage.binary_no_output, 'a t)
        Int_storage.binary_no_output
      val fold_with_interruption :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold :
        ((key, 'a, 'b, 'b) Int_storage.ternary, 'a t, 'b, 'b)
        Int_storage.ternary
      val fold2_common :
        ((key, 'a, 'b, 'c, 'c) Int_storage.quaternary, 'a t, 'b t, 'c, 'c)
        Int_storage.quaternary
      val free_all : ('a t, 'a t) Int_storage.unary
    end
  module Agent_map_and_set :
    sig
      type elt = c_agent_name
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Agent_id_map_and_set :
    sig
      type elt = c_agent_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Lnk_id_map_and_set :
    sig
      type elt = c_link_value
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Rule_map_and_set :
    sig
      type elt = c_rule_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module State_map_and_set :
    sig
      type elt = c_state
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module AgentRule_map_and_set :
    sig
      type elt = c_agent_name * c_rule_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module RuleAgent_map_and_set :
    sig
      type elt = c_rule_id * c_agent_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module SiteState_map_and_set :
    sig
      type elt = c_site_name * c_state
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module AgentSiteState_map_and_set :
    sig
      type elt = c_agent_name * c_site_name * c_state
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Rule_setmap :
    sig
      type elt = c_rule_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add : elt -> t -> t
          val add_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val remove : elt -> t -> t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val split : elt -> t -> t * bool * t
          val union : t -> t -> t
          val disjoint_union : t -> t -> t option
          val inter : t -> t -> t
          val minus : t -> t -> t
          val diff : t -> t -> t
          val minus_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val disjoint_union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val inter_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val size : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val filter_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t)
            SetMap.with_log_wrap
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val partition_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t * t)
            SetMap.with_log_wrap
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val print : Format.formatter -> t -> unit
          val choose : t -> elt option
          val random : Random.State.t -> t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val size : 'a t -> int
          val root : 'a t -> (elt * 'a) option
          val max_key : 'a t -> elt option
          val add : elt -> '-> 'a t -> 'a t
          val remove : elt -> 'a t -> 'a t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val pop : elt -> 'a t -> 'a option * 'a t
          val merge : 'a t -> 'a t -> 'a t
          val min_elt : 'a t -> (elt * 'a) option
          val find_option : elt -> 'a t -> 'a option
          val find_default : '-> elt -> 'a t -> 'a
          val find_option_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a option)
            SetMap.with_log_wrap
          val find_default_with_logs :
            ('parameters, 'error, '-> elt -> 'a t -> 'error * 'a)
            SetMap.with_log_wrap
          val mem : elt -> 'a t -> bool
          val diff : 'a t -> 'a t -> 'a t * 'a t
          val union : 'a t -> 'a t -> 'a t
          val update : 'a t -> 'a t -> 'a t
          val diff_pred : ('-> '-> bool) -> 'a t -> 'a t -> 'a t * 'a t
          val add_with_logs :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val join_with_logs :
            ('parameters, 'error, 'a t -> elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val split_with_logs :
            ('parameters, 'error,
             elt -> 'a t -> 'error * ('a t * 'a option * 'a t))
            SetMap.with_log_wrap
          val update_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val map2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> 'error * 'c t)
            SetMap.with_log_wrap
          val map2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> '-> 'error * 'a) ->
             'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val iter2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error) ->
             'a t -> 'b t -> 'error)
            SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val diff_pred_with_logs :
            ('parameters, 'error,
             ('-> '-> bool) -> 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val merge_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold_restriction_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val fold_restriction_with_missing_associations_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             (elt -> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val fold_with_interruption :
            (elt -> '-> '-> ('b, 'c) Stop.stop) ->
            'a t -> '-> ('b, 'c) Stop.stop
          val monadic_fold2 :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_fold2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_iter2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler) ->
            'a t -> 'b t -> 'method_handler
          val monadic_fold_restriction :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'b) ->
            set -> 'a t -> '-> 'method_handler * 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val map2 : ('-> '-> 'a) -> 'a t -> 'a t -> 'a t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val print :
            (Format.formatter -> '-> unit) ->
            Format.formatter -> 'a t -> unit
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Agent_id_setmap :
    sig
      type elt = c_agent_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add : elt -> t -> t
          val add_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val remove : elt -> t -> t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val split : elt -> t -> t * bool * t
          val union : t -> t -> t
          val disjoint_union : t -> t -> t option
          val inter : t -> t -> t
          val minus : t -> t -> t
          val diff : t -> t -> t
          val minus_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val disjoint_union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val inter_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val size : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val filter_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t)
            SetMap.with_log_wrap
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val partition_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t * t)
            SetMap.with_log_wrap
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val print : Format.formatter -> t -> unit
          val choose : t -> elt option
          val random : Random.State.t -> t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val size : 'a t -> int
          val root : 'a t -> (elt * 'a) option
          val max_key : 'a t -> elt option
          val add : elt -> '-> 'a t -> 'a t
          val remove : elt -> 'a t -> 'a t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val pop : elt -> 'a t -> 'a option * 'a t
          val merge : 'a t -> 'a t -> 'a t
          val min_elt : 'a t -> (elt * 'a) option
          val find_option : elt -> 'a t -> 'a option
          val find_default : '-> elt -> 'a t -> 'a
          val find_option_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a option)
            SetMap.with_log_wrap
          val find_default_with_logs :
            ('parameters, 'error, '-> elt -> 'a t -> 'error * 'a)
            SetMap.with_log_wrap
          val mem : elt -> 'a t -> bool
          val diff : 'a t -> 'a t -> 'a t * 'a t
          val union : 'a t -> 'a t -> 'a t
          val update : 'a t -> 'a t -> 'a t
          val diff_pred : ('-> '-> bool) -> 'a t -> 'a t -> 'a t * 'a t
          val add_with_logs :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val join_with_logs :
            ('parameters, 'error, 'a t -> elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val split_with_logs :
            ('parameters, 'error,
             elt -> 'a t -> 'error * ('a t * 'a option * 'a t))
            SetMap.with_log_wrap
          val update_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val map2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> 'error * 'c t)
            SetMap.with_log_wrap
          val map2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> '-> 'error * 'a) ->
             'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val iter2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error) ->
             'a t -> 'b t -> 'error)
            SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val diff_pred_with_logs :
            ('parameters, 'error,
             ('-> '-> bool) -> 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val merge_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold_restriction_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val fold_restriction_with_missing_associations_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             (elt -> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val fold_with_interruption :
            (elt -> '-> '-> ('b, 'c) Stop.stop) ->
            'a t -> '-> ('b, 'c) Stop.stop
          val monadic_fold2 :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_fold2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_iter2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler) ->
            'a t -> 'b t -> 'method_handler
          val monadic_fold_restriction :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'b) ->
            set -> 'a t -> '-> 'method_handler * 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val map2 : ('-> '-> 'a) -> 'a t -> 'a t -> 'a t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val print :
            (Format.formatter -> '-> unit) ->
            Format.formatter -> 'a t -> unit
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module PairRule_setmap :
    sig
      type elt = c_rule_id * c_rule_id
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add : elt -> t -> t
          val add_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val remove : elt -> t -> t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> t -> 'error * bool * t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> t -> 'error * t)
            SetMap.with_log_wrap
          val split : elt -> t -> t * bool * t
          val union : t -> t -> t
          val disjoint_union : t -> t -> t option
          val inter : t -> t -> t
          val minus : t -> t -> t
          val diff : t -> t -> t
          val minus_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val disjoint_union_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val inter_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, t -> t -> 'error * t) SetMap.with_log_wrap
          val size : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val filter_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t)
            SetMap.with_log_wrap
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val partition_with_logs :
            ('parameters, 'error, (elt -> bool) -> t -> 'error * t * t)
            SetMap.with_log_wrap
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val print : Format.formatter -> t -> unit
          val choose : t -> elt option
          val random : Random.State.t -> t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val size : 'a t -> int
          val root : 'a t -> (elt * 'a) option
          val max_key : 'a t -> elt option
          val add : elt -> '-> 'a t -> 'a t
          val remove : elt -> 'a t -> 'a t
          val add_while_testing_freshness :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val remove_while_testing_existence :
            ('parameters, 'error, elt -> 'a t -> 'error * bool * 'a t)
            SetMap.with_log_wrap
          val pop : elt -> 'a t -> 'a option * 'a t
          val merge : 'a t -> 'a t -> 'a t
          val min_elt : 'a t -> (elt * 'a) option
          val find_option : elt -> 'a t -> 'a option
          val find_default : '-> elt -> 'a t -> 'a
          val find_option_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a option)
            SetMap.with_log_wrap
          val find_default_with_logs :
            ('parameters, 'error, '-> elt -> 'a t -> 'error * 'a)
            SetMap.with_log_wrap
          val mem : elt -> 'a t -> bool
          val diff : 'a t -> 'a t -> 'a t * 'a t
          val union : 'a t -> 'a t -> 'a t
          val update : 'a t -> 'a t -> 'a t
          val diff_pred : ('-> '-> bool) -> 'a t -> 'a t -> 'a t * 'a t
          val add_with_logs :
            ('parameters, 'error, elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val remove_with_logs :
            ('parameters, 'error, elt -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val join_with_logs :
            ('parameters, 'error, 'a t -> elt -> '-> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val split_with_logs :
            ('parameters, 'error,
             elt -> 'a t -> 'error * ('a t * 'a option * 'a t))
            SetMap.with_log_wrap
          val update_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val map2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> 'error * 'c) ->
             ('parameters -> 'error -> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> 'error * 'c t)
            SetMap.with_log_wrap
          val map2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> '-> '-> 'error * 'a) ->
             'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold2z_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> 'error * 'c) ->
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val fold2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> '-> 'error * 'c) ->
             'a t -> 'b t -> '-> 'error * 'c)
            SetMap.with_log_wrap
          val iter2_sparse_with_logs :
            ('parameters, 'error,
             ('parameters -> 'error -> elt -> '-> '-> 'error) ->
             'a t -> 'b t -> 'error)
            SetMap.with_log_wrap
          val diff_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val diff_pred_with_logs :
            ('parameters, 'error,
             ('-> '-> bool) -> 'a t -> 'a t -> 'error * 'a t * 'a t)
            SetMap.with_log_wrap
          val merge_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val union_with_logs :
            ('parameters, 'error, 'a t -> 'a t -> 'error * 'a t)
            SetMap.with_log_wrap
          val fold_restriction_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val fold_restriction_with_missing_associations_with_logs :
            ('parameters, 'error,
             (elt -> '-> 'error * '-> 'error * 'b) ->
             (elt -> 'error * '-> 'error * 'b) ->
             set -> 'a t -> '-> 'error * 'b)
            SetMap.with_log_wrap
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val fold_with_interruption :
            (elt -> '-> '-> ('b, 'c) Stop.stop) ->
            'a t -> '-> ('b, 'c) Stop.stop
          val monadic_fold2 :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_fold2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> '-> 'method_handler * 'c) ->
            'a t -> 'b t -> '-> 'method_handler * 'c
          val monadic_iter2_sparse :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler) ->
            'a t -> 'b t -> 'method_handler
          val monadic_fold_restriction :
            'parameters ->
            'method_handler ->
            ('parameters ->
             'method_handler -> elt -> '-> '-> 'method_handler * 'b) ->
            set -> 'a t -> '-> 'method_handler * 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val map2 : ('-> '-> 'a) -> 'a t -> 'a t -> 'a t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val print :
            (Format.formatter -> '-> unit) ->
            Format.formatter -> 'a t -> unit
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module PairAgentSite_map_and_set :
    sig
      type elt = (c_agent_name * c_site_name) * (c_agent_name * c_site_name)
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module AgentSite_map_and_set :
    sig
      type elt = c_agent_name * c_site_name
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Agents_map_and_set :
    sig
      type elt = c_agent_id * c_agent_name
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module AgentsSite_map_and_set :
    sig
      type elt = c_agent_id * c_agent_name * c_site_name
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module AgentsSiteState_map_and_set :
    sig
      type elt = c_agent_id * c_agent_name * c_site_name * c_state
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  type pair_of_states = Ckappa_sig.c_state * Ckappa_sig.c_state
  module AgentsSitePState_map_and_set :
    sig
      type elt = c_agent_id * c_agent_name * c_site_name * pair_of_states
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module Views_bdu :
    sig
      type key = c_site_name
      type value = c_state
      type handler =
          (Boolean_mvbdu.memo_tables, Boolean_mvbdu.mvbdu_dic,
           Boolean_mvbdu.association_list_dic, Boolean_mvbdu.range_list_dic,
           Boolean_mvbdu.variables_list_dic, bool, int)
          Memo_sig.handler
      type mvbdu
      type hconsed_range_list
      type hconsed_association_list
      type hconsed_variables_list
      type hconsed_renaming_list
      type 'output constant =
          Remanent_parameters_sig.parameters ->
          handler ->
          Exception.method_handler ->
          Exception.method_handler * handler * 'output
      type ('input, 'output) unary =
          Remanent_parameters_sig.parameters ->
          handler ->
          Exception.method_handler ->
          'input -> Exception.method_handler * handler * 'output
      type ('input1, 'input2, 'output) binary =
          Remanent_parameters_sig.parameters ->
          handler ->
          Exception.method_handler ->
          'input1 -> 'input2 -> Exception.method_handler * handler * 'output
      type ('input1, 'input2, 'input3, 'output) ternary =
          Remanent_parameters_sig.parameters ->
          handler ->
          Exception.method_handler ->
          'input1 ->
          'input2 -> 'input3 -> Exception.method_handler * handler * 'output
      val init :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler -> Exception.method_handler * handler
      val is_init : unit -> bool
      val get_handler :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler -> Exception.method_handler * handler
      val reset :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler -> Exception.method_handler * handler
      val equal : mvbdu -> mvbdu -> bool
      val equal_with_logs : (mvbdu, mvbdu, bool) binary
      val mvbdu_false : mvbdu constant
      val mvbdu_true : mvbdu constant
      val mvbdu_not : (mvbdu, mvbdu) unary
      val mvbdu_id : (mvbdu, mvbdu) unary
      val mvbdu_unary_true : (mvbdu, mvbdu) unary
      val mvbdu_unary_false : (mvbdu, mvbdu) unary
      val mvbdu_and : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_or : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_xor : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nand : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nor : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_imply : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_rev_imply : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_equiv : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nimply : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nrev_imply : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_bi_true : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_bi_false : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_fst : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_snd : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nfst : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_nsnd : (mvbdu, mvbdu, mvbdu) binary
      val mvbdu_redefine : (mvbdu, hconsed_association_list, mvbdu) binary
      val mvbdu_redefine_range : (mvbdu, hconsed_range_list, mvbdu) binary
      val mvbdu_subseteq : (mvbdu, mvbdu, bool) binary
      val mvbdu_of_hconsed_asso : (hconsed_association_list, mvbdu) unary
      val mvbdu_of_association_list : ((key * value) list, mvbdu) unary
      val mvbdu_of_sorted_association_list :
        ((key * value) list, mvbdu) unary
      val mvbdu_of_reverse_sorted_association_list :
        ((key * value) list, mvbdu) unary
      val mvbdu_of_hconsed_range : (hconsed_range_list, mvbdu) unary
      val mvbdu_of_range_list : ((key * (value * value)) list, mvbdu) unary
      val mvbdu_of_sorted_range_list :
        ((key * (value * value)) list, mvbdu) unary
      val mvbdu_of_reverse_sorted_range_list :
        ((key * (value * value)) list, mvbdu) unary
      val mvbdu_rename : (mvbdu, hconsed_renaming_list, mvbdu) binary
      val mvbdu_project_keep_only :
        (mvbdu, hconsed_variables_list, mvbdu) binary
      val mvbdu_project_abstract_away :
        (mvbdu, hconsed_variables_list, mvbdu) binary
      val mvbdu_cartesian_decomposition_depth :
        (mvbdu, int, mvbdu option * mvbdu list) binary
      val mvbdu_full_cartesian_decomposition : (mvbdu, mvbdu list) unary
      val mvbdu_cartesian_abstraction : (mvbdu, mvbdu list) unary
      val build_association_list :
        ((key * value) list, hconsed_association_list) unary
      val build_sorted_association_list :
        ((key * value) list, hconsed_association_list) unary
      val build_reverse_sorted_association_list :
        ((key * value) list, hconsed_association_list) unary
      val empty_association_list : hconsed_association_list constant
      val build_range_list :
        ((key * (value * value)) list, hconsed_range_list) unary
      val build_sorted_range_list :
        ((key * (value * value)) list, hconsed_range_list) unary
      val build_reverse_sorted_range_list :
        ((key * (value * value)) list, hconsed_range_list) unary
      val empty_range_list : hconsed_range_list constant
      val build_variables_list : (key list, hconsed_variables_list) unary
      val build_sorted_variables_list :
        (key list, hconsed_variables_list) unary
      val build_reverse_sorted_variables_list :
        (key list, hconsed_variables_list) unary
      val empty_variables_list : hconsed_variables_list constant
      val build_renaming_list :
        ((key * key) list, hconsed_renaming_list) unary
      val build_sorted_renaming_list :
        ((key * key) list, hconsed_renaming_list) unary
      val build_reverse_sorted_renaming_list :
        ((key * key) list, hconsed_renaming_list) unary
      val empty_renaming_list : hconsed_renaming_list constant
      val overwrite_association_lists :
        (hconsed_association_list, hconsed_association_list,
         hconsed_association_list)
        binary
      val merge_variables_lists :
        (hconsed_variables_list, hconsed_variables_list,
         hconsed_variables_list)
        binary
      val nbr_variables : (hconsed_variables_list, int) unary
      val extensional_of_variables_list :
        (hconsed_variables_list, key list) unary
      val extensional_of_association_list :
        (hconsed_association_list, (key * value) list) unary
      val extensional_of_range_list :
        (hconsed_range_list, (key * (value * value)) list) unary
      val extensional_of_mvbdu : (mvbdu, (key * value) list list) unary
      val variables_list_of_mvbdu : (mvbdu, hconsed_variables_list) unary
      val print : Remanent_parameters_sig.parameters -> mvbdu -> unit
      val print_association_list :
        Remanent_parameters_sig.parameters ->
        hconsed_association_list -> unit
      val print_variables_list :
        Remanent_parameters_sig.parameters -> hconsed_variables_list -> unit
      val store_by_variables_list :
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         'data ->
         List_sig.hash_key -> 'map -> Exception.method_handler * 'data) ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         List_sig.hash_key ->
         'data -> 'map -> Exception.method_handler * 'map) ->
        'data ->
        ('data, 'data, 'data) binary ->
        (hconsed_variables_list, 'data, 'map, 'map) ternary
      val store_by_mvbdu :
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         'data ->
         Mvbdu_sig.hash_key -> 'map -> Exception.method_handler * 'data) ->
        (Remanent_parameters_sig.parameters ->
         Exception.method_handler ->
         Mvbdu_sig.hash_key ->
         'data -> 'map -> Exception.method_handler * 'map) ->
        'data ->
        ('data, 'data, 'data) binary -> (mvbdu, 'data, 'map, 'map) ternary
      val last_entry : (unit, int) unary
      val hash_of_range_list : hconsed_range_list -> int
      val hash_of_association_list : hconsed_association_list -> int
      val hash_of_variables_list : hconsed_variables_list -> int
    end
  module Views_intbdu :
    sig
      type key = c_site_name
      type value = c_state
      type mvbdu = Views_bdu.mvbdu
      type handler =
          (Boolean_mvbdu.memo_tables, Boolean_mvbdu.mvbdu_dic,
           Boolean_mvbdu.association_list_dic, Boolean_mvbdu.range_list_dic,
           Boolean_mvbdu.variables_list_dic, bool, int)
          Memo_sig.handler
      type hconsed_range_list
      type hconsed_association_list
      type hconsed_variables_list
      type hconsed_renaming_list
      val init : Remanent_parameters_sig.parameters -> unit
      val import_handler : handler -> unit
      val export_handler :
        Exception.method_handler -> Exception.method_handler * handler option
      val is_init : unit -> bool
      val equal : mvbdu -> mvbdu -> bool
      val mvbdu_false : unit -> mvbdu
      val mvbdu_true : unit -> mvbdu
      val mvbdu_not : mvbdu -> mvbdu
      val mvbdu_id : mvbdu -> mvbdu
      val mvbdu_unary_true : mvbdu -> mvbdu
      val mvbdu_unary_false : mvbdu -> mvbdu
      val mvbdu_and : mvbdu -> mvbdu -> mvbdu
      val mvbdu_or : mvbdu -> mvbdu -> mvbdu
      val mvbdu_xor : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nand : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nor : mvbdu -> mvbdu -> mvbdu
      val mvbdu_imply : mvbdu -> mvbdu -> mvbdu
      val mvbdu_rev_imply : mvbdu -> mvbdu -> mvbdu
      val mvbdu_equiv : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nimply : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nrev_imply : mvbdu -> mvbdu -> mvbdu
      val mvbdu_bi_true : mvbdu -> mvbdu -> mvbdu
      val mvbdu_bi_false : mvbdu -> mvbdu -> mvbdu
      val mvbdu_fst : mvbdu -> mvbdu -> mvbdu
      val mvbdu_snd : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nfst : mvbdu -> mvbdu -> mvbdu
      val mvbdu_nsnd : mvbdu -> mvbdu -> mvbdu
      val mvbdu_redefine : mvbdu -> hconsed_association_list -> mvbdu
      val mvbdu_redefine_range : mvbdu -> hconsed_range_list -> mvbdu
      val mvbdu_subseteq : mvbdu -> mvbdu -> bool
      val mvbdu_of_hconsed_asso : hconsed_association_list -> mvbdu
      val mvbdu_of_association_list : (key * value) list -> mvbdu
      val mvbdu_of_sorted_association_list : (key * value) list -> mvbdu
      val mvbdu_of_reverse_sorted_association_list :
        (key * value) list -> mvbdu
      val mvbdu_of_hconsed_range : hconsed_range_list -> mvbdu
      val mvbdu_of_range_list : (key * (value * value)) list -> mvbdu
      val mvbdu_of_sorted_range_list : (key * (value * value)) list -> mvbdu
      val mvbdu_of_reverse_sorted_range_list :
        (key * (value * value)) list -> mvbdu
      val mvbdu_rename : mvbdu -> hconsed_renaming_list -> mvbdu
      val mvbdu_project_abstract_away :
        mvbdu -> hconsed_variables_list -> mvbdu
      val mvbdu_project_keep_only : mvbdu -> hconsed_variables_list -> mvbdu
      val mvbdu_cartesian_abstraction : mvbdu -> mvbdu list
      val mvbdu_cartesian_decomposition_depth :
        mvbdu -> int -> mvbdu option * mvbdu list
      val mvbdu_full_cartesian_decomposition : mvbdu -> mvbdu list
      val build_association_list :
        (key * value) list -> hconsed_association_list
      val build_sorted_association_list :
        (key * value) list -> hconsed_association_list
      val build_reverse_sorted_association_list :
        (key * value) list -> hconsed_association_list
      val empty_association_list : unit -> hconsed_association_list
      val build_range_list :
        (key * (value * value)) list -> hconsed_range_list
      val build_sorted_range_list :
        (key * (value * value)) list -> hconsed_range_list
      val build_reverse_sorted_range_list :
        (key * (value * value)) list -> hconsed_range_list
      val empty_range_list : unit -> hconsed_range_list
      val build_variables_list : key list -> hconsed_variables_list
      val build_sorted_variables_list : key list -> hconsed_variables_list
      val build_reverse_sorted_variables_list :
        key list -> hconsed_variables_list
      val empty_variables_list : unit -> hconsed_variables_list
      val build_renaming_list : (key * key) list -> hconsed_renaming_list
      val build_sorted_renaming_list :
        (key * key) list -> hconsed_renaming_list
      val build_reverse_sorted_renaming_list :
        (key * key) list -> hconsed_renaming_list
      val empty_renaming_list : unit -> hconsed_renaming_list
      val overwrite_association_lists :
        hconsed_association_list ->
        hconsed_association_list -> hconsed_association_list
      val merge_variables_lists :
        hconsed_variables_list ->
        hconsed_variables_list -> hconsed_variables_list
      val nbr_variables : hconsed_variables_list -> int
      val extensional_of_variables_list : hconsed_variables_list -> key list
      val extensional_of_association_list :
        hconsed_association_list -> (key * value) list
      val extensional_of_mvbdu : mvbdu -> (key * value) list list
      val variables_list_of_mvbdu : mvbdu -> hconsed_variables_list
      val print : Remanent_parameters_sig.parameters -> mvbdu -> unit
      val print_association_list :
        Remanent_parameters_sig.parameters ->
        hconsed_association_list -> unit
      val print_variables_list :
        Remanent_parameters_sig.parameters -> hconsed_variables_list -> unit
      val hash_of_association_list : hconsed_association_list -> int
      val hash_of_variables_list : hconsed_variables_list -> int
    end
  module PairAgentsSiteState_map_and_set :
    sig
      type elt =
          (c_agent_id * c_agent_name * c_site_name * c_state) *
          (c_agent_id * c_agent_name * c_site_name * c_state)
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module PairAgentSiteState_map_and_set :
    sig
      type elt =
          (c_agent_name * c_site_name * c_state) *
          (c_agent_name * c_site_name * c_state)
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
  module PairAgentSitesState_map_and_set :
    sig
      type elt =
          (c_agent_name * c_site_name * c_site_name * c_state) *
          (c_agent_name * c_site_name * c_site_name * c_state)
      module Set :
        sig
          type elt = elt
          type t
          val empty : t
          val is_empty : t -> bool
          val singleton : elt -> t
          val is_singleton : t -> bool
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val add_when_not_in :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> t -> Exception.method_handler * t
          val minus :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val disjoint_union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val inter :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            t -> t -> Exception.method_handler * t
          val cardinal : t -> int
          val mem : elt -> t -> bool
          val exists : (elt -> bool) -> t -> bool
          val filter : (elt -> bool) -> t -> t
          val for_all : (elt -> bool) -> t -> bool
          val partition : (elt -> bool) -> t -> t * t
          val compare : t -> t -> int
          val equal : t -> t -> bool
          val subset : t -> t -> bool
          val iter : (elt -> unit) -> t -> unit
          val fold : (elt -> '-> 'a) -> t -> '-> 'a
          val fold_inv : (elt -> '-> 'a) -> t -> '-> 'a
          val elements : t -> elt list
          val choose : t -> elt option
          val min_elt : t -> elt option
          val max_elt : t -> elt option
        end
      module Map :
        sig
          type elt = elt
          type set = Set.t
          type +'a t
          val empty : 'a t
          val is_empty : 'a t -> bool
          val min_elt : 'a t -> (elt * 'a) option
          val mem : elt -> 'a t -> bool
          val find_option :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val find_default :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_default_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            '-> elt -> 'a t -> Exception.method_handler * 'a
          val find_option_without_logs :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a option
          val add :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val add_or_overwrite :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> '-> 'a t -> Exception.method_handler * 'a t
          val remove :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val remove_or_not :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            elt -> 'a t -> Exception.method_handler * 'a t
          val update :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler -> '-> Exception.method_handler * 'a) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val map2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             '-> '-> Exception.method_handler * 'a) ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold2z :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler * 'c) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val fold2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> '-> Exception.method_handler * 'c) ->
            'a t -> 'b t -> '-> Exception.method_handler * 'c
          val iter2_sparse :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val diff :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val diff_pred :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            ('-> '-> bool) ->
            'a t -> 'a t -> Exception.method_handler * 'a t * 'a t
          val merge :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val union :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            'a t -> 'a t -> Exception.method_handler * 'a t
          val fold_restriction :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val fold_restriction_with_missing_associations :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (elt ->
             '->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            (elt ->
             Exception.method_handler * '-> Exception.method_handler * 'b) ->
            set -> 'a t -> '-> Exception.method_handler * 'b
          val iter : (elt -> '-> unit) -> 'a t -> unit
          val iter2 :
            Remanent_parameters_sig.parameters ->
            Exception.method_handler ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> Exception.method_handler) ->
            (Remanent_parameters_sig.parameters ->
             Exception.method_handler ->
             elt -> '-> '-> Exception.method_handler) ->
            'a t -> 'b t -> Exception.method_handler
          val fold : (elt -> '-> '-> 'b) -> 'a t -> '-> 'b
          val mapi : (elt -> '-> 'b) -> 'a t -> 'b t
          val map : ('-> 'b) -> 'a t -> 'b t
          val for_all : (elt -> '-> bool) -> 'a t -> bool
          val filter_one : (elt -> '-> bool) -> 'a t -> (elt * 'a) option
          val compare : ('-> '-> int) -> 'a t -> 'a t -> int
          val equal : ('-> '-> bool) -> 'a t -> 'a t -> bool
          val bindings : 'a t -> (elt * 'a) list
          val of_json :
            ?lab_key:string ->
            ?lab_value:string ->
            ?error_msg:string ->
            (Yojson.Basic.json -> elt) ->
            (Yojson.Basic.json -> 'value) -> Yojson.Basic.json -> 'value t
          val to_json :
            ?lab_key:string ->
            ?lab_value:string ->
            (elt -> Yojson.Basic.json) ->
            ('value -> Yojson.Basic.json) -> 'value t -> Yojson.Basic.json
        end
    end
end