YES TRS: { merge(x, nil()) -> x, merge(nil(), y) -> y, merge(.(x, y), .(u, v)) -> if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))), if(true(), x, y) -> x, if(false(), x, y) -> x, ++(nil(), y) -> y, ++(.(x, y), z) -> .(x, ++(y, z))} DP: Strict: {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))), ++#(.(x, y), z) -> ++#(y, z)} Weak: { merge(x, nil()) -> x, merge(nil(), y) -> y, merge(.(x, y), .(u, v)) -> if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))), if(true(), x, y) -> x, if(false(), x, y) -> x, ++(nil(), y) -> y, ++(.(x, y), z) -> .(x, ++(y, z))} EDG: {(++#(.(x, y), z) -> ++#(y, z), ++#(.(x, y), z) -> ++#(y, z)) (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)) (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)))) (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)) -> merge#(.(x, y), 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))))} SCCS: Scc: {++#(.(x, y), z) -> ++#(y, z)} Scc: {merge#(.(x, y), .(u, v)) -> merge#(y, .(u, v)), merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v)} SCC: Strict: {++#(.(x, y), z) -> ++#(y, z)} Weak: { merge(x, nil()) -> x, merge(nil(), y) -> y, merge(.(x, y), .(u, v)) -> if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))), if(true(), x, y) -> x, if(false(), x, y) -> x, ++(nil(), y) -> y, ++(.(x, y), z) -> .(x, ++(y, z))} SPSC: Simple Projection: pi(++#) = 0 Strict: {} Qed SCC: Strict: {merge#(.(x, y), .(u, v)) -> merge#(y, .(u, v)), merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v)} Weak: { merge(x, nil()) -> x, merge(nil(), y) -> y, merge(.(x, y), .(u, v)) -> if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))), if(true(), x, y) -> x, if(false(), x, y) -> x, ++(nil(), y) -> y, ++(.(x, y), z) -> .(x, ++(y, z))} SPSC: Simple Projection: pi(merge#) = 0 Strict: {merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v)} EDG: {(merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v), merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v))} SCCS: Scc: {merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v)} SCC: Strict: {merge#(.(x, y), .(u, v)) -> merge#(.(x, y), v)} Weak: { merge(x, nil()) -> x, merge(nil(), y) -> y, merge(.(x, y), .(u, v)) -> if(<(x, u), .(x, merge(y, .(u, v))), .(u, merge(.(x, y), v))), if(true(), x, y) -> x, if(false(), x, y) -> x, ++(nil(), y) -> y, ++(.(x, y), z) -> .(x, ++(y, z))} SPSC: Simple Projection: pi(merge#) = 1 Strict: {} Qed