YES Problem: concat(leaf(),Y) -> Y concat(cons(U,V),Y) -> cons(U,concat(V,Y)) lessleaves(X,leaf()) -> false() lessleaves(leaf(),cons(W,Z)) -> true() lessleaves(cons(U,V),cons(W,Z)) -> lessleaves(concat(U,V),concat(W,Z)) Proof: Matrix Interpretation Processor: dim=1 interpretation: [false] = 0, [concat](x0, x1) = x0 + x1, [lessleaves](x0, x1) = x0 + 4x1, [true] = 4, [leaf] = 0, [cons](x0, x1) = x0 + x1 + 1 orientation: concat(leaf(),Y) = Y >= Y = Y concat(cons(U,V),Y) = U + V + Y + 1 >= U + V + Y + 1 = cons(U,concat(V,Y)) lessleaves(X,leaf()) = X >= 0 = false() lessleaves(leaf(),cons(W,Z)) = 4W + 4Z + 4 >= 4 = true() lessleaves(cons(U,V),cons(W,Z)) = U + V + 4W + 4Z + 5 >= U + V + 4W + 4Z = lessleaves(concat(U,V),concat(W,Z)) problem: concat(leaf(),Y) -> Y concat(cons(U,V),Y) -> cons(U,concat(V,Y)) lessleaves(X,leaf()) -> false() lessleaves(leaf(),cons(W,Z)) -> true() Matrix Interpretation Processor: dim=1 interpretation: [false] = 4, [concat](x0, x1) = x0 + x1 + 2, [lessleaves](x0, x1) = 4x0 + 4x1 + 4, [true] = 4, [leaf] = 0, [cons](x0, x1) = 4x0 + x1 orientation: concat(leaf(),Y) = Y + 2 >= Y = Y concat(cons(U,V),Y) = 4U + V + Y + 2 >= 4U + V + Y + 2 = cons(U,concat(V,Y)) lessleaves(X,leaf()) = 4X + 4 >= 4 = false() lessleaves(leaf(),cons(W,Z)) = 16W + 4Z + 4 >= 4 = true() problem: concat(cons(U,V),Y) -> cons(U,concat(V,Y)) lessleaves(X,leaf()) -> false() lessleaves(leaf(),cons(W,Z)) -> true() Matrix Interpretation Processor: dim=3 interpretation: [0] [false] = [0] [0], [1 1 1] [1 0 0] [concat](x0, x1) = [0 1 1]x0 + [1 0 0]x1 [0 1 1] [1 0 0] , [1 0 0] [1 0 0] [1] [lessleaves](x0, x1) = [0 0 0]x0 + [0 0 0]x1 + [0] [0 0 0] [1 0 0] [0], [0] [true] = [0] [0], [0] [leaf] = [0] [0], [1 0 1] [1 0 0] [0] [cons](x0, x1) = [0 0 0]x0 + [0 0 1]x1 + [0] [0 0 0] [0 1 0] [1] orientation: [1 0 1] [1 1 1] [1 0 0] [1] [1 0 1] [1 1 1] [1 0 0] [0] concat(cons(U,V),Y) = [0 0 0]U + [0 1 1]V + [1 0 0]Y + [1] >= [0 0 0]U + [0 1 1]V + [1 0 0]Y + [0] = cons(U,concat(V,Y)) [0 0 0] [0 1 1] [1 0 0] [1] [0 0 0] [0 1 1] [1 0 0] [1] [1 0 0] [1] [0] lessleaves(X,leaf()) = [0 0 0]X + [0] >= [0] = false() [0 0 0] [0] [0] [1 0 1] [1 0 0] [1] [0] lessleaves(leaf(),cons(W,Z)) = [0 0 0]W + [0 0 0]Z + [0] >= [0] = true() [1 0 1] [1 0 0] [0] [0] problem: Qed