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: DP Processor: DPs: concat#(cons(U,V),Y) -> concat#(V,Y) lessleaves#(cons(U,V),cons(W,Z)) -> concat#(W,Z) lessleaves#(cons(U,V),cons(W,Z)) -> concat#(U,V) lessleaves#(cons(U,V),cons(W,Z)) -> lessleaves#(concat(U,V),concat(W,Z)) TRS: 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)) Usable Rule Processor: DPs: concat#(cons(U,V),Y) -> concat#(V,Y) lessleaves#(cons(U,V),cons(W,Z)) -> concat#(W,Z) lessleaves#(cons(U,V),cons(W,Z)) -> concat#(U,V) lessleaves#(cons(U,V),cons(W,Z)) -> lessleaves#(concat(U,V),concat(W,Z)) TRS: concat(leaf(),Y) -> Y concat(cons(U,V),Y) -> cons(U,concat(V,Y)) Matrix Interpretation Processor: dim=3 usable rules: concat(leaf(),Y) -> Y concat(cons(U,V),Y) -> cons(U,concat(V,Y)) interpretation: [lessleaves#](x0, x1) = [0 0 1]x0 + [1 0 0]x1, [concat#](x0, x1) = [0 1 0]x0, [0 1 0] [0] [cons](x0, x1) = [0 1 0]x0 + x1 + [1] [0 1 1] [1], [0 1 0] [1 0 0] [concat](x0, x1) = [1 1 0]x0 + [1 1 0]x1 [0 0 1] [0 0 1] , [1] [leaf] = [0] [0] orientation: concat#(cons(U,V),Y) = [0 1 0]U + [0 1 0]V + [1] >= [0 1 0]V = concat#(V,Y) lessleaves#(cons(U,V),cons(W,Z)) = [0 1 1]U + [0 0 1]V + [0 1 0]W + [1 0 0]Z + [1] >= [0 1 0]W = concat#(W,Z) lessleaves#(cons(U,V),cons(W,Z)) = [0 1 1]U + [0 0 1]V + [0 1 0]W + [1 0 0]Z + [1] >= [0 1 0]U = concat#(U,V) lessleaves#(cons(U,V),cons(W,Z)) = [0 1 1]U + [0 0 1]V + [0 1 0]W + [1 0 0]Z + [1] >= [0 0 1]U + [0 0 1]V + [0 1 0]W + [1 0 0]Z = lessleaves#(concat(U,V),concat(W,Z)) [1 0 0] [0] concat(leaf(),Y) = [1 1 0]Y + [1] >= Y = Y [0 0 1] [0] [0 1 0] [0 1 0] [1 0 0] [1] [0 1 0] [0 1 0] [1 0 0] [0] concat(cons(U,V),Y) = [0 2 0]U + [1 1 0]V + [1 1 0]Y + [1] >= [0 1 0]U + [1 1 0]V + [1 1 0]Y + [1] = cons(U,concat(V,Y)) [0 1 1] [0 0 1] [0 0 1] [1] [0 1 1] [0 0 1] [0 0 1] [1] problem: DPs: TRS: concat(leaf(),Y) -> Y concat(cons(U,V),Y) -> cons(U,concat(V,Y)) Qed