Local Notation cont A := (ans A -> heap -> Prop).

(* Specifications: *)
Lemma val_ret v i (r : cont A) : (def i -> r (Val v) i) -> verify (ret_s v) i r.
Lemma try_ret s1 s2 (v : A) i (r : cont B) : verify (s1 v) i r -> verify (try_s (ret_s v) s1 s2) i r.
Lemma bnd_ret s (v : A) i (r : cont B) : verify (s v) i r -> verify (bind_s (ret_s v) s) i r.
Lemma val_throw e i (r : cont A) : (def i -> r (Exn e) i) -> verify (throw_s A e) i r.
Lemma try_throw s1 s2 e i (r : cont B) : verify (s2 e) i r -> verify (try_s (throw_s A e) s1 s2) i r.
Lemma bnd_throw s e i (r : cont B) : (def i -> r (Exn e) i) -> verify (bind_s (throw_s A e) s) i r.