sig
  type elt = Link.name
  type t
  val add : Link.Face.elt -> Link.Face.t -> Link.Face.t
  val cardinal : Link.Face.t -> int
  val choose : Link.Face.t -> Link.Face.elt option
  val compare : Link.Face.t -> Link.Face.t -> int
  val diff : Link.Face.t -> Link.Face.t -> Link.Face.t
  val elements : Link.Face.t -> Link.Face.elt list
  val empty : Link.Face.t
  val equal : Link.Face.t -> Link.Face.t -> bool
  val exists : (Link.Face.elt -> bool) -> Link.Face.t -> bool
  val filter : (Link.Face.elt -> bool) -> Link.Face.t -> Link.Face.t
  val fold : (Link.Face.elt -> '-> 'a) -> Link.Face.t -> '-> 'a
  val for_all : (Link.Face.elt -> bool) -> Link.Face.t -> bool
  val inter : Link.Face.t -> Link.Face.t -> Link.Face.t
  val is_empty : Link.Face.t -> bool
  val iter : (Link.Face.elt -> unit) -> Link.Face.t -> unit
  val max_elt : Link.Face.t -> Link.Face.elt option
  val mem : Link.Face.elt -> Link.Face.t -> bool
  val min_elt : Link.Face.t -> Link.Face.elt option
  val partition :
    (Link.Face.elt -> bool) -> Link.Face.t -> Link.Face.t * Link.Face.t
  val remove : Link.Face.elt -> Link.Face.t -> Link.Face.t
  val singleton : Link.Face.elt -> Link.Face.t
  val split :
    Link.Face.elt -> Link.Face.t -> Link.Face.t * bool * Link.Face.t
  val subset : Link.Face.t -> Link.Face.t -> bool
  val union : Link.Face.t -> Link.Face.t -> Link.Face.t
end