File "pr6293_bad.ml", line 10, characters 18-37: 10 | let f (module M : S with type t = int) = { M.a = 0 };; ^^^^^^^^^^^^^^^^^^^ Error: In this "with" constraint, the new definition of "t" does not match its original definition in the constrained signature: Type declarations do not match: type t is not included in type t = { a : int; b : int; } The first is abstract, but the second is a record. File "pr6293_bad.ml", line 9, characters 20-50: Expected declaration File "pr6293_bad.ml", line 10, characters 18-37: Actual declaration