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 cmpu_bool_inject: forall c v1 v2 v1' v2' b, inject f v1 v1' -> inject f v2 v2' -> Val.cmpu_bool valid_ptr1 c v1 v2 = Some b -> Val.cmpu_bool valid_ptr2 c v1' v2' = Some b.
Lemma cmplu_bool_inject: forall c v1 v2 v1' v2' b, inject f v1 v1' -> inject f v2 v2' -> Val.cmplu_bool valid_ptr1 c v1 v2 = Some b -> Val.cmplu_bool valid_ptr2 c v1' v2' = Some b.
Lemma longofwords_inject: forall v1 v2 v1' v2', inject f v1 v1' -> inject f v2 v2' -> inject f (Val.longofwords v1 v2) (Val.longofwords v1' v2').
Lemma loword_inject: forall v v', inject f v v' -> inject f (Val.loword v) (Val.loword v').
Lemma hiword_inject: forall v v', inject f v v' -> inject f (Val.hiword v) (Val.hiword v').
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 cmpu_bool_inject: forall c v1 v2 v1' v2' b, inject f v1 v1' -> inject f v2 v2' -> Val.cmpu_bool valid_ptr1 c v1 v2 = Some b -> Val.cmpu_bool valid_ptr2 c v1' v2' = Some b.
Lemma cmplu_bool_inject: forall c v1 v2 v1' v2' b, inject f v1 v1' -> inject f v2 v2' -> Val.cmplu_bool valid_ptr1 c v1 v2 = Some b -> Val.cmplu_bool valid_ptr2 c v1' v2' = Some b.
Lemma longofwords_inject: forall v1 v2 v1' v2', inject f v1 v1' -> inject f v2 v2' -> inject f (Val.longofwords v1 v2) (Val.longofwords v1' v2').
Lemma loword_inject: forall v v', inject f v v' -> inject f (Val.loword v) (Val.loword v').
Lemma hiword_inject: forall v v', inject f v v' -> inject f (Val.hiword v) (Val.hiword v').