YES Problem: merge(nil(),y) -> y merge(x,nil()) -> x merge(.(x,y),.(u,v)) -> if(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++(nil(),y) -> y ++(.(x,y),z) -> .(x,++(y,z)) if(true(),x,y) -> x if(false(),x,y) -> x Proof: DP Processor: DPs: merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) merge#(.(x,y),.(u,v)) -> merge#(y,.(u,v)) merge#(.(x,y),.(u,v)) -> if#(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++#(.(x,y),z) -> ++#(y,z) TRS: merge(nil(),y) -> y merge(x,nil()) -> x merge(.(x,y),.(u,v)) -> if(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++(nil(),y) -> y ++(.(x,y),z) -> .(x,++(y,z)) if(true(),x,y) -> x if(false(),x,y) -> x Matrix Interpretation Processor: dim=1 interpretation: [++#](x0, x1) = x0 + 4, [if#](x0, x1, x2) = 6, [merge#](x0, x1) = x0 + x1 + 5, [false] = 0, [true] = 2, [++](x0, x1) = x0 + 2x1, [if](x0, x1, x2) = 2x0 + x1, [<](x0, x1) = 0, [.](x0, x1) = 4x0 + x1 + 1, [merge](x0, x1) = x0 + x1, [nil] = 2 orientation: merge#(.(x,y),.(u,v)) = 4u + v + 4x + y + 7 >= v + 4x + y + 6 = merge#(.(x,y),v) merge#(.(x,y),.(u,v)) = 4u + v + 4x + y + 7 >= 4u + v + y + 6 = merge#(y,.(u,v)) merge#(.(x,y),.(u,v)) = 4u + v + 4x + y + 7 >= 6 = if#(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++#(.(x,y),z) = 4x + y + 5 >= y + 4 = ++#(y,z) merge(nil(),y) = y + 2 >= y = y merge(x,nil()) = x + 2 >= x = x merge(.(x,y),.(u,v)) = 4u + v + 4x + y + 2 >= 4u + v + 4x + y + 2 = if(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++(nil(),y) = 2y + 2 >= y = y ++(.(x,y),z) = 4x + y + 2z + 1 >= 4x + y + 2z + 1 = .(x,++(y,z)) if(true(),x,y) = x + 4 >= x = x if(false(),x,y) = x >= x = x problem: DPs: TRS: merge(nil(),y) -> y merge(x,nil()) -> x merge(.(x,y),.(u,v)) -> if(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) ++(nil(),y) -> y ++(.(x,y),z) -> .(x,++(y,z)) if(true(),x,y) -> x if(false(),x,y) -> x Qed