Hint Resolve agree_reg agree_reglist: stacking.
(** Preservation under assignments of machine registers. *)

(* Specifications: *)
Lemma agree_regs_set_reg:
forall j ls rs r v v',
agree_regs j ls rs ->
Val.inject j v v' ->
agree_regs j (Locmap.set (R r) v ls) (Regmap.set r v' rs).
Lemma agree_regs_set_pair:
forall j p v v' ls rs,
agree_regs j ls rs ->
Val.inject j v v' ->
agree_regs j (Locmap.setpair p v ls) (set_pair p v' rs).
Lemma agree_regs_set_res:
forall j res v v' ls rs,
agree_regs j ls rs ->
Val.inject j v v' ->
agree_regs j (Locmap.setres res v ls) (set_res res v' rs).
Lemma agree_regs_exten:
forall j ls rs ls' rs',
agree_regs j ls rs ->
(forall r, ls' (R r) = Vundef \/ ls' (R r) = ls (R r) /\ rs' r = rs r) ->
agree_regs j ls' rs'.
Lemma agree_regs_undef_regs:
forall j rl ls rs,
agree_regs j ls rs ->
agree_regs j (LTL.undef_regs rl ls) (Mach.undef_regs rl rs).
Lemma agree_regs_undef_caller_save_regs:
forall j ls rs,
agree_regs j ls rs ->
agree_regs j (LTL.undef_caller_save_regs ls) (Mach.undef_caller_save_regs rs).