Desde el punto de vista de la implementación, su definición es ineficiente, porque en cada paso hay que decidir si se aplica el $a-a = 0$ que requiere que se compruebe si los dos argumentos de $-$ son iguales, y esto llevará mucho tiempo si los argumentos son grandes.
Una implementación más eficiente es:
$$\begin{array}{rll} a&-0 &= a \\ 0&-S(b) &= 0 \qquad\text{(or leave this undefined)}\\ S(a)&-S(b) & = a-b \end{array}$$
Aquí puedes decidir en tiempo constante cuál de los tres casos se aplica: ¿el segundo argumento es cero? Si es así aplica la primera regla, si no, ¿es el primer argumento cero? Si lo es, aplica la segunda regla; si no, aplica la tercera.
Deje el caso intermedio sin definir si desea una sustracción ordinaria, pero defínalo como 0 si desea la llamada "sustracción truncada" en la que $a-b = 0$ cuando $a<b$ .
Para la división, es mejor dividirla en operaciones de números enteros. Para cada $a$ y $b$ hay un cociente entero $q$ y un resto entero $r$ tal que $$a = qb+r$$ y $0\le r < b$ ; si $r = 0$ entonces $b$ divide $a$ exactamente y $q = a\div b$ . Calcular el cociente y el resto de números enteros en aritmética Peano no es difícil. El cociente es:
$$\begin{array}{rll} 0&\div S(b) &= 0 \\ S(a)&\div S(b) &= S((a b)\div S(b)) \end{array}$$
Donde se denota la sustracción truncada. Entonces el resto es simplemente $a - b\cdot(a\div b)$ .