YES Problem: intlist(nil()) -> nil() int(s(x),0()) -> nil() int(x,x) -> cons(x,nil()) intlist(cons(x,y)) -> cons(s(x),intlist(y)) int(s(x),s(y)) -> intlist(int(x,y)) int(0(),s(y)) -> cons(0(),int(s(0()),s(y))) intlist(cons(x,nil())) -> cons(s(x),nil()) Proof: Matrix Interpretation Processor: dim=1 interpretation: [cons](x0, x1) = x0 + x1, [int](x0, x1) = 4x0 + 4x1 + 2, [0] = 0, [s](x0) = x0, [intlist](x0) = x0, [nil] = 0 orientation: intlist(nil()) = 0 >= 0 = nil() int(s(x),0()) = 4x + 2 >= 0 = nil() int(x,x) = 8x + 2 >= x = cons(x,nil()) intlist(cons(x,y)) = x + y >= x + y = cons(s(x),intlist(y)) int(s(x),s(y)) = 4x + 4y + 2 >= 4x + 4y + 2 = intlist(int(x,y)) int(0(),s(y)) = 4y + 2 >= 4y + 2 = cons(0(),int(s(0()),s(y))) intlist(cons(x,nil())) = x >= x = cons(s(x),nil()) problem: intlist(nil()) -> nil() intlist(cons(x,y)) -> cons(s(x),intlist(y)) int(s(x),s(y)) -> intlist(int(x,y)) int(0(),s(y)) -> cons(0(),int(s(0()),s(y))) intlist(cons(x,nil())) -> cons(s(x),nil()) Matrix Interpretation Processor: dim=3 interpretation: [1 1 1] [1 0 0] [cons](x0, x1) = [0 0 0]x0 + [0 1 1]x1 [0 0 0] [0 0 0] , [1 0 0] [1 0 0] [1] [int](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [0] [0 0 0] [0 0 0] [0], [0] [0] = [0] [0], [1 0 0] [s](x0) = [0 0 0]x0 [0 0 0] , [1 1 0] [intlist](x0) = [0 1 1]x0 [0 0 0] , [0] [nil] = [1] [0] orientation: [1] [0] intlist(nil()) = [1] >= [1] = nil() [0] [0] [1 1 1] [1 1 1] [1 0 0] [1 1 0] intlist(cons(x,y)) = [0 0 0]x + [0 1 1]y >= [0 0 0]x + [0 1 1]y = cons(s(x),intlist(y)) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 0 0] [1 0 0] [1] [1 0 0] [1 0 0] [1] int(s(x),s(y)) = [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]x + [0 0 0]y + [0] = intlist(int(x,y)) [0 0 0] [0 0 0] [0] [0 0 0] [0 0 0] [0] [1 0 0] [1] [1 0 0] [1] int(0(),s(y)) = [0 0 0]y + [0] >= [0 0 0]y + [0] = cons(0(),int(s(0()),s(y))) [0 0 0] [0] [0 0 0] [0] [1 1 1] [1] [1 0 0] [0] intlist(cons(x,nil())) = [0 0 0]x + [1] >= [0 0 0]x + [1] = cons(s(x),nil()) [0 0 0] [0] [0 0 0] [0] problem: intlist(cons(x,y)) -> cons(s(x),intlist(y)) int(s(x),s(y)) -> intlist(int(x,y)) int(0(),s(y)) -> cons(0(),int(s(0()),s(y))) Matrix Interpretation Processor: dim=3 interpretation: [1 1 0] [1 1 1] [cons](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [1 0 0] [1 0 1] [int](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 0 0] , [0] [0] = [0] [0], [1 1 0] [0] [s](x0) = [0 0 0]x0 + [0] [0 0 1] [1], [1 0 0] [intlist](x0) = [0 0 0]x0 [0 0 0] orientation: [1 1 0] [1 1 1] [1 1 0] [1 0 0] intlist(cons(x,y)) = [0 0 0]x + [0 0 0]y >= [0 0 0]x + [0 0 0]y = cons(s(x),intlist(y)) [0 0 0] [0 0 0] [0 0 0] [0 0 0] [1 1 0] [1 1 1] [1] [1 0 0] [1 0 1] int(s(x),s(y)) = [0 0 0]x + [0 0 0]y + [0] >= [0 0 0]x + [0 0 0]y = intlist(int(x,y)) [0 0 0] [0 0 0] [0] [0 0 0] [0 0 0] [1 1 1] [1] [1 1 1] [1] int(0(),s(y)) = [0 0 0]y + [0] >= [0 0 0]y + [0] = cons(0(),int(s(0()),s(y))) [0 0 0] [0] [0 0 0] [0] problem: intlist(cons(x,y)) -> cons(s(x),intlist(y)) int(0(),s(y)) -> cons(0(),int(s(0()),s(y))) Matrix Interpretation Processor: dim=3 interpretation: [1 1 1] [1 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + [0 1 1]x1 + [0] [0 0 0] [0 0 0] [1], [1 1 0] [1 0 0] [int](x0, x1) = [0 1 0]x0 + [0 0 0]x1 [0 1 1] [0 0 0] , [0] [0] = [1] [0], [1 0 0] [s](x0) = [0 0 0]x0 [0 1 1] , [1 1 1] [0] [intlist](x0) = [0 1 1]x0 + [0] [0 0 0] [1] orientation: [1 1 1] [1 1 1] [1] [1 1 1] [1 1 1] [0] intlist(cons(x,y)) = [0 0 0]x + [0 1 1]y + [1] >= [0 0 0]x + [0 1 1]y + [1] = cons(s(x),intlist(y)) [0 0 0] [0 0 0] [1] [0 0 0] [0 0 0] [1] [1 0 0] [1] [1 0 0] [1] int(0(),s(y)) = [0 0 0]y + [1] >= [0 0 0]y + [1] = cons(0(),int(s(0()),s(y))) [0 0 0] [1] [0 0 0] [1] problem: int(0(),s(y)) -> cons(0(),int(s(0()),s(y))) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [1 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [1] [0 0 0] [0 0 0] [0], [1 0 1] [1 0 0] [int](x0, x1) = [0 0 0]x0 + [0 1 0]x1 [0 0 0] [0 0 0] , [0] [0] = [0] [1], [1 0 0] [0] [s](x0) = [0 0 0]x0 + [1] [0 0 0] [0] orientation: [1 0 0] [1] [1 0 0] [0] int(0(),s(y)) = [0 0 0]y + [1] >= [0 0 0]y + [1] = cons(0(),int(s(0()),s(y))) [0 0 0] [0] [0 0 0] [0] problem: Qed