(** Now the main hoare rules **)

Lemma hoare_if : forall ps R e P c1 c2 Q n,
hoare_ ps R (EX v:nat, eval e (int_val v) && !!(v <> 0) && P) c1 Q n ->
hoare_ ps R (eval e (int_val 0) && P) c2 Q n ->
hoare_ ps R
(EX v:nat, eval e (int_val v) && P)
(cif e c1 c2)
Q n.