2ndspos(s(N), cons(X)) → rcons(posrecip(Y), 2ndsneg(N, Z))
2ndsneg(s(N), cons(X)) → rcons(negrecip(Y), 2ndspos(N, Z))
from(X) → cons(X)
2ndspos(0, Z) → rnil
2ndsneg(0, Z) → rnil
pi(X) → 2ndspos(X, from(0))
plus(0, Y) → Y
plus(s(X), Y) → s(plus(X, Y))
times(0, Y) → 0
times(s(X), Y) → plus(Y, times(X, Y))
square(X) → times(X, X)