Local Lemma wmultZ_helper: forall a b k1 k2 p,
((a - k1 * p) * (b - k2 * p) = a * b - (k1 * b + k2 * a - k1 * k2 * p) * p)%Z.

Lemma wordToZ_wplus_bound':
forall sz (w1 w2: word sz),
sz <> 0 ->
(- Z.of_nat (pow2 (pred sz)) <= wordToZ w1 + wordToZ w2 < Z.of_nat (pow2 (pred sz)))%Z ->
(wordToZ w1 + wordToZ w2 = wordToZ (w1 ^+ w2))%Z.