End INLINING_BODY_SPEC.
End INLINING_SPEC.
(** ** Relational specification of the translation of a function *)
Inductive tr_function: program -> function -> function -> Prop :=
| tr_function_intro: forall p fenv f f' ctx,
fenv_compat p fenv ->
tr_funbody fenv f'.(fn_stacksize) ctx f f'.(fn_code) ->
ctx.(dstk) = 0 ->
ctx.(retinfo) = None ->
f'.(fn_sig) = f.(fn_sig) ->
f'.(fn_params) = sregs ctx f.(fn_params) ->
f'.(fn_entrypoint) = spc ctx f.(fn_entrypoint) ->
0 <= fn_stacksize f' < Ptrofs.max_unsigned ->
tr_function p f f'.

(* Specifications: *)
Lemma tr_function_linkorder:
forall cunit prog f f',
linkorder cunit prog ->
tr_function cunit f f' ->
tr_function prog f f'.
Lemma transf_function_spec:
forall cunit f f',
transf_function (funenv_program cunit) f = OK f' ->
tr_function cunit f f'.