YES Problem: f(a,empty()) -> g(a,empty()) f(a,cons(x,k)) -> f(cons(x,a),k) g(empty(),d) -> d g(cons(x,k),d) -> g(k,cons(x,d)) Proof: Matrix Interpretation Processor: dim=3 interpretation: [1 0 1] [0] [cons](x0, x1) = [0 0 1]x0 + x1 + [0] [0 0 0] [1], [1 0 0] [1 0 0] [g](x0, x1) = [0 1 1]x0 + [0 1 0]x1 [0 1 1] [0 1 1] , [1 0 0] [1 0 1] [f](x0, x1) = [0 1 1]x0 + [0 1 1]x1 [0 1 1] [1 0 1] , [0] [empty] = [0] [1] orientation: [1 0 0] [1] [1 0 0] [0] f(a,empty()) = [0 1 1]a + [1] >= [0 1 1]a + [0] = g(a,empty()) [0 1 1] [1] [0 1 1] [1] [1 0 0] [1 0 1] [1 0 1] [1] [1 0 0] [1 0 1] [1 0 1] [0] f(a,cons(x,k)) = [0 1 1]a + [0 1 1]k + [0 0 1]x + [1] >= [0 1 1]a + [0 1 1]k + [0 0 1]x + [1] = f(cons(x,a),k) [0 1 1] [1 0 1] [1 0 1] [1] [0 1 1] [1 0 1] [0 0 1] [1] [1 0 0] [0] g(empty(),d) = [0 1 0]d + [1] >= d = d [0 1 1] [1] [1 0 0] [1 0 0] [1 0 1] [0] [1 0 0] [1 0 0] [1 0 1] [0] g(cons(x,k),d) = [0 1 0]d + [0 1 1]k + [0 0 1]x + [1] >= [0 1 0]d + [0 1 1]k + [0 0 1]x + [0] = g(k,cons(x,d)) [0 1 1] [0 1 1] [0 0 1] [1] [0 1 1] [0 1 1] [0 0 1] [1] problem: g(empty(),d) -> d g(cons(x,k),d) -> g(k,cons(x,d)) Matrix Interpretation Processor: dim=3 interpretation: [1 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + x1 + [0] [0 0 0] [1], [1 0 1] [1 0 0] [g](x0, x1) = [0 0 1]x0 + [0 1 1]x1 [0 0 1] [0 0 1] , [1] [empty] = [0] [0] orientation: [1 0 0] [1] g(empty(),d) = [0 1 1]d + [0] >= d = d [0 0 1] [0] [1 0 0] [1 0 1] [1 0 0] [1] [1 0 0] [1 0 1] [1 0 0] [0] g(cons(x,k),d) = [0 1 1]d + [0 0 1]k + [0 0 0]x + [1] >= [0 1 1]d + [0 0 1]k + [0 0 0]x + [1] = g(k,cons(x,d)) [0 0 1] [0 0 1] [0 0 0] [1] [0 0 1] [0 0 1] [0 0 0] [1] problem: Qed