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