+ pre_word_omega.
      rewrite wordToNat_natToWord_idempotent'; auto; try omega.
Qed.


Fixpoint countLeadingZerosWord_nat ni: word ni -> nat :=
  match ni return word ni -> nat with
  | 0 => fun _ => 0
  | S m => fun e =>
             if (weq (split2 m 1 (nat_cast (fun n => word n) (eq_sym (Nat.add_1_r m)) e)) WO~0)

(* Specifications: *)
Qed.
Qed.
Qed.
Qed. Lemma sext_natToWord_nat_cast: forall sz2 sz1 sz n (e: sz1 + sz2
Qed. Lemma sext_neg_natToWord_nat_cast: forall sz2 sz1 sz n (e: sz1 + sz2 = sz),
Qed.
Qed.
Qed. Lemma uwordToZ_ZToWord_0: forall
Qed. Lemma uwordToZ_ZToWord: forall (
Qed. Lemma NToWord_Z_to_N: forall sz n,
Qed. Lemma uwordToZ_ZToWord_k: forall (sz : nat) (n : Z),
Qed.
Qed.
Qed. Lemma uwordToZ_ZToWord_mod: forall (sz : nat) (z : Z),
Qed.
Qed.
Qed.
Qed.
Qed. Lemma Nminus_mod_idemp_r: forall a b n : N, (n <> 0)%N ->
Qed. Lemma drop_sub_N: forall sz (n k : N),
split; eapply wordToNat_zero; eauto. Qed.
nia. Qed.
Omega.omega.
destruct x; auto; tauto. Qed.