Definition ofnat (n : nat) : t := (S^n) 0.Notation "[ n ]" := (ofnat n) (at level 7) : ofnat.

(* Specifications: *)
Lemma ofnat_zero : [O] == 0.
Lemma ofnat_succ : forall n, [Datatypes.S n] == succ [n].
Lemma ofnat_pred : forall n, n<>O -> [Peano.pred n] == P [n].
Theorem ofnat_S_gt_0 : forall n : nat, 0 < [Datatypes.S n].
Theorem ofnat_S_neq_0 : forall n : nat, 0 ~= [Datatypes.S n].
Lemma ofnat_injective : forall n m, [n]==[m] -> n = m.
Lemma ofnat_eq : forall n m, [n]==[m] <-> n = m.
Lemma ofnat_lt : forall n m : nat, [n]<[m] <-> (n<m)%nat.
Lemma ofnat_le : forall n m : nat, [n]<=[m] <-> (n<=m)%nat.
Lemma ofnat_add_l : forall n m, [n]+m == (S^n) m.
Lemma ofnat_add : forall n m, [n+m] == [n]+[m].
Lemma ofnat_mul : forall n m, [n*m] == [n]*[m].
Lemma ofnat_sub_r : forall n m, n-[m] == (P^m) n.
Lemma ofnat_sub : forall n m, m<=n -> [n-m] == [n]-[m].