Module Arg.Ty

type 'a witness = ..
exception Not_equal
type (_, _) eq =
| Eq : ('a'a) eq
module type Ty = sig ... end
type 'a id = (module Ty with type t = 'a)
val new_id : unit -> (module Ty with type t = 'a)
val eq : a b. 'a id -> 'b id -> ('a'b) eq