YES Problem: merge(x,nil()) -> x merge(nil(),y) -> y merge(++(x,y),++(u(),v())) -> ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) -> ++(u(),merge(++(x,y),v())) Proof: DP Processor: DPs: merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) merge#(++(x,y),++(u(),v())) -> merge#(++(x,y),v()) TRS: merge(x,nil()) -> x merge(nil(),y) -> y merge(++(x,y),++(u(),v())) -> ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) -> ++(u(),merge(++(x,y),v())) Matrix Interpretation Processor: dim=1 interpretation: [merge#](x0, x1) = x0 + 2x1 + 7, [v] = 0, [u] = 0, [++](x0, x1) = x0 + x1 + 1, [merge](x0, x1) = x0 + 6x1 + 1, [nil] = 5 orientation: merge#(++(x,y),++(u(),v())) = x + y + 10 >= y + 9 = merge#(y,++(u(),v())) merge#(++(x,y),++(u(),v())) = x + y + 10 >= x + y + 8 = merge#(++(x,y),v()) merge(x,nil()) = x + 31 >= x = x merge(nil(),y) = 6y + 6 >= y = y merge(++(x,y),++(u(),v())) = x + y + 8 >= x + y + 8 = ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) = x + y + 8 >= x + y + 3 = ++(u(),merge(++(x,y),v())) problem: DPs: TRS: merge(x,nil()) -> x merge(nil(),y) -> y merge(++(x,y),++(u(),v())) -> ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) -> ++(u(),merge(++(x,y),v())) Qed