sig
  type elt
  type t
  val empty : Relation.R.t
  val id : Relation.R.elt list -> Relation.R.t
  val equal : Relation.R.t -> Relation.R.t -> bool
  val compare : Relation.R.t -> Relation.R.t -> int
  val succ : Relation.R.elt -> Relation.R.t -> Relation.R.elt list
  val restr : Relation.R.elt list -> Relation.R.t -> Relation.R.t
  val inser : Relation.R.elt * Relation.R.elt -> Relation.R.t -> Relation.R.t
  val mem : Relation.R.elt * Relation.R.elt -> Relation.R.t -> bool
  val map :
    (Relation.R.elt * Relation.R.elt -> Relation.R.elt * Relation.R.elt) ->
    Relation.R.t -> Relation.R.t
  val fold :
    (Relation.R.elt * Relation.R.elt -> '-> 'a) -> Relation.R.t -> '-> 'a
  val to_list : Relation.R.t -> (Relation.R.elt * Relation.R.elt) list
  val concatenation : Relation.R.t -> Relation.R.t -> Relation.R.t
  val union : Relation.R.t -> Relation.R.t -> Relation.R.t
  val refl : Relation.R.elt list -> Relation.R.t -> Relation.R.t
  val etoile : Relation.R.elt list -> Relation.R.t -> Relation.R.t
end