Canonical Structure exn_eqMixin := EqMixin eqexnP.Canonical Structure exn_eqType := EqType exn exn_eqMixin.(* Answer type *)
Inductive ans (A : Type) : Type := Val of A | Exn of exn.(* Answer type *)
Inductive ans (A : Type) : Type := Val of A | Exn of exn.(* Answer type *)
Inductive ans (A : Type) : Type := Val of A | Exn of exn.Notation pre := (Pred heap).Notation post A := (ans A -> heap -> heap -> Prop).Definition spec B := pre * post B : Type.Notation ideald P := (ideal (defed P)).(* we carve out the model out of the following base type *)
Definition prog := ideald P -> ans A -> Pred heap.

Lemma modelE (e1 e2 : ST) : e1 = e2 <-> model e1 = model e2.