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 = int 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