Definition modNat (n : nat)(p : posnat) : nat :=
  N.to_nat ((N.of_nat n) mod (N.of_nat p)).

(* Specifications: *)
Lemma Npos_nz : forall p, Npos p <> N0.
Lemma modNat_plus : forall n1 n2 p, (modNat (n1 + n2) p = modNat ((modNat n1 p) + n2) p)%nat.
Lemma modNat_arg_eq : forall (p : posnat), modNat p p = O.
Lemma of_nat_ge_0 : forall n, 0 <= N.of_nat n.
Lemma of_posnat_gt_0 : forall (p : posnat), 0 < N.of_nat p.
Lemma modNat_lt : forall x p, (modNat x p < p)%nat.
Lemma modNat_eq : forall (n : posnat) x, (x < n -> modNat x n = x)%nat.