(** Now the main hoare rules **)

Lemma hoare_call : forall ps R i f es fs Q n,
hoare_ ps R
(lift_nat (satisfies_fun_spec ps f fs) *
(EX vals:list val, list_eval es vals &&
EX a:fs_A fs,
fs_pre fs a vals *
defined i *
All v:val,
fs_post fs a v * hasval i v -* Q))
(call i f es)
Q n.