YES Problem: rev(ls) -> r1(ls,empty()) r1(empty(),a) -> a r1(cons(x,k),a) -> r1(k,cons(x,a)) Proof: Matrix Interpretation Processor: dim=1 interpretation: [empty] = 2, [cons](x0, x1) = 4x0 + x1, [rev](x0) = 4x0 + 7, [r1](x0, x1) = 2x0 + 2x1 + 3 orientation: rev(ls) = 4ls + 7 >= 2ls + 7 = r1(ls,empty()) r1(empty(),a) = 2a + 7 >= a = a r1(cons(x,k),a) = 2a + 2k + 8x + 3 >= 2a + 2k + 8x + 3 = r1(k,cons(x,a)) problem: rev(ls) -> r1(ls,empty()) r1(cons(x,k),a) -> r1(k,cons(x,a)) Matrix Interpretation Processor: dim=1 interpretation: [empty] = 0, [cons](x0, x1) = 4x0 + x1 + 2, [rev](x0) = 6x0 + 4, [r1](x0, x1) = 4x0 + 2x1 + 4 orientation: rev(ls) = 6ls + 4 >= 4ls + 4 = r1(ls,empty()) r1(cons(x,k),a) = 2a + 4k + 16x + 12 >= 2a + 4k + 8x + 8 = r1(k,cons(x,a)) problem: rev(ls) -> r1(ls,empty()) Matrix Interpretation Processor: dim=3 interpretation: [0] [empty] = [1] [0], [1 0 0] [1] [rev](x0) = [0 0 0]x0 + [0] [0 0 0] [1], [1 0 0] [1 0 0] [r1](x0, x1) = [0 0 0]x0 + [0 0 0]x1 [0 0 0] [0 1 0] orientation: [1 0 0] [1] [1 0 0] [0] rev(ls) = [0 0 0]ls + [0] >= [0 0 0]ls + [0] = r1(ls,empty()) [0 0 0] [1] [0 0 0] [1] problem: Qed