YES Problem: double(0()) -> 0() double(s(x)) -> s(s(double(x))) +(x,0()) -> x +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Proof: Matrix Interpretation Processor: dim=1 interpretation: [+](x0, x1) = x0 + 3x1, [s](x0) = x0, [double](x0) = 4x0, [0] = 6 orientation: double(0()) = 24 >= 6 = 0() double(s(x)) = 4x >= 4x = s(s(double(x))) +(x,0()) = x + 18 >= x = x +(x,s(y)) = x + 3y >= x + 3y = s(+(x,y)) +(s(x),y) = x + 3y >= x + 3y = s(+(x,y)) double(x) = 4x >= 4x = +(x,x) problem: double(s(x)) -> s(s(double(x))) +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) double(x) -> +(x,x) Matrix Interpretation Processor: dim=1 interpretation: [+](x0, x1) = 4x0 + 3x1 + 4, [s](x0) = x0, [double](x0) = 7x0 + 5 orientation: double(s(x)) = 7x + 5 >= 7x + 5 = s(s(double(x))) +(x,s(y)) = 4x + 3y + 4 >= 4x + 3y + 4 = s(+(x,y)) +(s(x),y) = 4x + 3y + 4 >= 4x + 3y + 4 = s(+(x,y)) double(x) = 7x + 5 >= 7x + 4 = +(x,x) problem: double(s(x)) -> s(s(double(x))) +(x,s(y)) -> s(+(x,y)) +(s(x),y) -> s(+(x,y)) Matrix Interpretation Processor: dim=1 interpretation: [+](x0, x1) = 6x0 + x1 + 1, [s](x0) = x0 + 1, [double](x0) = 2x0 orientation: double(s(x)) = 2x + 2 >= 2x + 2 = s(s(double(x))) +(x,s(y)) = 6x + y + 2 >= 6x + y + 2 = s(+(x,y)) +(s(x),y) = 6x + y + 7 >= 6x + y + 2 = s(+(x,y)) problem: double(s(x)) -> s(s(double(x))) +(x,s(y)) -> s(+(x,y)) Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [1 1 1] [0] [+](x0, x1) = [0 0 0]x0 + [0 0 1]x1 + [0] [0 0 0] [0 1 0] [1], [1 0 0] [0] [s](x0) = [0 0 1]x0 + [0] [0 1 0] [1], [1 0 0] [double](x0) = [0 1 1]x0 [0 1 1] orientation: [1 0 0] [0] [1 0 0] [0] double(s(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = s(s(double(x))) [0 1 1] [1] [0 1 1] [1] [1 1 0] [1 1 1] [1] [1 1 0] [1 1 1] [0] +(x,s(y)) = [0 0 0]x + [0 1 0]y + [1] >= [0 0 0]x + [0 1 0]y + [1] = s(+(x,y)) [0 0 0] [0 0 1] [1] [0 0 0] [0 0 1] [1] problem: double(s(x)) -> s(s(double(x))) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [0] [s](x0) = [0 0 1]x0 + [0] [0 1 0] [1], [1 1 1] [double](x0) = [0 1 1]x0 [0 1 1] orientation: [1 1 1] [1] [1 1 1] [0] double(s(x)) = [0 1 1]x + [1] >= [0 1 1]x + [1] = s(s(double(x))) [0 1 1] [1] [0 1 1] [1] problem: Qed