Module JuicyMemOps <: JUICY_MEM_OPS.
Program Definition juicy_mem_store j ch b ofs v: option juicy_mem :=
if valid_access_dec (m_dry j) ch b ofs Writable
then Some (store_juicy_mem j _ ch b ofs v _)
else None.
Next Obligation.
intros.
apply (proj1_sig (valid_access_store (m_dry j) ch b ofs v H)).
Defined.
Next Obligation.
apply (proj2_sig (valid_access_store (m_dry j) ch b ofs v H)).
Defined.
Program Definition juicy_mem_storebytes j b ofs bytes: option juicy_mem :=
if range_perm_dec (m_dry j) b ofs (ofs + Z_of_nat (length bytes)) Cur Writable
then Some (storebytes_juicy_mem j _ b ofs bytes _)
else None.
Next Obligation.
apply (proj1_sig (range_perm_storebytes (m_dry j) b ofs bytes H)).
Defined.
Next Obligation.
apply (proj2_sig (range_perm_storebytes (m_dry j) b ofs bytes H)).
Qed.

Lemma juicy_mem_alloc_aux1:
forall jm lo hi m' b, alloc (m_dry jm) lo hi = (m',b) ->
forall ofs, m_phi jm @ (b,ofs) = NO Share.bot bot_unreadable.