(** Modular arithmetic operations: add, mul, opposite. (But not subtraction because of the pointer - pointer case. *)
Definition modarith (x: nval) :=
match x with
| Nothing => Nothing
| I m => I (complete_mask m)
| All => All
end.

(* Specifications: *)
Lemma add_sound:
forall v1 w1 v2 w2 x,
vagree v1 w1 (modarith x) -> vagree v2 w2 (modarith x) ->
vagree (Val.add v1 v2) (Val.add w1 w2) x.