let rec is_darray pool te dims a = if dims > 0 then let i = LogicLang.fresh pool "i" Integer in let a_i = e_access a (e_var i) in p_forall i (is_darray pool te (pred dims) a_i) else !dhas_ctype te a