End BOUNDS.
(** Helper to determine the size of the frame area that holds the contents of saved registers. *)
Fixpoint size_callee_save_area_rec (l: list mreg) (ofs: Z) : Z :=
match l with
| nil => ofs
| r :: l =>
let ty := mreg_type r in
let sz := AST.typesize ty in
size_callee_save_area_rec l (align ofs sz + sz)
end.
Definition size_callee_save_area (b: bounds) (ofs: Z) : Z :=
size_callee_save_area_rec (used_callee_save b) ofs.

(* Specifications: *)
Lemma size_callee_save_area_rec_incr:
forall l ofs, ofs <= size_callee_save_area_rec l ofs.
Lemma size_callee_save_area_incr:
forall b ofs, ofs <= size_callee_save_area b ofs.