sig
  module type Composite_domain =
    sig
      type static_information
      type dynamic_information
      val initialize :
        Analyzer_headers.global_static_information ->
        Analyzer_headers.global_dynamic_information ->
        Exception.method_handler ->
        Exception.method_handler *
        Composite_domain.Composite_domain.static_information *
        Composite_domain.Composite_domain.dynamic_information
      type 'a zeroary =
          Composite_domain.Composite_domain.static_information ->
          Composite_domain.Composite_domain.dynamic_information ->
          Exception.method_handler ->
          Exception.method_handler *
          Composite_domain.Composite_domain.dynamic_information * 'a
      type ('a, 'b) unary =
          Composite_domain.Composite_domain.static_information ->
          Composite_domain.Composite_domain.dynamic_information ->
          Exception.method_handler ->
          '->
          Exception.method_handler *
          Composite_domain.Composite_domain.dynamic_information * 'b
      type ('a, 'b, 'c) binary =
          Composite_domain.Composite_domain.static_information ->
          Composite_domain.Composite_domain.dynamic_information ->
          Exception.method_handler ->
          '->
          '->
          Exception.method_handler *
          Composite_domain.Composite_domain.dynamic_information * 'c
      type ('a, 'b, 'c, 'd) ternary =
          Composite_domain.Composite_domain.static_information ->
          Composite_domain.Composite_domain.dynamic_information ->
          Exception.method_handler ->
          '->
          '->
          '->
          Exception.method_handler *
          Composite_domain.Composite_domain.dynamic_information * 'd
      val next_rule :
        Ckappa_sig.c_rule_id option Composite_domain.Composite_domain.zeroary
      val add_initial_state :
        (Analyzer_headers.initial_state, unit)
        Composite_domain.Composite_domain.unary
      val is_enabled :
        (Ckappa_sig.c_rule_id, Communication.precondition option)
        Composite_domain.Composite_domain.unary
      val apply_rule :
        (Ckappa_sig.c_rule_id, Communication.precondition, unit)
        Composite_domain.Composite_domain.binary
      val stabilize : unit Composite_domain.Composite_domain.zeroary
      val export :
        (('static, 'dynamic) Analyzer_headers.kasa_state,
         ('static, 'dynamic) Analyzer_headers.kasa_state)
        Composite_domain.Composite_domain.unary
      val print : (Loggers.t, unit) Composite_domain.Composite_domain.unary
      val maybe_reachable :
        (Analyzer_headers.pattern_matching_flag, Cckappa_sig.mixture,
         Communication.precondition option)
        Composite_domain.Composite_domain.binary
      val get_global_dynamic_information :
        Composite_domain.Composite_domain.dynamic_information ->
        Analyzer_headers.global_dynamic_information
      val set_global_dynamic_information :
        Analyzer_headers.global_dynamic_information ->
        Composite_domain.Composite_domain.dynamic_information ->
        Composite_domain.Composite_domain.dynamic_information
    end
  module Make :
    functor (Domain : Analyzer_domain_sig.Domain-> Composite_domain
end