Ltac TransfInstr :=
match goal with
| H1: (PTree.get ?pc (fn_code ?f) = Some ?instr),
H2: (analyze ?rm ?f)#?pc = VA.State ?ae ?am |- _ =>
generalize (transf_instr_at rm _ _ _ H1); unfold transf_instr; rewrite H2
end.
(** The proof of simulation proceeds by case analysis on the transition taken in the source code. *)

Lemma transf_final_states:
forall n st1 st2 r,
match_states n st1 st2 -> final_state st1 r -> final_state st2 r.