sig
  type t = Types.Atom.t array
  val equal : Types.ArrayAtom.t -> Types.ArrayAtom.t -> bool
  val hash : Types.ArrayAtom.t -> int
  val subset : Types.ArrayAtom.t -> Types.ArrayAtom.t -> bool
  val trivial_is_implied : Types.ArrayAtom.t -> Types.ArrayAtom.t -> bool
  val of_satom : Types.SAtom.t -> Types.ArrayAtom.t
  val to_satom : Types.ArrayAtom.t -> Types.SAtom.t
  val union : Types.ArrayAtom.t -> Types.ArrayAtom.t -> Types.ArrayAtom.t
  val apply_subst : Variable.subst -> Types.ArrayAtom.t -> Types.ArrayAtom.t
  val nb_diff : Types.ArrayAtom.t -> Types.ArrayAtom.t -> int
  val compare_nb_diff :
    Types.ArrayAtom.t -> Types.ArrayAtom.t -> Types.ArrayAtom.t -> int
  val compare_nb_common :
    Types.ArrayAtom.t -> Types.ArrayAtom.t -> Types.ArrayAtom.t -> int
  val diff : Types.ArrayAtom.t -> Types.ArrayAtom.t -> Types.ArrayAtom.t
  val alpha :
    Types.ArrayAtom.t ->
    Variable.t list -> Variable.t list * Types.ArrayAtom.t
  val print : Format.formatter -> Types.ArrayAtom.t -> unit
end