sig
  type ('p, 'q, 'a) t
  val align_with :
    (('a, 'b) These.t -> 'c) ->
    ('p, 'q, 'a) Align.Basic3.t ->
    ('p, 'q, 'b) Align.Basic3.t -> ('p, 'q, 'c) Align.Basic3.t
end