sig
  type t
  val choose : Link.Ports.t -> (int * int) option
  val compare : (int -> int -> int) -> Link.Ports.t -> Link.Ports.t -> int
  val empty : Link.Ports.t
  val equal : (int -> int -> bool) -> Link.Ports.t -> Link.Ports.t -> bool
  val filter : (int -> int -> bool) -> Link.Ports.t -> Link.Ports.t
  val fold : (int -> int -> '-> 'b) -> Link.Ports.t -> '-> 'b
  val is_empty : Link.Ports.t -> bool
  val max_binding : Link.Ports.t -> (int * int) option
  val min_binding : Link.Ports.t -> (int * int) option
  val to_string : Link.Ports.t -> string
  val of_nodes : Nodes.t -> Link.Ports.t
  val types : Link.Ports.t -> Nodes.t -> string list
  val to_IntSet : Link.Ports.t -> IntSet.t
  val apply : Iso.t -> Link.Ports.t -> Link.Ports.t
  val arity : Link.Ports.t -> int -> int option
  val compat_list :
    Link.Ports.t -> Link.Ports.t -> Nodes.t -> Nodes.t -> Cnf.lit list list
  val offset : Link.Ports.t -> int -> Link.Ports.t
  val add : int -> Link.Ports.t -> Link.Ports.t
  val sum : Link.Ports.t -> Link.Ports.t -> Link.Ports.t
  val cardinal : Link.Ports.t -> int
end