End STRAIGHTLINE.
(** * Properties of the Mach call stack *)
Section MATCH_STACK.
Variable ge: Mach.genv.
Inductive match_stack: list Mach.stackframe -> Prop :=
| match_stack_nil:
match_stack nil
| match_stack_cons: forall fb sp ra c s f tf tc,
Genv.find_funct_ptr ge fb = Some (Internal f) ->
transl_code_at_pc ge ra fb f c false tf tc ->
sp <> Vundef ->
match_stack s ->
match_stack (Stackframe fb sp ra c :: s).

(* Specifications: *)
Lemma parent_sp_def: forall s, match_stack s -> parent_sp s <> Vundef.
Lemma parent_ra_def: forall s, match_stack s -> parent_ra s <> Vundef.
Lemma lessdef_parent_sp:
forall s v,
match_stack s -> Val.lessdef (parent_sp s) v -> v = parent_sp s.
Lemma lessdef_parent_ra:
forall s v,
match_stack s -> Val.lessdef (parent_ra s) v -> v = parent_ra s.