You can use :=
to remove t
from Y(T)
's signature:
module X (T : sig type t end) = struct
type t = T.t
end
module Y (T : sig type t end) = struct
type t = T.t
end
module M = struct
module T = struct type t = int end
include X(T)
include (Y(T) : module type of Y(T) with type t := T.t)
end