+ 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)

Qed. Lemma uwordToZ_ZToWord_mod: forall (sz : nat) (z : Z),