(** Bitwise operations: and, or, xor, not *)

Definition bitwise (x: nval) := x.Remark bitwise_idem: forall nv, bitwise (bitwise nv) = bitwise nv.

Lemma and_sound: forall v1 w1 v2 w2 x, vagree v1 w1 (bitwise x) -> vagree v2 w2 (bitwise x) -> vagree (Val.and v1 v2) (Val.and w1 w2) x.