sig
  type ('p, 'a) t
  val align_with :
    (('a, 'b) These.t -> 'c) -> ('p, 'a) t -> ('p, 'b) t -> ('p, 'c) t
  val align : ('p, 'a) t -> ('p, 'b) t -> ('p, ('a, 'b) These.t) t
  val falign : ('-> '-> 'a) -> ('p, 'a) t -> ('p, 'a) t -> ('p, 'a) t
  val pad_zip_with :
    ('a option -> 'b option -> 'c) -> ('p, 'a) t -> ('p, 'b) t -> ('p, 'c) t
  val pad_zip : ('p, 'a) t -> ('p, 'b) t -> ('p, 'a option * 'b option) t
end