Remark add_inject:
forall v1 v1' v2 v2',
inject f v1 v1' ->
inject f v2 v2' ->
inject f (Val.add v1 v2) (Val.add v1' v2').
Remark sub_inject:
forall v1 v1' v2 v2',
inject f v1 v1' ->
inject f v2 v2' ->
inject f (Val.sub v1 v2) (Val.sub v1' v2').
Remark addl_inject:
forall v1 v1' v2 v2',
inject f v1 v1' ->
inject f v2 v2' ->
inject f (Val.addl v1 v2) (Val.addl v1' v2').
Remark subl_inject:
forall v1 v1' v2 v2',
inject f v1 v1' ->
inject f v2 v2' ->
inject f (Val.subl v1 v2) (Val.subl v1' v2').

(* Specifications: *)
Lemma offset_ptr_inject:
forall v v' ofs, inject f v v' -> inject f (offset_ptr v ofs) (offset_ptr v' ofs).
Lemma cmp_bool_inject:
forall c v1 v2 v1' v2' b,
inject f v1 v1' ->
inject f v2 v2' ->
Val.cmp_bool c v1 v2 = Some b ->
Val.cmp_bool c v1' v2' = Some b.
Lemma offset_ptr_inject:
forall v v' ofs, inject f v v' -> inject f (offset_ptr v ofs) (offset_ptr v' ofs).
Lemma cmp_bool_inject:
forall c v1 v2 v1' v2' b,
inject f v1 v1' ->
inject f v2 v2' ->
Val.cmp_bool c v1 v2 = Some b ->
Val.cmp_bool c v1' v2' = Some b.