sig
  type t
  val empty : cstr:Constraint.t -> Literal.ClosureSet.t
  val add : Literal.ClosureSet.t -> key:substituable -> Literal.ClosureSet.t
  val closure_applies : Literal.ClosureSet.t -> key:substituable -> bool
  val add_constraint :
    Literal.ClosureSet.t -> cstr:Constraint.t -> Literal.ClosureSet.t
end