YES Problem: a____(__(X,Y),Z) -> a____(mark(X),a____(mark(Y),mark(Z))) a____(X,nil()) -> mark(X) a____(nil(),X) -> mark(X) a__and(tt(),X) -> mark(X) a__isNePal(__(I,__(P,I))) -> tt() mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) mark(nil()) -> nil() mark(tt()) -> tt() a____(X1,X2) -> __(X1,X2) a__and(X1,X2) -> and(X1,X2) a__isNePal(X) -> isNePal(X) Proof: Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = 4x0, [and](x0, x1) = 2x0 + 4x1, [a__isNePal](x0) = 4x0, [a__and](x0, x1) = 2x0 + 4x1, [tt] = 4, [nil] = 2, [mark](x0) = x0, [a____](x0, x1) = 2x0 + x1 + 2, [__](x0, x1) = 2x0 + x1 + 2 orientation: a____(__(X,Y),Z) = 4X + 2Y + Z + 6 >= 2X + 2Y + Z + 4 = a____(mark(X),a____(mark(Y),mark(Z))) a____(X,nil()) = 2X + 4 >= X = mark(X) a____(nil(),X) = X + 6 >= X = mark(X) a__and(tt(),X) = 4X + 8 >= X = mark(X) a__isNePal(__(I,__(P,I))) = 12I + 8P + 16 >= 4 = tt() mark(__(X1,X2)) = 2X1 + X2 + 2 >= 2X1 + X2 + 2 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = 2X1 + 4X2 >= 2X1 + 4X2 = a__and(mark(X1),X2) mark(isNePal(X)) = 4X >= 4X = a__isNePal(mark(X)) mark(nil()) = 2 >= 2 = nil() mark(tt()) = 4 >= 4 = tt() a____(X1,X2) = 2X1 + X2 + 2 >= 2X1 + X2 + 2 = __(X1,X2) a__and(X1,X2) = 2X1 + 4X2 >= 2X1 + 4X2 = and(X1,X2) a__isNePal(X) = 4X >= 4X = isNePal(X) problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) mark(nil()) -> nil() mark(tt()) -> tt() a____(X1,X2) -> __(X1,X2) a__and(X1,X2) -> and(X1,X2) a__isNePal(X) -> isNePal(X) Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = 2x0, [and](x0, x1) = 2x0 + 2x1 + 1, [a__isNePal](x0) = 2x0, [a__and](x0, x1) = 2x0 + 4x1 + 2, [tt] = 0, [nil] = 0, [mark](x0) = 2x0, [a____](x0, x1) = 7x0 + 4x1, [__](x0, x1) = 7x0 + 4x1 orientation: mark(__(X1,X2)) = 14X1 + 8X2 >= 14X1 + 8X2 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = 4X1 + 4X2 + 2 >= 4X1 + 4X2 + 2 = a__and(mark(X1),X2) mark(isNePal(X)) = 4X >= 4X = a__isNePal(mark(X)) mark(nil()) = 0 >= 0 = nil() mark(tt()) = 0 >= 0 = tt() a____(X1,X2) = 7X1 + 4X2 >= 7X1 + 4X2 = __(X1,X2) a__and(X1,X2) = 2X1 + 4X2 + 2 >= 2X1 + 2X2 + 1 = and(X1,X2) a__isNePal(X) = 2X >= 2X = isNePal(X) problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) mark(nil()) -> nil() mark(tt()) -> tt() a____(X1,X2) -> __(X1,X2) a__isNePal(X) -> isNePal(X) Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = 2x0 + 1, [and](x0, x1) = 4x0 + 2x1, [a__isNePal](x0) = 2x0 + 3, [a__and](x0, x1) = 4x0 + 6x1, [tt] = 0, [nil] = 0, [mark](x0) = 3x0, [a____](x0, x1) = 3x0 + 4x1, [__](x0, x1) = 3x0 + 4x1 orientation: mark(__(X1,X2)) = 9X1 + 12X2 >= 9X1 + 12X2 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = 12X1 + 6X2 >= 12X1 + 6X2 = a__and(mark(X1),X2) mark(isNePal(X)) = 6X + 3 >= 6X + 3 = a__isNePal(mark(X)) mark(nil()) = 0 >= 0 = nil() mark(tt()) = 0 >= 0 = tt() a____(X1,X2) = 3X1 + 4X2 >= 3X1 + 4X2 = __(X1,X2) a__isNePal(X) = 2X + 3 >= 2X + 1 = isNePal(X) problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) mark(nil()) -> nil() mark(tt()) -> tt() a____(X1,X2) -> __(X1,X2) Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = x0 + 1, [and](x0, x1) = 4x0 + x1, [a__isNePal](x0) = x0 + 5, [a__and](x0, x1) = 4x0 + 5x1, [tt] = 0, [nil] = 2, [mark](x0) = 5x0, [a____](x0, x1) = 6x0 + 5x1 + 5, [__](x0, x1) = 6x0 + 5x1 + 1 orientation: mark(__(X1,X2)) = 30X1 + 25X2 + 5 >= 30X1 + 25X2 + 5 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = 20X1 + 5X2 >= 20X1 + 5X2 = a__and(mark(X1),X2) mark(isNePal(X)) = 5X + 5 >= 5X + 5 = a__isNePal(mark(X)) mark(nil()) = 10 >= 2 = nil() mark(tt()) = 0 >= 0 = tt() a____(X1,X2) = 6X1 + 5X2 + 5 >= 6X1 + 5X2 + 1 = __(X1,X2) problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) mark(tt()) -> tt() Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = 7x0 + 6, [and](x0, x1) = 2x0 + x1 + 1, [a__isNePal](x0) = 7x0 + 6, [a__and](x0, x1) = 2x0 + 4x1 + 1, [tt] = 3, [mark](x0) = 4x0 + 3, [a____](x0, x1) = 4x0 + 2x1 + 1, [__](x0, x1) = 4x0 + 2x1 + 4 orientation: mark(__(X1,X2)) = 16X1 + 8X2 + 19 >= 16X1 + 8X2 + 19 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = 8X1 + 4X2 + 7 >= 8X1 + 4X2 + 7 = a__and(mark(X1),X2) mark(isNePal(X)) = 28X + 27 >= 28X + 27 = a__isNePal(mark(X)) mark(tt()) = 15 >= 3 = tt() problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) mark(isNePal(X)) -> a__isNePal(mark(X)) Matrix Interpretation Processor: dim=1 interpretation: [isNePal](x0) = x0 + 4, [and](x0, x1) = x0 + x1 + 5, [a__isNePal](x0) = x0 + 3, [a__and](x0, x1) = x0 + x1 + 5, [mark](x0) = x0 + 5, [a____](x0, x1) = x0 + x1 + 1, [__](x0, x1) = x0 + x1 + 6 orientation: mark(__(X1,X2)) = X1 + X2 + 11 >= X1 + X2 + 11 = a____(mark(X1),mark(X2)) mark(and(X1,X2)) = X1 + X2 + 10 >= X1 + X2 + 10 = a__and(mark(X1),X2) mark(isNePal(X)) = X + 9 >= X + 8 = a__isNePal(mark(X)) problem: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) DP Processor: DPs: mark#(__(X1,X2)) -> mark#(X2) mark#(__(X1,X2)) -> mark#(X1) mark#(and(X1,X2)) -> mark#(X1) TRS: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) Subterm Criterion Processor: simple projection: pi(mark#) = 0 problem: DPs: TRS: mark(__(X1,X2)) -> a____(mark(X1),mark(X2)) mark(and(X1,X2)) -> a__and(mark(X1),X2) Qed