(** [transl_code_at_pc pc fb f c ep tf tc] holds if the code pointer [pc] points within the Asm code generated by translating Mach function [f], and [tc] is the tail of the generated code at the position corresponding to the code pointer [pc]. *)
Inductive transl_code_at_pc (ge: Mach.genv):
val -> block -> Mach.function -> Mach.code -> bool -> Asm.function -> Asm.code -> Prop :=
transl_code_at_pc_intro:
forall b ofs f c ep tf tc,
Genv.find_funct_ptr ge b = Some(Internal f) ->
transf_function f = Errors.OK tf ->
transl_code f c ep = OK tc ->
code_tail (Ptrofs.unsigned ofs) (fn_code tf) tc ->
transl_code_at_pc ge (Vptr b ofs) b f c ep tf tc.
(** Equivalence between [transl_code] and [transl_code']. *)
Local Open Scope error_monad_scope.

Lemma transl_code_rec_transl_code:
forall f il ep k,
transl_code_rec f il ep k = (do c <- transl_code f il ep; k c).