End SepThrow.
Section SepTry.
Variables (A B : Type) (s : spec A) (s1 : A -> spec B) (s2 : exn -> spec B).
Variables (e : STsep s) (e1 : forall x, STsep (s1 x)).
Variables (e2 : forall e, STsep (s2 e)).
Definition try_s : spec B :=
(Model.try_pre [s] (fr \o s1) (fr \o s2),
Model.try_post [s] (fr \o s1) (fr \o s2)).

(* Specifications: *)
Lemma tryP : Model.conseq (Model.try_s [s] (fr \o s1) (fr \o s2)) [try_s].
Definition try : STsep try_s := Model.Do (Model.try e e1 e2) tryP.