sig
  module type Mvbdu =
    sig
      type key
      type value
      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 ->
          Mvbdu_wrapper.Mvbdu.handler ->
          Exception.method_handler ->
          Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler * 'output
      type ('input, 'output) unary =
          Remanent_parameters_sig.parameters ->
          Mvbdu_wrapper.Mvbdu.handler ->
          Exception.method_handler ->
          'input ->
          Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler * 'output
      type ('input1, 'input2, 'output) binary =
          Remanent_parameters_sig.parameters ->
          Mvbdu_wrapper.Mvbdu.handler ->
          Exception.method_handler ->
          'input1 ->
          'input2 ->
          Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler * 'output
      type ('input1, 'input2, 'input3, 'output) ternary =
          Remanent_parameters_sig.parameters ->
          Mvbdu_wrapper.Mvbdu.handler ->
          Exception.method_handler ->
          'input1 ->
          'input2 ->
          'input3 ->
          Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler * 'output
      val init :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler
      val is_init : unit -> bool
      val get_handler :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler
      val reset :
        Remanent_parameters_sig.parameters ->
        Exception.method_handler ->
        Exception.method_handler * Mvbdu_wrapper.Mvbdu.handler
      val equal :
        Mvbdu_wrapper.Mvbdu.mvbdu -> Mvbdu_wrapper.Mvbdu.mvbdu -> bool
      val equal_with_logs :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu, bool)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_false :
        Mvbdu_wrapper.Mvbdu.mvbdu Mvbdu_wrapper.Mvbdu.constant
      val mvbdu_true : Mvbdu_wrapper.Mvbdu.mvbdu Mvbdu_wrapper.Mvbdu.constant
      val mvbdu_not :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_id :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_unary_true :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_unary_false :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_and :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_or :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_xor :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nand :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nor :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_imply :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_rev_imply :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_equiv :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nimply :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nrev_imply :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_bi_true :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_bi_false :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_fst :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_snd :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nfst :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_nsnd :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_redefine :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_redefine_range :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.hconsed_range_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_subseteq :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu, bool)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_of_hconsed_asso :
        (Mvbdu_wrapper.Mvbdu.hconsed_association_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_sorted_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_reverse_sorted_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_hconsed_range :
        (Mvbdu_wrapper.Mvbdu.hconsed_range_list, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_sorted_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_of_reverse_sorted_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_rename :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.hconsed_renaming_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_project_keep_only :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_project_abstract_away :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list,
         Mvbdu_wrapper.Mvbdu.mvbdu)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_cartesian_decomposition_depth :
        (Mvbdu_wrapper.Mvbdu.mvbdu, int,
         Mvbdu_wrapper.Mvbdu.mvbdu option * Mvbdu_wrapper.Mvbdu.mvbdu list)
        Mvbdu_wrapper.Mvbdu.binary
      val mvbdu_full_cartesian_decomposition :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu list)
        Mvbdu_wrapper.Mvbdu.unary
      val mvbdu_cartesian_abstraction :
        (Mvbdu_wrapper.Mvbdu.mvbdu, Mvbdu_wrapper.Mvbdu.mvbdu list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_sorted_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_reverse_sorted_association_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list)
        Mvbdu_wrapper.Mvbdu.unary
      val empty_association_list :
        Mvbdu_wrapper.Mvbdu.hconsed_association_list
        Mvbdu_wrapper.Mvbdu.constant
      val build_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.hconsed_range_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_sorted_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.hconsed_range_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_reverse_sorted_range_list :
        ((Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list, Mvbdu_wrapper.Mvbdu.hconsed_range_list)
        Mvbdu_wrapper.Mvbdu.unary
      val empty_range_list :
        Mvbdu_wrapper.Mvbdu.hconsed_range_list Mvbdu_wrapper.Mvbdu.constant
      val build_variables_list :
        (Mvbdu_wrapper.Mvbdu.key list,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_sorted_variables_list :
        (Mvbdu_wrapper.Mvbdu.key list,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_reverse_sorted_variables_list :
        (Mvbdu_wrapper.Mvbdu.key list,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list)
        Mvbdu_wrapper.Mvbdu.unary
      val empty_variables_list :
        Mvbdu_wrapper.Mvbdu.hconsed_variables_list
        Mvbdu_wrapper.Mvbdu.constant
      val build_renaming_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.key) list,
         Mvbdu_wrapper.Mvbdu.hconsed_renaming_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_sorted_renaming_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.key) list,
         Mvbdu_wrapper.Mvbdu.hconsed_renaming_list)
        Mvbdu_wrapper.Mvbdu.unary
      val build_reverse_sorted_renaming_list :
        ((Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.key) list,
         Mvbdu_wrapper.Mvbdu.hconsed_renaming_list)
        Mvbdu_wrapper.Mvbdu.unary
      val empty_renaming_list :
        Mvbdu_wrapper.Mvbdu.hconsed_renaming_list
        Mvbdu_wrapper.Mvbdu.constant
      val overwrite_association_lists :
        (Mvbdu_wrapper.Mvbdu.hconsed_association_list,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list,
         Mvbdu_wrapper.Mvbdu.hconsed_association_list)
        Mvbdu_wrapper.Mvbdu.binary
      val merge_variables_lists :
        (Mvbdu_wrapper.Mvbdu.hconsed_variables_list,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list)
        Mvbdu_wrapper.Mvbdu.binary
      val nbr_variables :
        (Mvbdu_wrapper.Mvbdu.hconsed_variables_list, int)
        Mvbdu_wrapper.Mvbdu.unary
      val extensional_of_variables_list :
        (Mvbdu_wrapper.Mvbdu.hconsed_variables_list,
         Mvbdu_wrapper.Mvbdu.key list)
        Mvbdu_wrapper.Mvbdu.unary
      val extensional_of_association_list :
        (Mvbdu_wrapper.Mvbdu.hconsed_association_list,
         (Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list)
        Mvbdu_wrapper.Mvbdu.unary
      val extensional_of_range_list :
        (Mvbdu_wrapper.Mvbdu.hconsed_range_list,
         (Mvbdu_wrapper.Mvbdu.key *
          (Mvbdu_wrapper.Mvbdu.value * Mvbdu_wrapper.Mvbdu.value))
         list)
        Mvbdu_wrapper.Mvbdu.unary
      val extensional_of_mvbdu :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         (Mvbdu_wrapper.Mvbdu.key * Mvbdu_wrapper.Mvbdu.value) list list)
        Mvbdu_wrapper.Mvbdu.unary
      val variables_list_of_mvbdu :
        (Mvbdu_wrapper.Mvbdu.mvbdu,
         Mvbdu_wrapper.Mvbdu.hconsed_variables_list)
        Mvbdu_wrapper.Mvbdu.unary
      val print :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Mvbdu.mvbdu -> unit
      val print_association_list :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Mvbdu.hconsed_association_list -> unit
      val print_variables_list :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Mvbdu.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) Mvbdu_wrapper.Mvbdu.binary ->
        (Mvbdu_wrapper.Mvbdu.hconsed_variables_list, 'data, 'map, 'map)
        Mvbdu_wrapper.Mvbdu.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) Mvbdu_wrapper.Mvbdu.binary ->
        (Mvbdu_wrapper.Mvbdu.mvbdu, 'data, 'map, 'map)
        Mvbdu_wrapper.Mvbdu.ternary
      val last_entry : (unit, int) Mvbdu_wrapper.Mvbdu.unary
      val hash_of_range_list : Mvbdu_wrapper.Mvbdu.hconsed_range_list -> int
      val hash_of_association_list :
        Mvbdu_wrapper.Mvbdu.hconsed_association_list -> int
      val hash_of_variables_list :
        Mvbdu_wrapper.Mvbdu.hconsed_variables_list -> int
    end
  module type Internalized_mvbdu =
    sig
      type key
      type value
      type 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 : Mvbdu_wrapper.Internalized_mvbdu.handler -> unit
      val export_handler :
        Exception.method_handler ->
        Exception.method_handler *
        Mvbdu_wrapper.Internalized_mvbdu.handler option
      val is_init : unit -> bool
      val equal :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu -> bool
      val mvbdu_false : unit -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_true : unit -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_not :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_id :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_unary_true :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_unary_false :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_and :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_or :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_xor :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nand :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nor :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_imply :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_rev_imply :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_equiv :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nimply :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nrev_imply :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_bi_true :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_bi_false :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_fst :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_snd :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nfst :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_nsnd :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_redefine :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_redefine_range :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_subseteq :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu -> bool
      val mvbdu_of_hconsed_asso :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_sorted_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_reverse_sorted_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_hconsed_range :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_sorted_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_of_reverse_sorted_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_rename :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_renaming_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_project_abstract_away :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_project_keep_only :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu
      val mvbdu_cartesian_abstraction :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu list
      val mvbdu_cartesian_decomposition_depth :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        int ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu option *
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu list
      val mvbdu_full_cartesian_decomposition :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu list
      val build_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list
      val build_sorted_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list
      val build_reverse_sorted_association_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list
      val empty_association_list :
        unit -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list
      val build_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list
      val build_sorted_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list
      val build_reverse_sorted_range_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         (Mvbdu_wrapper.Internalized_mvbdu.value *
          Mvbdu_wrapper.Internalized_mvbdu.value))
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list
      val empty_range_list :
        unit -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_range_list
      val build_variables_list :
        Mvbdu_wrapper.Internalized_mvbdu.key list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val build_sorted_variables_list :
        Mvbdu_wrapper.Internalized_mvbdu.key list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val build_reverse_sorted_variables_list :
        Mvbdu_wrapper.Internalized_mvbdu.key list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val empty_variables_list :
        unit -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val build_renaming_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.key)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_renaming_list
      val build_sorted_renaming_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.key)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_renaming_list
      val build_reverse_sorted_renaming_list :
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.key)
        list -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_renaming_list
      val empty_renaming_list :
        unit -> Mvbdu_wrapper.Internalized_mvbdu.hconsed_renaming_list
      val overwrite_association_lists :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list
      val merge_variables_lists :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val nbr_variables :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list -> int
      val extensional_of_variables_list :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list ->
        Mvbdu_wrapper.Internalized_mvbdu.key list
      val extensional_of_association_list :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list ->
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list
      val extensional_of_mvbdu :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        (Mvbdu_wrapper.Internalized_mvbdu.key *
         Mvbdu_wrapper.Internalized_mvbdu.value)
        list list
      val variables_list_of_mvbdu :
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list
      val print :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Internalized_mvbdu.mvbdu -> unit
      val print_association_list :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list -> unit
      val print_variables_list :
        Remanent_parameters_sig.parameters ->
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list -> unit
      val hash_of_association_list :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_association_list -> int
      val hash_of_variables_list :
        Mvbdu_wrapper.Internalized_mvbdu.hconsed_variables_list -> int
    end
  module type Nul = sig  end
  module Internalize :
    functor
      (M : sig
             type key = int
             type value = int
             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->
      sig
        type key = int
        type value = int
        type mvbdu = M.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 Make :
    functor (M : Nul->
      sig
        type key = int
        type value = int
        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 Mvbdu :
    sig
      type key = int
      type value = int
      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 IntMvbdu :
    sig
      type key = int
      type value = int
      type mvbdu = Mvbdu.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 Optimized_Mvbdu :
    sig
      type key = int
      type value = int
      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 Optimized_IntMvbdu :
    sig
      type key = int
      type value = int
      type 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
end