sig
  type t = Monoid.Free.word list
  val empty : Monoid.Free.Anick.t
  val singleton : X.t -> Monoid.Free.Anick.t
  val singletons : X.t list -> Monoid.Free.Anick.t list
  val hd : Monoid.Free.Anick.t -> Monoid.Free.word
  val tl : Monoid.Free.Anick.t -> Monoid.Free.Anick.t
  val weq : Monoid.Free.Anick.t -> Monoid.Free.Anick.t -> bool
  val eq : Monoid.Free.Anick.t list -> Monoid.Free.Anick.t list -> bool
  val compare : Monoid.Free.Anick.t list -> Monoid.Free.Anick.t list -> int
  val extend :
    Monoid.Free.word list ->
    Monoid.Free.Anick.t list -> Monoid.Free.Anick.t list
  val eval : Monoid.Free.Anick.t -> Monoid.Free.Anick.t
  val length : Monoid.Free.Anick.t -> int
  val to_string : Monoid.Free.Anick.t -> string
end