Local Open Scope Z.
Local Open Scope logic.

(* Specifications: *)
Lemma Hblocks_lem:
forall {blocks: list int} {frag: list byte} {data},
intlist_to_bytelist blocks = frag ++ sublist 0 (Zlength blocks * 4 - Zlength frag) data ->
Zlength frag <= Zlength blocks * 4.
Lemma cancel_field_at_array_partial_undef:
forall {cs: compspecs} sh t t1 n gfs p (al bl: list (reptype t)) blen v1 v2,
nested_field_type t1 gfs = tarray t n ->
legal_nested_field t1 gfs ->
Zlength (al++bl) = n ->
Zlength bl = blen ->
JMeq v1 (al++bl) ->
JMeq v2 (al++list_repeat (Z.to_nat blen) (default_val t)) ->
field_at sh t1 gfs v1 p
|-- field_at sh t1 gfs v2 p.