sig
  type failure = {
    expected_value : string;
    actual_value : string;
    message : string;
  }
  exception Failed of Assertion.failure
  val fail : string -> string -> string -> 'a
  val fail_msg : string -> 'a
  val default_printer : '-> string
  val equal :
    ?eq:('-> '-> bool) ->
    ?prn:('-> string) -> ?msg:string -> '-> '-> unit
  val not_equal :
    ?eq:('-> '-> bool) ->
    ?prn:('-> string) -> ?msg:string -> '-> '-> unit
  val same : ?prn:('-> string) -> ?msg:string -> '-> '-> unit
  val not_same : ?prn:('-> string) -> ?msg:string -> '-> '-> unit
  val make_equal :
    ('-> '-> bool) -> ('-> string) -> ?msg:string -> '-> '-> unit
  val make_not_equal :
    ('-> '-> bool) -> ('-> string) -> ?msg:string -> '-> '-> unit
  val make_equal_array :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'a array -> 'a array -> unit
  val make_not_equal_array :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'a array -> 'a array -> unit
  val make_equal_list :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'a list -> 'a list -> unit
  val make_not_equal_list :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'a list -> 'a list -> unit
  val make_equal_hashtbl :
    ('-> '-> bool) ->
    ('-> string) ->
    ('-> string) ->
    ?msg:string -> ('a, 'b) Hashtbl.t -> ('a, 'b) Hashtbl.t -> unit
  val make_not_equal_hashtbl :
    ('-> '-> bool) ->
    ('-> string) ->
    ('-> string) ->
    ?msg:string -> ('a, 'b) Hashtbl.t -> ('a, 'b) Hashtbl.t -> unit
  module type Printer =
    sig type t val to_string : Assertion.Printer.t -> string end
  module Map :
    functor (M : Map.S->
      functor (P : sig type t = M.key val to_string : t -> string end->
        sig
          val make_equal :
            ('-> '-> bool) ->
            ('-> string) -> ?msg:string -> 'M.t -> 'M.t -> unit
          val make_not_equal :
            ('-> '-> bool) ->
            ('-> string) -> ?msg:string -> 'M.t -> 'M.t -> unit
        end
  module Set :
    functor (S : Set.S->
      functor (P : sig type t = S.elt val to_string : t -> string end->
        sig
          val equal : ?msg:string -> S.t -> S.t -> unit
          val not_equal : ?msg:string -> S.t -> S.t -> unit
        end
  val make_equal_queue :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Queue.t -> 'Queue.t -> unit
  val make_not_equal_queue :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Queue.t -> 'Queue.t -> unit
  val make_equal_stack :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Stack.t -> 'Stack.t -> unit
  val make_not_equal_stack :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Stack.t -> 'Stack.t -> unit
  val make_equal_weak :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Weak.t -> 'Weak.t -> unit
  val make_not_equal_weak :
    ('-> '-> bool) ->
    ('-> string) -> ?msg:string -> 'Weak.t -> 'Weak.t -> unit
  val equal_bool : ?msg:string -> bool -> bool -> unit
  val not_equal_bool : ?msg:string -> bool -> bool -> unit
  val equal_int : ?msg:string -> int -> int -> unit
  val not_equal_int : ?msg:string -> int -> int -> unit
  val equal_int32 : ?msg:string -> int32 -> int32 -> unit
  val not_equal_int32 : ?msg:string -> int32 -> int32 -> unit
  val equal_int64 : ?msg:string -> int64 -> int64 -> unit
  val not_equal_int64 : ?msg:string -> int64 -> int64 -> unit
  val equal_nativeint : ?msg:string -> nativeint -> nativeint -> unit
  val not_equal_nativeint : ?msg:string -> nativeint -> nativeint -> unit
  val equal_char : ?msg:string -> char -> char -> unit
  val not_equal_char : ?msg:string -> char -> char -> unit
  val equal_string : ?msg:string -> string -> string -> unit
  val not_equal_string : ?msg:string -> string -> string -> unit
  val equal_float : ?eps:float -> ?msg:string -> float -> float -> unit
  val not_equal_float : ?eps:float -> ?msg:string -> float -> float -> unit
  val equal_complex :
    ?eps:float -> ?msg:string -> Complex.t -> Complex.t -> unit
  val not_equal_complex :
    ?eps:float -> ?msg:string -> Complex.t -> Complex.t -> unit
  val is_true : ?msg:string -> bool -> unit
  val is_false : ?msg:string -> bool -> unit
  val is_some : ?msg:string -> 'a option -> unit
  val is_none : ?msg:string -> 'a option -> unit
  val raises : ?msg:string -> (unit -> 'a) -> unit
  val no_raise : ?msg:string -> (unit -> 'a) -> unit
  val make_raises :
    (exn -> bool) -> (exn -> string) -> ?msg:string -> (unit -> 'a) -> unit
end