WORST_CASE(Omega(n^1),O(n^1)) * Step 1: Sum. WORST_CASE(Omega(n^1),O(n^1)) + Considered Problem: - Strict TRS: ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2} / {./2, c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2} / {./2, c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2} / {./2, .(x,y)} = ++'(.(x,y),z) ->^+ c5(++'(y,z)) = C[++'(y,z) = ++'(y,z){}] ** Step 1.b:1: DependencyPairs. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict TRS: ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2} / {./2, c_1(++'#(z1,z2)) ++'#(nil(),z0) -> c_2() IF#(false(),z0,z1) -> c_3() IF#(true(),z0,z1) -> c_4() MERGE#(z0,nil()) -> c_5() MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) MERGE#(nil(),z0) -> c_8() Weak DPs ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) ++#(nil(),z0) -> c_10() if#(false(),z0,z1) -> c_11() if#(true(),z0,z1) -> c_12() merge#(z0,nil()) -> c_13() merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) merge#(nil(),z0) -> c_15() and mark the set of starting terms. ** Step 1.b:2: PredecessorEstimation. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) ++'#(nil(),z0) -> c_2() IF#(false(),z0,z1) -> c_3() IF#(true(),z0,z1) -> c_4() MERGE#(z0,nil()) -> c_5() MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) MERGE#(nil(),z0) -> c_8() - Weak DPs: ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) ++#(nil(),z0) -> c_10() if#(false(),z0,z1) -> c_11() if#(true(),z0,z1) -> c_12() merge#(z0,nil()) -> c_13() merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) merge#(nil(),z0) -> c_15() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, c_1(++'#(z1,z2)) 2: ++'#(nil(),z0) -> c_2() 3: IF#(false(),z0,z1) -> c_3() 4: IF#(true(),z0,z1) -> c_4() 5: MERGE#(z0,nil()) -> c_5() 6: MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) 7: MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) 8: MERGE#(nil(),z0) -> c_8() 9: ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) 10: ++#(nil(),z0) -> c_10() 11: if#(false(),z0,z1) -> c_11() 12: if#(true(),z0,z1) -> c_12() 13: merge#(z0,nil()) -> c_13() 14: merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) 15: merge#(nil(),z0) -> c_15() ** Step 1.b:3: RemoveWeakSuffixes. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) - Weak DPs: ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) ++#(nil(),z0) -> c_10() ++'#(nil(),z0) -> c_2() IF#(false(),z0,z1) -> c_3() IF#(true(),z0,z1) -> c_4() MERGE#(z0,nil()) -> c_5() MERGE#(nil(),z0) -> c_8() if#(false(),z0,z1) -> c_11() if#(true(),z0,z1) -> c_12() merge#(z0,nil()) -> c_13() merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) merge#(nil(),z0) -> c_15() - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, c_1(++'#(z1,z2)) -->_1 ++'#(nil(),z0) -> c_2():6 -->_1 ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)):1 2:S:MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) -->_3 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_2 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)):3 -->_2 merge#(nil(),z0) -> c_15():15 -->_3 merge#(z0,nil()) -> c_13():13 -->_4 MERGE#(nil(),z0) -> c_8():10 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))):2 3:S:MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) -->_3 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_2 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_2 merge#(nil(),z0) -> c_15():15 -->_3 merge#(z0,nil()) -> c_13():13 -->_4 MERGE#(z0,nil()) -> c_5():9 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)):3 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))):2 4:W:++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) -->_1 ++#(nil(),z0) -> c_10():5 -->_1 ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)):4 5:W:++#(nil(),z0) -> c_10() 6:W:++'#(nil(),z0) -> c_2() 7:W:IF#(false(),z0,z1) -> c_3() 8:W:IF#(true(),z0,z1) -> c_4() 9:W:MERGE#(z0,nil()) -> c_5() 10:W:MERGE#(nil(),z0) -> c_8() 11:W:if#(false(),z0,z1) -> c_11() 12:W:if#(true(),z0,z1) -> c_12() 13:W:merge#(z0,nil()) -> c_13() 14:W:merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) -->_2 merge#(nil(),z0) -> c_15():15 -->_3 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_2 merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)):14 -->_3 merge#(z0,nil()) -> c_13():13 15:W:merge#(nil(),z0) -> c_15() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: if#(true(),z0,z1) -> c_12() 11: if#(false(),z0,z1) -> c_11() 8: IF#(true(),z0,z1) -> c_4() 7: IF#(false(),z0,z1) -> c_3() 4: ++#(.(z0,z1),z2) -> c_9(++#(z1,z2)) 5: ++#(nil(),z0) -> c_10() 10: MERGE#(nil(),z0) -> c_8() 9: MERGE#(z0,nil()) -> c_5() 14: merge#(.(z0,z1),.(z2,z3)) -> c_14(if#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3)) 13: merge#(z0,nil()) -> c_13() 15: merge#(nil(),z0) -> c_15() 6: ++'#(nil(),z0) -> c_2() ** Step 1.b:4: SimplifyRHS. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, c_1(++'#(z1,z2)) -->_1 ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)):1 2:S:MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))) -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)):3 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))):2 3:S:MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)) -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_7(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(.(z0,z1),z3)):3 -->_4 MERGE#(.(z0,z1),.(z2,z3)) -> c_6(IF#(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,merge#(z1,.(z2,z3)) ,merge#(.(z0,z1),z3) ,MERGE#(z1,.(z2,z3))):2 Due to missing edges in the depndency graph, the right-hand sides of following rules could be simplified: MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) ** Step 1.b:5: UsableRules. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) - Weak TRS: ++(.(z0,z1),z2) -> .(z0,++(z1,z2)) ++(nil(),z0) -> z0 ++'(.(z0,z1),z2) -> c5(++'(z1,z2)) ++'(nil(),z0) -> c4() IF(false(),z0,z1) -> c7() IF(true(),z0,z1) -> c6() MERGE(z0,nil()) -> c1() MERGE(.(z0,z1),.(z2,z3)) -> c2(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(z1,.(z2,z3))) MERGE(.(z0,z1),.(z2,z3)) -> c3(IF(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) ,MERGE(.(z0,z1),z3)) MERGE(nil(),z0) -> c() if(false(),z0,z1) -> z0 if(true(),z0,z1) -> z0 merge(z0,nil()) -> z0 merge(.(z0,z1),.(z2,z3)) -> if(<(z0,z2),.(z0,merge(z1,.(z2,z3))),.(z2,merge(.(z0,z1),z3))) merge(nil(),z0) -> z0 - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) ** Step 1.b:6: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, [5] z1 + [5] z2 + [10] = c_1(++'#(z1,z2)) Following rules are (at-least) weakly oriented: MERGE#(.(z0,z1),.(z2,z3)) = [0] >= [0] = c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) = [0] >= [0] = c_7(MERGE#(.(z0,z1),z3)) ** Step 1.b:7: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) - Weak DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, [1] z1 + [2] z3 + [2] = c_6(MERGE#(z1,.(z2,z3))) Following rules are (at-least) weakly oriented: ++'#(.(z0,z1),z2) = [8] z2 + [8] >= [8] z2 + [8] = c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) = [1] z1 + [2] z3 + [3] >= [1] z1 + [2] z3 + [3] = c_7(MERGE#(.(z0,z1),z3)) ** Step 1.b:8: NaturalMI. WORST_CASE(?,O(n^1)) + Considered Problem: - Strict DPs: MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) - Weak DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2, [2] z3 + [1] = c_7(MERGE#(.(z0,z1),z3)) Following rules are (at-least) weakly oriented: ++'#(.(z0,z1),z2) = [4] z0 + [4] z1 + [4] >= [4] z1 + [1] = c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) = [2] z2 + [2] z3 + [3] >= [2] z2 + [2] z3 + [3] = c_6(MERGE#(z1,.(z2,z3))) ** Step 1.b:9: EmptyProcessor. WORST_CASE(?,O(1)) + Considered Problem: - Weak DPs: ++'#(.(z0,z1),z2) -> c_1(++'#(z1,z2)) MERGE#(.(z0,z1),.(z2,z3)) -> c_6(MERGE#(z1,.(z2,z3))) MERGE#(.(z0,z1),.(z2,z3)) -> c_7(MERGE#(.(z0,z1),z3)) - Signature: {++/2,++'/2,IF/3,MERGE/2,if/3,merge/2,++#/2,++'#/2,IF#/3,MERGE#/2,if#/3,merge#/2} / {./2,