sig
  type t =
      Dot of (Matcher.symbol * Matcher.Terms.t * Matcher.Terms.t)
    | Plus of (Matcher.symbol * Matcher.Terms.t * Matcher.Terms.t)
    | Sym of (Matcher.symbol * Matcher.Terms.t array)
    | Var of Matcher.var
    | Unit of Matcher.symbol
  val equal_aac : Matcher.units -> Matcher.Terms.t -> Matcher.Terms.t -> bool
  val map_syms :
    (Matcher.symbol -> Matcher.symbol) -> Matcher.Terms.t -> Matcher.Terms.t
  type nf_term
  val nf_term_compare : Matcher.Terms.nf_term -> Matcher.Terms.nf_term -> int
  val nf_equal : Matcher.Terms.nf_term -> Matcher.Terms.nf_term -> bool
  val sprint_nf_term : Matcher.Terms.nf_term -> string
  val term_of_t : Matcher.units -> Matcher.Terms.t -> Matcher.Terms.nf_term
  val t_of_term : Matcher.Terms.nf_term -> Matcher.Terms.t
end