Module Type JUICY_MEM_OPS.
Parameter juicy_mem_store
: juicy_mem -> memory_chunk -> block -> Z -> val -> option juicy_mem.
Parameter juicy_mem_storebytes
: juicy_mem -> block -> Z -> list memval -> option juicy_mem.
Parameter juicy_mem_alloc
: juicy_mem -> Z -> Z -> juicy_mem * block.
(* See comment below, "this is fixable"  Parameter juicy_mem_free : juicy_mem -> block -> Z -> Z -> option juicy_mem. Axiom juicy_mem_free_succeeds: forall j j' b lo hi, juicy_mem_free j b lo hi = Some j' -> exists m', free (m_dry j) b lo hi = Some m' /\ m' = m_dry j'.  *)

(* Specifications: *)
Axiom juicy_mem_store_succeeds: forall j j' ch b ofs v,
juicy_mem_store j ch b ofs v = Some j'
-> exists m', store ch (m_dry j) b ofs v = Some m' /\ m' = m_dry j'.
Axiom juicy_mem_alloc_succeeds: forall j j' b lo hi,
juicy_mem_alloc j lo hi = (j', b) -> (m_dry j', b) = alloc (m_dry j) lo hi.