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