*)
(** ** Properties related to [storebytes]. *)

(* Specifications: *)
Theorem range_perm_storebytes:
forall m1 b ofs bytes,
range_perm m1 b ofs (ofs + Z.of_nat (length bytes)) Cur Writable ->
{ m2 : mem | storebytes m1 b ofs bytes = Some m2 }.
Theorem store_storebytes:
forall m1 b ofs chunk v m2,
store chunk m1 b ofs v = Some m2 ->
storebytes m1 b ofs (encode_val chunk v) = Some m2.
Theorem range_perm_storebytes:
forall m1 b ofs bytes,
range_perm m1 b ofs (ofs + Z.of_nat (length bytes)) Cur Writable ->
{ m2 : mem | storebytes m1 b ofs bytes = Some m2 }.
Theorem store_storebytes:
forall m1 b ofs chunk v m2,
store chunk m1 b ofs v = Some m2 ->
storebytes m1 b ofs (encode_val chunk v) = Some m2.