(** Now the main hoare rules **)

Lemma hoare_load : forall ps R i e Q n,
hoare_ ps R
(EX a:addr, EX sh:Share.t, EX v:val,
eval e (ptr_val a) &&
((mapsto a sh v * defined i) *
((mapsto a sh v * hasval i v) -* Q)))
(load i e)
Q n.