Definition Z_to_group_nat_fun : ZZ -> G.

(* Specifications: *)
Lemma nat_to_group_com : forall n : nat, Equal (sgroup_law G (nat_to_group n) r) (sgroup_law G r (nat_to_group n)).
Lemma nat_to_group_add : forall n m : nat, Equal (nat_to_group (n + m)) (sgroup_law G (nat_to_group n) (nat_to_group m)).
Lemma ax1 : ~ (0 > 0)%Z.
Lemma ax2 : ~ (0 < 0)%Z.
Lemma Zl1 : Equal (Z_to_group_nat_fun 0%Z) (monoid_unit G).
Lemma ax3 : forall p : positive, (Zpos p > 0)%Z.
Lemma Zl2 : forall p : positive, Equal (Z_to_group_nat_fun (Zpos p)) (nat_to_group (nat_of_P (pos_abs (ax3 p)))).
Lemma ax4 : forall p : positive, ~ (Zneg p > 0)%Z.
Lemma Zl3 : forall p : positive, Equal (Z_to_group_nat_fun (Zneg p)) (group_inverse G (nat_to_group (nat_of_P (pos_abs (ax3 p))))).
Lemma ax5 : forall p q : positive, (Zpos p > Zpos q)%Z -> (Zpos p + Zneg q)%Z = Zpos (p - q).
Lemma ax6 : forall p q : positive, (Zpos p < Zpos q)%Z -> (Zpos p + Zneg q)%Z = Zneg (q - p).
Lemma ax7 : forall p : positive, (Zpos p + Zneg p)%Z = 0%Z.
Lemma nat_to_group_com2 : forall n m : nat, Equal (sgroup_law G (nat_to_group n) (nat_to_group m)) (sgroup_law G (nat_to_group m) (nat_to_group n)).
Lemma nat_to_group_minus : forall n m : nat, n > m -> Equal (nat_to_group (n - m)) (sgroup_law G (nat_to_group n) (group_inverse G (nat_to_group m))).
Lemma ax8 : forall p q : positive, Pcompare p q Datatypes.Eq = Datatypes.Lt -> Pcompare q p Datatypes.Eq = Datatypes.Gt.
Lemma Zl4 : forall p p0 : positive, Equal (Z_to_group_nat_fun (Zpos p + Zneg p0)%Z) (sgroup_law G (nat_to_group (nat_of_P p)) (group_inverse G (nat_to_group (nat_of_P p0)))).
Lemma nat_to_group_com3 : forall n : nat, Equal (sgroup_law G (nat_to_group n) (group_inverse G r)) (sgroup_law G (group_inverse G r) (nat_to_group n)).
Lemma Zl5 : Equal (Z_to_group_nat_fun (ring_unit ZZ)) r.
Lemma nat_to_group_com4 : forall n m : nat, Equal (sgroup_law G (nat_to_group m) (group_inverse G (nat_to_group n))) (sgroup_law G (group_inverse G (nat_to_group n)) (nat_to_group m)).