sig
type t = X.t array
type word = t
val mul : t -> t -> t
val one : t
val inj : X.t -> t
val length : t -> int
val sub : t -> int -> int -> t
val eq : t -> t -> bool
val compare : t -> t -> int
val peq : t -> int -> t -> int -> int -> bool
val to_string : t -> string
val included : t -> t -> bool
val unifier : ?i:int -> t -> t -> int
val ordered_unifiers : t -> t -> int list
val ordered_unifiers_bicontext : t -> t -> ((t * t) * (t * t)) list
val unifiers_bicontext : t -> t -> ((t * t) * (t * t)) list
module Order :
sig
val lexicographic : (X.t -> X.t -> bool) -> t -> t -> bool
val deglex : (X.t -> X.t -> bool) -> t -> t -> bool
end
module Anick :
sig
type t = word list
val empty : t
val singleton : X.t -> t
val singletons : X.t list -> t list
val hd : t -> word
val tl : t -> t
val weq : t -> t -> bool
val eq : t list -> t list -> bool
val compare : t list -> t list -> int
val extend : word list -> t list -> t list
val eval : t -> t
val length : t -> int
val to_string : t -> string
end
end