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