Ltac wlt_ind :=
  match goal with
  | [ |- forall (n: word ?len), ?P ] =>
    refine (well_founded_ind (@wlt_wf len) (fun n => P) _)
  end.

Lemma word_ring_morph_Z: forall (sz: nat), ring_morph (ZToWord sz 0) (ZToWord sz 1) (@wplus sz) (@wmult sz) (@wminus sz) (@wneg sz) eq 0%Z 1%Z Z.add Z.mul Z.sub Z.opp Z.eqb (ZToWord sz).