End VAL_INJ_OPS.
End Val.
Notation meminj := Val.meminj.
(** Monotone evolution of a memory injection. *)
Definition inject_incr (f1 f2: meminj) : Prop :=
forall b b' delta, f1 b = Some(b', delta) -> f2 b = Some(b', delta).

(* Specifications: *)
Lemma inject_incr_refl :
forall f , inject_incr f f .
Lemma val_inject_incr:
forall f1 f2 v v',
inject_incr f1 f2 ->
Val.inject f1 v v' ->
Val.inject f2 v v'.
Lemma val_inject_list_incr:
forall f1 f2 vl vl' ,
inject_incr f1 f2 -> Val.inject_list f1 vl vl' ->
Val.inject_list f2 vl vl'.
Lemma inject_incr_refl :
forall f , inject_incr f f .
Lemma val_inject_incr:
forall f1 f2 v v',
inject_incr f1 f2 ->
Val.inject f1 v v' ->
Val.inject f2 v v'.
Lemma val_inject_list_incr:
forall f1 f2 vl vl' ,
inject_incr f1 f2 -> Val.inject_list f1 vl vl' ->
Val.inject_list f2 vl vl'.