Local Hint Resolve valid_access_alloc_other valid_access_alloc_same: mem.

(* Specifications: *)
Theorem valid_access_alloc_inv:
forall chunk b' ofs p,
valid_access m2 chunk b' ofs p ->
if eq_block b' b
then lo <= ofs /\ ofs + size_chunk chunk <= hi /\ (align_chunk chunk | ofs)
else valid_access m1 chunk b' ofs p.
Theorem load_alloc_unchanged:
forall chunk b' ofs,
valid_block m1 b' ->
load chunk m2 b' ofs = load chunk m1 b' ofs.
Theorem load_alloc_other:
forall chunk b' ofs v,
load chunk m1 b' ofs = Some v ->
load chunk m2 b' ofs = Some v.
Theorem load_alloc_same:
forall chunk ofs v,
load chunk m2 b ofs = Some v ->
v = Vundef.
Theorem load_alloc_same':
forall chunk ofs,
lo <= ofs -> ofs + size_chunk chunk <= hi -> (align_chunk chunk | ofs) ->
load chunk m2 b ofs = Some Vundef.
Theorem loadbytes_alloc_unchanged:
forall b' ofs n,
valid_block m1 b' ->
loadbytes m2 b' ofs n = loadbytes m1 b' ofs n.
Theorem loadbytes_alloc_same:
forall n ofs bytes byte,
loadbytes m2 b ofs n = Some bytes ->
In byte bytes -> byte = Undef.
Theorem valid_access_alloc_inv:
forall chunk b' ofs p,
valid_access m2 chunk b' ofs p ->
if eq_block b' b
then lo <= ofs /\ ofs + size_chunk chunk <= hi /\ (align_chunk chunk | ofs)
else valid_access m1 chunk b' ofs p.
Theorem load_alloc_unchanged:
forall chunk b' ofs,
valid_block m1 b' ->
load chunk m2 b' ofs = load chunk m1 b' ofs.
Theorem load_alloc_other:
forall chunk b' ofs v,
load chunk m1 b' ofs = Some v ->
load chunk m2 b' ofs = Some v.
Theorem load_alloc_same:
forall chunk ofs v,
load chunk m2 b ofs = Some v ->
v = Vundef.
Theorem load_alloc_same':
forall chunk ofs,
lo <= ofs -> ofs + size_chunk chunk <= hi -> (align_chunk chunk | ofs) ->
load chunk m2 b ofs = Some Vundef.
Theorem loadbytes_alloc_unchanged:
forall b' ofs n,
valid_block m1 b' ->
loadbytes m2 b' ofs n = loadbytes m1 b' ofs n.
Theorem loadbytes_alloc_same:
forall n ofs bytes byte,
loadbytes m2 b ofs n = Some bytes ->
In byte bytes -> byte = Undef.