Local Open Scope Z.
Local Open Scope logic.

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.