MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L)) rev(nil()) -> nil() rev1(X,cons(Y,L)) -> rev1(Y,L) rev1(0(),nil()) -> 0() rev1(s(X),nil()) -> s(X) rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L)))) rev2(X,nil()) -> nil() - Signature: {rev/1,rev1/2,rev2/2} / {0/0,cons/2,nil/0,s/1} - Obligation: innermost runtime complexity wrt. defined symbols {rev,rev1,rev2} and constructors {0,cons,nil,s} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) rev#(nil()) -> c_2() rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) rev1#(0(),nil()) -> c_4() rev1#(s(X),nil()) -> c_5() rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) rev2#(X,nil()) -> c_7() Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) rev#(nil()) -> c_2() rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) rev1#(0(),nil()) -> c_4() rev1#(s(X),nil()) -> c_5() rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) rev2#(X,nil()) -> c_7() - Weak TRS: rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L)) rev(nil()) -> nil() rev1(X,cons(Y,L)) -> rev1(Y,L) rev1(0(),nil()) -> 0() rev1(s(X),nil()) -> s(X) rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L)))) rev2(X,nil()) -> nil() - Signature: {rev/1,rev1/2,rev2/2,rev#/1,rev1#/2,rev2#/2} / {0/0,cons/2,nil/0,s/1,c_1/2,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3 ,c_7/0} - Obligation: innermost runtime complexity wrt. defined symbols {rev#,rev1#,rev2#} and constructors {0,cons,nil,s} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {2,4,5,7} by application of Pre({2,4,5,7}) = {1,3,6}. Here rules are labelled as follows: 1: rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) 2: rev#(nil()) -> c_2() 3: rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) 4: rev1#(0(),nil()) -> c_4() 5: rev1#(s(X),nil()) -> c_5() 6: rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) 7: rev2#(X,nil()) -> c_7() * Step 3: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) - Weak DPs: rev#(nil()) -> c_2() rev1#(0(),nil()) -> c_4() rev1#(s(X),nil()) -> c_5() rev2#(X,nil()) -> c_7() - Weak TRS: rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L)) rev(nil()) -> nil() rev1(X,cons(Y,L)) -> rev1(Y,L) rev1(0(),nil()) -> 0() rev1(s(X),nil()) -> s(X) rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L)))) rev2(X,nil()) -> nil() - Signature: {rev/1,rev1/2,rev2/2,rev#/1,rev1#/2,rev2#/2} / {0/0,cons/2,nil/0,s/1,c_1/2,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3 ,c_7/0} - Obligation: innermost runtime complexity wrt. defined symbols {rev#,rev1#,rev2#} and constructors {0,cons,nil,s} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) -->_2 rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)):3 -->_1 rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)):2 -->_2 rev2#(X,nil()) -> c_7():7 -->_1 rev1#(s(X),nil()) -> c_5():6 -->_1 rev1#(0(),nil()) -> c_4():5 2:S:rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) -->_1 rev1#(s(X),nil()) -> c_5():6 -->_1 rev1#(0(),nil()) -> c_4():5 -->_1 rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)):2 3:S:rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) -->_3 rev2#(X,nil()) -> c_7():7 -->_2 rev#(nil()) -> c_2():4 -->_3 rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)):3 -->_2 rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)):1 -->_1 rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)):1 4:W:rev#(nil()) -> c_2() 5:W:rev1#(0(),nil()) -> c_4() 6:W:rev1#(s(X),nil()) -> c_5() 7:W:rev2#(X,nil()) -> c_7() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 5: rev1#(0(),nil()) -> c_4() 6: rev1#(s(X),nil()) -> c_5() 4: rev#(nil()) -> c_2() 7: rev2#(X,nil()) -> c_7() * Step 4: Failure MAYBE + Considered Problem: - Strict DPs: rev#(cons(X,L)) -> c_1(rev1#(X,L),rev2#(X,L)) rev1#(X,cons(Y,L)) -> c_3(rev1#(Y,L)) rev2#(X,cons(Y,L)) -> c_6(rev#(cons(X,rev(rev2(Y,L)))),rev#(rev2(Y,L)),rev2#(Y,L)) - Weak TRS: rev(cons(X,L)) -> cons(rev1(X,L),rev2(X,L)) rev(nil()) -> nil() rev1(X,cons(Y,L)) -> rev1(Y,L) rev1(0(),nil()) -> 0() rev1(s(X),nil()) -> s(X) rev2(X,cons(Y,L)) -> rev(cons(X,rev(rev2(Y,L)))) rev2(X,nil()) -> nil() - Signature: {rev/1,rev1/2,rev2/2,rev#/1,rev1#/2,rev2#/2} / {0/0,cons/2,nil/0,s/1,c_1/2,c_2/0,c_3/1,c_4/0,c_5/0,c_6/3 ,c_7/0} - Obligation: innermost runtime complexity wrt. defined symbols {rev#,rev1#,rev2#} and constructors {0,cons,nil,s} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE