functor (X : T.T2->
  sig
    val lift :
      ('a1, 'b1) Type_equal.t ->
      ('a2, 'b2) Type_equal.t ->
      (('a1, 'a2) X.t, ('b1, 'b2) X.t) Type_equal.t
  end