Corollary agree_set_mreg_parallel:
  forall ms sp rs r v v',
  agree ms sp rs ->
  Val.lessdef v v' ->
  agree (Regmap.set r v ms) sp (Pregmap.set (preg_of r) v' rs).

(* Specifications: *)
Lemma agree_nextinstr: forall ms sp rs, agree ms sp rs -> agree ms sp (nextinstr rs).
Lemma agree_set_pair: forall sp p v v' ms rs, agree ms sp rs -> Val.lessdef v v' -> agree (Mach.set_pair p v ms) sp (set_pair (map_rpair preg_of p) v' rs).
Lemma agree_undef_nondata_regs: forall ms sp rl rs, agree ms sp rs -> (forall r, In r rl -> data_preg r = false) -> agree ms sp (undef_regs rl rs).
Lemma agree_undef_caller_save_regs: forall ms sp rs, agree ms sp rs -> agree (Mach.undef_caller_save_regs ms) sp (Asm.undef_caller_save_regs rs).
Lemma extcall_arg_match: forall ms sp rs m m' l v, agree ms sp rs -> Mem.extends m m' -> Mach.extcall_arg ms m sp l v -> exists v', Asm.extcall_arg rs m' l v' /\ Val.lessdef v v'.
Lemma extcall_arg_pair_match: forall ms sp rs m m' p v, agree ms sp rs -> Mem.extends m m' -> Mach.extcall_arg_pair ms m sp p v -> exists v', Asm.extcall_arg_pair rs m' p v' /\ Val.lessdef v v'.
Lemma extcall_args_match: forall ms sp rs m m', agree ms sp rs -> Mem.extends m m' -> forall ll vl, list_forall2 (Mach.extcall_arg_pair ms m sp) ll vl -> exists vl', list_forall2 (Asm.extcall_arg_pair rs m') ll vl' /\ Val.lessdef_list vl vl'.
Lemma extcall_arguments_match: forall ms m m' sp rs sg args, agree ms sp rs -> Mem.extends m m' -> Mach.extcall_arguments ms m sp sg args -> exists args', Asm.extcall_arguments rs m' sg args' /\ Val.lessdef_list args args'.