(** Below, a little tactic to helps in applying [exec_inversion]. *)
Ltac exec_inversion H :=
match type of H with
| (exec ?e ?p ?e') => pattern e'; apply (exec_inversion H); simpl; clear H
end.

(* Specifications: *)
(** ** The programming language is deterministic  This property is probably not necessary to prove the correctness of my variant, but it simplifies the proof a lot.  This lemma is a trivial induction over the first [exec] derivation, provided the ad-hoc inversion tactic on the second [exec] derivation. *)
Lemma exec_deterministic: forall ei p ef,
(exec ei p ef) -> forall ef', (exec ei p ef') -> ef=ef'.