YES Problem: terms(N) -> cons(recip(sqr(N))) sqr(0()) -> 0() sqr(s()) -> s() dbl(0()) -> 0() dbl(s()) -> s() add(0(),X) -> X add(s(),Y) -> s() first(0(),X) -> nil() first(s(),cons(Y)) -> cons(Y) Proof: Matrix Interpretation Processor: dim=3 interpretation: [0] [nil] = [0] [0], [1 0 1] [first](x0, x1) = [0 0 1]x0 + x1 [0 0 0] , [1 1 0] [1 1 1] [0] [add](x0, x1) = [0 0 0]x0 + [1 1 1]x1 + [1] [1 1 0] [1 1 1] [0], [1 0 0] [0] [dbl](x0) = [0 0 1]x0 + [0] [0 0 0] [1], [0] [s] = [1] [1], [1] [0] = [0] [0], [1 1 0] [0] [cons](x0) = [0 1 0]x0 + [0] [0 0 1] [1], [1 0 0] [recip](x0) = [0 1 0]x0 [0 0 0] , [1 0 1] [sqr](x0) = [0 1 0]x0 [0 0 1] , [1 1 1] [1] [terms](x0) = [0 1 0]x0 + [0] [0 0 0] [1] orientation: [1 1 1] [1] [1 1 1] [0] terms(N) = [0 1 0]N + [0] >= [0 1 0]N + [0] = cons(recip(sqr(N))) [0 0 0] [1] [0 0 0] [1] [1] [1] sqr(0()) = [0] >= [0] = 0() [0] [0] [1] [0] sqr(s()) = [1] >= [1] = s() [1] [1] [1] [1] dbl(0()) = [0] >= [0] = 0() [1] [0] [0] [0] dbl(s()) = [1] >= [1] = s() [1] [1] [1 1 1] [1] add(0(),X) = [1 1 1]X + [1] >= X = X [1 1 1] [1] [1 1 1] [1] [0] add(s(),Y) = [1 1 1]Y + [1] >= [1] = s() [1 1 1] [1] [1] [1] [0] first(0(),X) = X + [0] >= [0] = nil() [0] [0] [1 1 0] [1] [1 1 0] [0] first(s(),cons(Y)) = [0 1 0]Y + [1] >= [0 1 0]Y + [0] = cons(Y) [0 0 1] [1] [0 0 1] [1] problem: sqr(0()) -> 0() dbl(0()) -> 0() dbl(s()) -> s() Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1] [dbl](x0) = [0 0 0]x0 + [0] [0 0 0] [0], [0] [s] = [0] [0], [0] [0] = [0] [0], [1 0 0] [1] [sqr](x0) = [0 0 0]x0 + [0] [0 0 0] [0] orientation: [1] [0] sqr(0()) = [0] >= [0] = 0() [0] [0] [1] [0] dbl(0()) = [0] >= [0] = 0() [0] [0] [1] [0] dbl(s()) = [0] >= [0] = s() [0] [0] problem: Qed