(** Now the main hoare rules **)

Lemma hoare_call' : forall ps R i f es fs Q,
satisfies_fun_spec ps f fs |--
hoare_ ps R
(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.