Hint Resolve synt_wp_monotonic: hoare.
(** Below, a little tactic to decompose a pair in hypothesis [H] by giving the name [n] to the first component. *)
Ltac dec2 n H := case H; clear H; intros n H.

(** The property below is also satisfied by [wp] (using the fact that the language is deterministic). We need it here to prove the soundness. *)
Lemma synt_wp_conj:
forall (p: ImpProg) (post1 post2: Pred) e,
(synt_wp p post1 e) -> (synt_wp p post2 e)
-> (synt_wp p (fun e => post1 e /\ post2 e) e).