Module N2Z.
(** [Z.of_N] is a bijection between [N] and non-negative [Z], with [Z.to_N] (or [Z.abs_N]) as reciprocal. See [Z2N.id] below for the dual equation. *)
(** [Z.of_N] is hence injective *)
(** [Z.of_N] produce non-negative integers *)
(** [Z.of_N], basic equations *)
(** [Z.of_N] and usual operations. *)
(** [Z.to_N] is hence injective for non-negative integers. *)
(** [Z.to_N], basic equations *)
(** [Z.to_N] and operations *)
(** [Z.abs_N], basic equations *)
(** [Z.abs_N] and usual operations, with non-negative integers *)

Lemma inj_pow n m : 0<=m -> Z.abs_N (n^m) = ((Z.abs_N n)^(Z.abs_N m))%N.