(** Load-alloc properties. *)

(* Specifications: *)
Axiom load_alloc_unchanged:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk b' ofs,
valid_block m1 b' ->
load chunk m2 b' ofs = load chunk m1 b' ofs.
Axiom load_alloc_other:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk b' ofs v,
load chunk m1 b' ofs = Some v ->
load chunk m2 b' ofs = Some v.
Axiom load_alloc_same:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk ofs v,
load chunk m2 b ofs = Some v ->
v = Vundef.
Axiom load_alloc_same':
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk ofs,
lo <= ofs -> ofs + size_chunk chunk <= hi -> (align_chunk chunk | ofs) ->
load chunk m2 b ofs = Some Vundef.
Axiom load_alloc_unchanged:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk b' ofs,
valid_block m1 b' ->
load chunk m2 b' ofs = load chunk m1 b' ofs.
Axiom load_alloc_other:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk b' ofs v,
load chunk m1 b' ofs = Some v ->
load chunk m2 b' ofs = Some v.
Axiom load_alloc_same:
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk ofs v,
load chunk m2 b ofs = Some v ->
v = Vundef.
Axiom load_alloc_same':
forall m1 lo hi m2 b, alloc m1 lo hi = (m2, b) ->
forall chunk ofs,
lo <= ofs -> ofs + size_chunk chunk <= hi -> (align_chunk chunk | ofs) ->
load chunk m2 b ofs = Some Vundef.