MAYBE 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 EDG 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 graph: ++#(.(x,y),z) -> ++#(y,z) -> ++#(.(x,y),z) -> ++#(y,z) merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) -> merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) -> merge#(.(x,y),.(u,v)) -> merge#(y,.(u,v)) merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) -> merge#(.(x,y),.(u,v)) -> if#(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) merge#(.(x,y),.(u,v)) -> merge#(y,.(u,v)) -> merge#(.(x,y),.(u,v)) -> merge#(.(x,y),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#(y,.(u,v)) -> merge#(.(x,y),.(u,v)) -> if#(<(x,u),.(x,merge(y,.(u,v))),.(u,merge(.(x,y),v))) SCC Processor: #sccs: 2 #rules: 3 #arcs: 7/16 DPs: merge#(.(x,y),.(u,v)) -> merge#(.(x,y),v) merge#(.(x,y),.(u,v)) -> merge#(y,.(u,v)) 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 Open DPs: ++#(.(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 Open