(************)
(* Opposite *)
(************)

Inductive opposite : word -> word -> Prop :=
    opp : forall (u v : word) (b : bool), opposite (bit b u) (bit (negb b) v).(************)
(* Opposite *)
(************)

Inductive opposite : word -> word -> Prop :=
    opp : forall (u v : word) (b : bool), opposite (bit b u) (bit (negb b) v).

(* Specifications: *)
Lemma not_opp_empty_r : forall u : word, ~ opposite u empty.
Lemma not_opp_empty_l : forall u : word, ~ opposite empty u.
Lemma not_opp_same : forall (u v : word) (b : bool), ~ opposite (bit b u) (bit b v).
Lemma alt_neg_opp : forall (u v : word) (b : bool), odd u -> alt b u -> odd v -> alt (negb b) v -> opposite u v.
Lemma alt_not_opp : forall (u v : word) (b : bool), alt b u -> alt b v -> ~ opposite u v.