MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x max(nil()) -> 0() sort(cons(x,xs)) -> cons(max(cons(x,xs)),sort(del(max(cons(x,xs)),cons(x,xs)))) sort(nil()) -> nil() - Signature: {del/2,eq/2,ge/2,if1/4,if2/4,max/1,sort/1} / {0/0,cons/2,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {del,eq,ge,if1,if2,max,sort} and constructors {0,cons ,false,nil,s,true} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) del#(x,nil()) -> c_2() eq#(0(),0()) -> c_3() eq#(0(),s(y)) -> c_4() eq#(s(x),0()) -> c_5() eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(x,0()) -> c_7() ge#(0(),s(x)) -> c_8() ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) if2#(true(),x,y,xs) -> c_13() max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) max#(cons(x,nil())) -> c_15() max#(nil()) -> c_16() sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) sort#(nil()) -> c_18() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) del#(x,nil()) -> c_2() eq#(0(),0()) -> c_3() eq#(0(),s(y)) -> c_4() eq#(s(x),0()) -> c_5() eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(x,0()) -> c_7() ge#(0(),s(x)) -> c_8() ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) if2#(true(),x,y,xs) -> c_13() max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) max#(cons(x,nil())) -> c_15() max#(nil()) -> c_16() sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) sort#(nil()) -> c_18() - Weak TRS: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x max(nil()) -> 0() sort(cons(x,xs)) -> cons(max(cons(x,xs)),sort(del(max(cons(x,xs)),cons(x,xs)))) sort(nil()) -> nil() - Signature: {del/2,eq/2,ge/2,if1/4,if2/4,max/1,sort/1,del#/2,eq#/2,ge#/2,if1#/4,if2#/4,max#/1,sort#/1} / {0/0,cons/2 ,false/0,nil/0,s/1,true/0,c_1/2,c_2/0,c_3/0,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/0,c_16/0,c_17/4,c_18/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,ge#,if1#,if2#,max#,sort#} and constructors {0 ,cons,false,nil,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) del#(x,nil()) -> c_2() eq#(0(),0()) -> c_3() eq#(0(),s(y)) -> c_4() eq#(s(x),0()) -> c_5() eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(x,0()) -> c_7() ge#(0(),s(x)) -> c_8() ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) if2#(true(),x,y,xs) -> c_13() max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) max#(cons(x,nil())) -> c_15() max#(nil()) -> c_16() sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) sort#(nil()) -> c_18() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) del#(x,nil()) -> c_2() eq#(0(),0()) -> c_3() eq#(0(),s(y)) -> c_4() eq#(s(x),0()) -> c_5() eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(x,0()) -> c_7() ge#(0(),s(x)) -> c_8() ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) if2#(true(),x,y,xs) -> c_13() max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) max#(cons(x,nil())) -> c_15() max#(nil()) -> c_16() sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) sort#(nil()) -> c_18() - Weak TRS: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x - Signature: {del/2,eq/2,ge/2,if1/4,if2/4,max/1,sort/1,del#/2,eq#/2,ge#/2,if1#/4,if2#/4,max#/1,sort#/1} / {0/0,cons/2 ,false/0,nil/0,s/1,true/0,c_1/2,c_2/0,c_3/0,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/0,c_16/0,c_17/4,c_18/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,ge#,if1#,if2#,max#,sort#} and constructors {0 ,cons,false,nil,s,true} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,3,4,5,7,8,13,15,16,18} by application of Pre({2,3,4,5,7,8,13,15,16,18}) = {1,6,9,10,11,12,14,17}. Here rules are labelled as follows: 1: del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) 2: del#(x,nil()) -> c_2() 3: eq#(0(),0()) -> c_3() 4: eq#(0(),s(y)) -> c_4() 5: eq#(s(x),0()) -> c_5() 6: eq#(s(x),s(y)) -> c_6(eq#(x,y)) 7: ge#(x,0()) -> c_7() 8: ge#(0(),s(x)) -> c_8() 9: ge#(s(x),s(y)) -> c_9(ge#(x,y)) 10: if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) 11: if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) 12: if2#(false(),x,y,xs) -> c_12(del#(x,xs)) 13: if2#(true(),x,y,xs) -> c_13() 14: max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) 15: max#(cons(x,nil())) -> c_15() 16: max#(nil()) -> c_16() 17: sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) 18: sort#(nil()) -> c_18() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) - Weak DPs: del#(x,nil()) -> c_2() eq#(0(),0()) -> c_3() eq#(0(),s(y)) -> c_4() eq#(s(x),0()) -> c_5() ge#(x,0()) -> c_7() ge#(0(),s(x)) -> c_8() if2#(true(),x,y,xs) -> c_13() max#(cons(x,nil())) -> c_15() max#(nil()) -> c_16() sort#(nil()) -> c_18() - Weak TRS: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x - Signature: {del/2,eq/2,ge/2,if1/4,if2/4,max/1,sort/1,del#/2,eq#/2,ge#/2,if1#/4,if2#/4,max#/1,sort#/1} / {0/0,cons/2 ,false/0,nil/0,s/1,true/0,c_1/2,c_2/0,c_3/0,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/0,c_16/0,c_17/4,c_18/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,ge#,if1#,if2#,max#,sort#} and constructors {0 ,cons,false,nil,s,true} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) -->_1 if2#(false(),x,y,xs) -> c_12(del#(x,xs)):6 -->_2 eq#(s(x),s(y)) -> c_6(eq#(x,y)):2 -->_1 if2#(true(),x,y,xs) -> c_13():15 -->_2 eq#(s(x),0()) -> c_5():12 -->_2 eq#(0(),s(y)) -> c_4():11 -->_2 eq#(0(),0()) -> c_3():10 2:S:eq#(s(x),s(y)) -> c_6(eq#(x,y)) -->_1 eq#(s(x),0()) -> c_5():12 -->_1 eq#(0(),s(y)) -> c_4():11 -->_1 eq#(0(),0()) -> c_3():10 -->_1 eq#(s(x),s(y)) -> c_6(eq#(x,y)):2 3:S:ge#(s(x),s(y)) -> c_9(ge#(x,y)) -->_1 ge#(0(),s(x)) -> c_8():14 -->_1 ge#(x,0()) -> c_7():13 -->_1 ge#(s(x),s(y)) -> c_9(ge#(x,y)):3 4:S:if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) -->_1 max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)):7 -->_1 max#(cons(x,nil())) -> c_15():16 5:S:if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) -->_1 max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)):7 -->_1 max#(cons(x,nil())) -> c_15():16 6:S:if2#(false(),x,y,xs) -> c_12(del#(x,xs)) -->_1 del#(x,nil()) -> c_2():9 -->_1 del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)):1 7:S:max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) -->_2 ge#(0(),s(x)) -> c_8():14 -->_2 ge#(x,0()) -> c_7():13 -->_1 if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))):5 -->_1 if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))):4 -->_2 ge#(s(x),s(y)) -> c_9(ge#(x,y)):3 8:S:sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) -->_2 sort#(nil()) -> c_18():18 -->_4 max#(cons(x,nil())) -> c_15():16 -->_1 max#(cons(x,nil())) -> c_15():16 -->_2 sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))):8 -->_4 max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)):7 -->_1 max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)):7 -->_3 del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)):1 9:W:del#(x,nil()) -> c_2() 10:W:eq#(0(),0()) -> c_3() 11:W:eq#(0(),s(y)) -> c_4() 12:W:eq#(s(x),0()) -> c_5() 13:W:ge#(x,0()) -> c_7() 14:W:ge#(0(),s(x)) -> c_8() 15:W:if2#(true(),x,y,xs) -> c_13() 16:W:max#(cons(x,nil())) -> c_15() 17:W:max#(nil()) -> c_16() 18:W:sort#(nil()) -> c_18() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 17: max#(nil()) -> c_16() 18: sort#(nil()) -> c_18() 16: max#(cons(x,nil())) -> c_15() 13: ge#(x,0()) -> c_7() 14: ge#(0(),s(x)) -> c_8() 15: if2#(true(),x,y,xs) -> c_13() 10: eq#(0(),0()) -> c_3() 11: eq#(0(),s(y)) -> c_4() 12: eq#(s(x),0()) -> c_5() 9: del#(x,nil()) -> c_2() * Step 5: Failure MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if2#(eq(x,y),x,y,xs),eq#(x,y)) eq#(s(x),s(y)) -> c_6(eq#(x,y)) ge#(s(x),s(y)) -> c_9(ge#(x,y)) if1#(false(),x,y,xs) -> c_10(max#(cons(y,xs))) if1#(true(),x,y,xs) -> c_11(max#(cons(x,xs))) if2#(false(),x,y,xs) -> c_12(del#(x,xs)) max#(cons(x,cons(y,xs))) -> c_14(if1#(ge(x,y),x,y,xs),ge#(x,y)) sort#(cons(x,xs)) -> c_17(max#(cons(x,xs)) ,sort#(del(max(cons(x,xs)),cons(x,xs))) ,del#(max(cons(x,xs)),cons(x,xs)) ,max#(cons(x,xs))) - Weak TRS: del(x,cons(y,xs)) -> if2(eq(x,y),x,y,xs) del(x,nil()) -> nil() eq(0(),0()) -> true() eq(0(),s(y)) -> false() eq(s(x),0()) -> false() eq(s(x),s(y)) -> eq(x,y) ge(x,0()) -> true() ge(0(),s(x)) -> false() ge(s(x),s(y)) -> ge(x,y) if1(false(),x,y,xs) -> max(cons(y,xs)) if1(true(),x,y,xs) -> max(cons(x,xs)) if2(false(),x,y,xs) -> cons(y,del(x,xs)) if2(true(),x,y,xs) -> xs max(cons(x,cons(y,xs))) -> if1(ge(x,y),x,y,xs) max(cons(x,nil())) -> x - Signature: {del/2,eq/2,ge/2,if1/4,if2/4,max/1,sort/1,del#/2,eq#/2,ge#/2,if1#/4,if2#/4,max#/1,sort#/1} / {0/0,cons/2 ,false/0,nil/0,s/1,true/0,c_1/2,c_2/0,c_3/0,c_4/0,c_5/0,c_6/1,c_7/0,c_8/0,c_9/1,c_10/1,c_11/1,c_12/1,c_13/0 ,c_14/2,c_15/0,c_16/0,c_17/4,c_18/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,ge#,if1#,if2#,max#,sort#} and constructors {0 ,cons,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE