sig
  val d_interp : Term.t -> Sym.arrays * Term.t list
  val d_update : Term.t -> Term.t * Term.t * Term.t
  val d_select : Term.t -> Term.t * Term.t
  val d_create : Term.t -> Term.t
  val d_select_update : Term.t -> Term.t * Term.t * Term.t * Term.t
  type equalRel = Term.t -> Term.t -> Three.t
  val is_interp : Term.t -> bool
  val mk_create : Term.t -> Term.t
  val mk_select : Funarr.equalRel -> Term.t -> Term.t -> Term.t
  val mk_update : Funarr.equalRel -> Term.t -> Term.t -> Term.t -> Term.t
  val sigma : Funarr.equalRel -> Sym.arrays -> Term.t list -> Term.t
  val map : Funarr.equalRel -> (Term.t -> Term.t) -> Term.t -> Term.t
  module Flat :
    sig
      val is : Term.t -> bool
      val mk_create : Term.t -> Term.t
      val mk_update : Term.t -> Term.t -> Term.t -> Term.t
      val mk_select : Term.t -> Term.t -> Term.t
      val apply : Term.Equal.t -> Term.t -> Term.t
    end
end