Definition int_eqMixin := CanEqMixin natsum_of_intK.Definition int_countMixin := CanCountMixin natsum_of_intK.Definition int_choiceMixin := CountChoiceMixin int_countMixin.Canonical int_eqType := Eval hnf in EqType int int_eqMixin.Canonical int_choiceType := Eval hnf in ChoiceType int int_choiceMixin.Canonical int_countType := Eval hnf in CountType int int_countMixin.Definition int_rec := int_rect.Definition int_ind := int_rect.

(* Specifications: *)
Lemma intP x : int_spec x x.
Lemma addzC : commutative addz.
Lemma add0z : left_id 0 addz.
Lemma oppzK : involutive oppz.
Lemma add1Pz (n : int) : 1 + (n - 1) = n.
Lemma subSz1 (n : int) : 1 + n - 1 = n.
Lemma addSz (m n : int) : (1 + m) + n = 1 + (m + n).
Lemma addPz (m n : int) : (m - 1) + n = (m + n) - 1.
Lemma addzA : associative addz.
Lemma addNz : left_inverse (0:int) oppz addz.