let rec eq_tarray pool te dims ta tb =
match dims with
| [] -> !deq_ctype te ta tb
| d::ds ->
let i = LogicLang.fresh pool "i" Integer in
let ta_i = e_access ta (e_var i) in
let tb_i = e_access tb (e_var i) in
p_forall i
(in_range i d (eq_tarray pool te ds ta_i tb_i))