Problem:
 2ndspos(s(N),cons(X)) -> 2ndspos(s(N),cons2(Z))
 2ndspos(s(N),cons2(cons(Y))) -> rcons(posrecip(Y),2ndsneg(N,Z))
 2ndsneg(s(N),cons(X)) -> 2ndsneg(s(N),cons2(Z))
 2ndsneg(s(N),cons2(cons(Y))) -> 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)

Proof:
 Fresh Variable Processor:
  loop length: 1
  terms:
   2ndspos(s(N),cons(X))
  context: 2ndspos(s(N),cons2([]))
  substitution:
   Z -> 2ndspos(s(N),cons(X))
  Qed