(**  How to manage semi-opaque constants, using Hint Rewrite : rep_omega. *)
(* Suppose you have an uninitialized array of size N: *)
Definition N : Z := 20.

(* Specifications: *)
Lemma exercise4:
let Delta := @abbreviate _ Delta1 in
forall sh p,
data_at sh (tarray tint N) (Vint (Int.repr 1) :: Vint (Int.repr 2) :: list_repeat (Z.to_nat (N-2)) Vundef) p
|--  !! (0 <= Zlength (list_repeat (Z.to_nat (N-2)) Vundef) < Int.max_signed).