sig
  type ('a, 'b) t
  val invariant :
    'Invariant.inv ->
    'Invariant.inv -> ('a, 'b) Invariant.S2.t Invariant.inv
end