functor (A : S4) (B : S4) -> sig type t = { eq : 'a 'b 'c 'd. (('a, 'b, 'c, 'd) A.t, ('a, 'b, 'c, 'd) B.t) Type_equal.t; } val witness : Typename.Same_witness_exn_4.t end