functor (X : Alphabet.T) ->
sig
type t = X.t array
type word = Monoid.Free.t
val mul : Monoid.Free.t -> Monoid.Free.t -> Monoid.Free.t
val one : Monoid.Free.t
val inj : X.t -> Monoid.Free.t
val length : Monoid.Free.t -> int
val sub : Monoid.Free.t -> int -> int -> Monoid.Free.t
val eq : Monoid.Free.t -> Monoid.Free.t -> bool
val compare : Monoid.Free.t -> Monoid.Free.t -> int
val peq : Monoid.Free.t -> int -> Monoid.Free.t -> int -> int -> bool
val to_string : Monoid.Free.t -> string
val included : Monoid.Free.t -> Monoid.Free.t -> bool
val unifier : ?i:int -> Monoid.Free.t -> Monoid.Free.t -> int
val ordered_unifiers : Monoid.Free.t -> Monoid.Free.t -> int list
val ordered_unifiers_bicontext :
Monoid.Free.t ->
Monoid.Free.t ->
((Monoid.Free.t * Monoid.Free.t) * (Monoid.Free.t * Monoid.Free.t))
list
val unifiers_bicontext :
Monoid.Free.t ->
Monoid.Free.t ->
((Monoid.Free.t * Monoid.Free.t) * (Monoid.Free.t * Monoid.Free.t))
list
module Order :
sig
val lexicographic :
(X.t -> X.t -> bool) -> Monoid.Free.t -> Monoid.Free.t -> bool
val deglex :
(X.t -> X.t -> bool) -> Monoid.Free.t -> Monoid.Free.t -> bool
end
module Anick :
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
end