MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x last(nil()) -> 0() reverse(cons(x,xs)) -> cons(last(cons(x,xs)),reverse(del(last(cons(x,xs)),cons(x,xs)))) reverse(nil()) -> nil() - Signature: {del/2,eq/2,if/4,last/1,reverse/1} / {0/0,cons/2,false/0,nil/0,s/1,true/0} - Obligation: innermost runtime complexity wrt. defined symbols {del,eq,if,last,reverse} 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(if#(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)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) if#(true(),x,y,xs) -> c_8() last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) last#(cons(x,nil())) -> c_10() last#(nil()) -> c_11() reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) reverse#(nil()) -> c_13() Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if#(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)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) if#(true(),x,y,xs) -> c_8() last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) last#(cons(x,nil())) -> c_10() last#(nil()) -> c_11() reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) reverse#(nil()) -> c_13() - Weak TRS: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x last(nil()) -> 0() reverse(cons(x,xs)) -> cons(last(cons(x,xs)),reverse(del(last(cons(x,xs)),cons(x,xs)))) reverse(nil()) -> nil() - Signature: {del/2,eq/2,if/4,last/1,reverse/1,del#/2,eq#/2,if#/4,last#/1,reverse#/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/1,c_8/0,c_9/1,c_10/0,c_11/0,c_12/4,c_13/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,if#,last#,reverse#} and constructors {0,cons ,false,nil,s,true} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x del#(x,cons(y,xs)) -> c_1(if#(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)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) if#(true(),x,y,xs) -> c_8() last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) last#(cons(x,nil())) -> c_10() last#(nil()) -> c_11() reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) reverse#(nil()) -> c_13() * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if#(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)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) if#(true(),x,y,xs) -> c_8() last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) last#(cons(x,nil())) -> c_10() last#(nil()) -> c_11() reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) reverse#(nil()) -> c_13() - Weak TRS: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x - Signature: {del/2,eq/2,if/4,last/1,reverse/1,del#/2,eq#/2,if#/4,last#/1,reverse#/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/1,c_8/0,c_9/1,c_10/0,c_11/0,c_12/4,c_13/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,if#,last#,reverse#} 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,8,10,11,13} by application of Pre({2,3,4,5,8,10,11,13}) = {1,6,7,9,12}. Here rules are labelled as follows: 1: del#(x,cons(y,xs)) -> c_1(if#(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: if#(false(),x,y,xs) -> c_7(del#(x,xs)) 8: if#(true(),x,y,xs) -> c_8() 9: last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) 10: last#(cons(x,nil())) -> c_10() 11: last#(nil()) -> c_11() 12: reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) 13: reverse#(nil()) -> c_13() * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if#(eq(x,y),x,y,xs),eq#(x,y)) eq#(s(x),s(y)) -> c_6(eq#(x,y)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(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() if#(true(),x,y,xs) -> c_8() last#(cons(x,nil())) -> c_10() last#(nil()) -> c_11() reverse#(nil()) -> c_13() - Weak TRS: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x - Signature: {del/2,eq/2,if/4,last/1,reverse/1,del#/2,eq#/2,if#/4,last#/1,reverse#/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/1,c_8/0,c_9/1,c_10/0,c_11/0,c_12/4,c_13/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,if#,last#,reverse#} 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(if#(eq(x,y),x,y,xs),eq#(x,y)) -->_1 if#(false(),x,y,xs) -> c_7(del#(x,xs)):3 -->_2 eq#(s(x),s(y)) -> c_6(eq#(x,y)):2 -->_1 if#(true(),x,y,xs) -> c_8():10 -->_2 eq#(s(x),0()) -> c_5():9 -->_2 eq#(0(),s(y)) -> c_4():8 -->_2 eq#(0(),0()) -> c_3():7 2:S:eq#(s(x),s(y)) -> c_6(eq#(x,y)) -->_1 eq#(s(x),0()) -> c_5():9 -->_1 eq#(0(),s(y)) -> c_4():8 -->_1 eq#(0(),0()) -> c_3():7 -->_1 eq#(s(x),s(y)) -> c_6(eq#(x,y)):2 3:S:if#(false(),x,y,xs) -> c_7(del#(x,xs)) -->_1 del#(x,nil()) -> c_2():6 -->_1 del#(x,cons(y,xs)) -> c_1(if#(eq(x,y),x,y,xs),eq#(x,y)):1 4:S:last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) -->_1 last#(cons(x,nil())) -> c_10():11 -->_1 last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))):4 5:S:reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) -->_2 reverse#(nil()) -> c_13():13 -->_4 last#(cons(x,nil())) -> c_10():11 -->_1 last#(cons(x,nil())) -> c_10():11 -->_2 reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))):5 -->_4 last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))):4 -->_1 last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))):4 -->_3 del#(x,cons(y,xs)) -> c_1(if#(eq(x,y),x,y,xs),eq#(x,y)):1 6:W:del#(x,nil()) -> c_2() 7:W:eq#(0(),0()) -> c_3() 8:W:eq#(0(),s(y)) -> c_4() 9:W:eq#(s(x),0()) -> c_5() 10:W:if#(true(),x,y,xs) -> c_8() 11:W:last#(cons(x,nil())) -> c_10() 12:W:last#(nil()) -> c_11() 13:W:reverse#(nil()) -> c_13() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 12: last#(nil()) -> c_11() 13: reverse#(nil()) -> c_13() 11: last#(cons(x,nil())) -> c_10() 10: if#(true(),x,y,xs) -> c_8() 7: eq#(0(),0()) -> c_3() 8: eq#(0(),s(y)) -> c_4() 9: eq#(s(x),0()) -> c_5() 6: del#(x,nil()) -> c_2() * Step 5: Failure MAYBE + Considered Problem: - Strict DPs: del#(x,cons(y,xs)) -> c_1(if#(eq(x,y),x,y,xs),eq#(x,y)) eq#(s(x),s(y)) -> c_6(eq#(x,y)) if#(false(),x,y,xs) -> c_7(del#(x,xs)) last#(cons(x,cons(y,xs))) -> c_9(last#(cons(y,xs))) reverse#(cons(x,xs)) -> c_12(last#(cons(x,xs)) ,reverse#(del(last(cons(x,xs)),cons(x,xs))) ,del#(last(cons(x,xs)),cons(x,xs)) ,last#(cons(x,xs))) - Weak TRS: del(x,cons(y,xs)) -> if(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) if(false(),x,y,xs) -> cons(y,del(x,xs)) if(true(),x,y,xs) -> xs last(cons(x,cons(y,xs))) -> last(cons(y,xs)) last(cons(x,nil())) -> x - Signature: {del/2,eq/2,if/4,last/1,reverse/1,del#/2,eq#/2,if#/4,last#/1,reverse#/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/1,c_8/0,c_9/1,c_10/0,c_11/0,c_12/4,c_13/0} - Obligation: innermost runtime complexity wrt. defined symbols {del#,eq#,if#,last#,reverse#} and constructors {0,cons ,false,nil,s,true} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE