Module Funarr


module Funarr: sig  end
Theory of arrays.
Author(s): Harald Ruess


Terms in the theory of arrays are Given an equality relation =E and a disequality relation <>D, the theory of arrays is specified by

val d_interp : Term.t -> Sym.arrays * Term.t list
Parameters:
? : Term.t
val d_update : Term.t -> Term.t * Term.t * Term.t
Parameters:
a : Term.t
val d_select : Term.t -> Term.t * Term.t
Parameters:
a : Term.t
val d_create : Term.t -> Term.t
Parameters:
a : Term.t
val d_select_update : Term.t -> Term.t * Term.t * Term.t * Term.t
d_select a returns (b, i, x, j) if a is of the form a[i:=x][j].
Parameters:
a : Term.t

type equalRel = Term.t -> Term.t -> Three.t
val is_interp : Term.t -> bool
Parameters:
? : Term.t


Constructors


val mk_create : Term.t -> Term.t
Creating constant array.
Parameters:
a : Term.t
val mk_select : equalRel -> Term.t -> Term.t -> Term.t
mk_select a j constructs a canonical term equivalent to App(select, [a; j]).
Parameters:
is_equal : equalRel
b : Term.t
j : Term.t
val mk_update : equalRel -> Term.t -> Term.t -> Term.t -> Term.t
mk_update a x i constructs a canonical term equivalent to App(update, [a;x;i]).
Parameters:
is_equal : equalRel
a : Term.t
j : Term.t
y : Term.t


Canonizer


val sigma : equalRel -> Sym.arrays -> Term.t list -> Term.t
Array canonizer.
Parameters:
is_equal : equalRel
op : Sym.arrays
l : Term.t list


Iterators


val map : equalRel -> (Term.t -> Term.t) -> Term.t -> Term.t
Applying a term transformer at all uninterpreted positions
Parameters:
is_equal : equalRel
f : Term.t -> Term.t
b : Term.t


Flat terms


module Flat: sig  end