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())) Usable Rule Processor: DPs: merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) merge#(++(x,y),++(u(),v())) -> merge#(++(x,y),v()) TRS: ADG Processor: DPs: merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) merge#(++(x,y),++(u(),v())) -> merge#(++(x,y),v()) TRS: graph: merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) -> merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),v())) -> merge#(++(x,y),++(u(),v())) -> merge#(++(x,y),v()) Restore Modifier: 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())) SCC Processor: #sccs: 1 #rules: 1 #arcs: 2/4 DPs: merge#(++(x,y),++(u(),v())) -> merge#(y,++(u(),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: dimension: 1 interpretation: [merge#](x0, x1) = x0 + x1, [v] = 1, [u] = 0, [++](x0, x1) = x1 + 1, [merge](x0, x1) = x0 + x1, [nil] = 0 orientation: merge#(++(x,y),++(u(),v())) = y + 3 >= y + 2 = merge#(y,++(u(),v())) merge(x,nil()) = x >= x = x merge(nil(),y) = y >= y = y merge(++(x,y),++(u(),v())) = y + 3 >= y + 3 = ++(x,merge(y,++(u(),v()))) merge(++(x,y),++(u(),v())) = y + 3 >= 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