sig
  module type Eq =
    sig type a val eq : Deriving_Eq.Eq.a -> Deriving_Eq.Eq.a -> bool end
  module Eq_immutable :
    functor (S : sig type a end->
      sig type a = S.a val eq : a -> a -> bool end
  module Eq_mutable :
    functor (S : sig type a end->
      sig type a = S.a val eq : a -> a -> bool end
  module Eq_alpha :
    functor (S : sig type a end->
      sig type a = S.a val eq : a -> a -> bool end
  module Eq_int : sig type a = int val eq : a -> a -> bool end
  module Eq_bool : sig type a = bool val eq : a -> a -> bool end
  module Eq_float : sig type a = float val eq : a -> a -> bool end
  module Eq_unit : sig type a = unit val eq : a -> a -> bool end
  module Eq_char : sig type a = char val eq : a -> a -> bool end
  module Eq_string : sig type a = string val eq : a -> a -> bool end
  module Eq_int32 : sig type a = int32 val eq : a -> a -> bool end
  module Eq_int64 : sig type a = int64 val eq : a -> a -> bool end
  module Eq_nativeint : sig type a = nativeint val eq : a -> a -> bool end
  module Eq_ref :
    functor (E : Eq-> sig type a = E.a ref val eq : a -> a -> bool end
  module Eq_array :
    functor (E : Eq-> sig type a = E.a array val eq : a -> a -> bool end
  module Eq_list :
    functor (E : Eq-> sig type a = E.a list val eq : a -> a -> bool end
  module Eq_option :
    functor (E : Eq-> sig type a = E.a option val eq : a -> a -> bool end
  module Eq_map_s_t :
    functor (E : Eq) (M : Map.S->
      sig type a = E.a M.t val eq : a -> a -> bool end
  module Eq_set_s_t :
    functor (S : Set.S-> sig type a = S.t val eq : a -> a -> bool end
end