MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: a__first(X1,X2) -> first(X1,X2) a__first(0(),Z) -> nil() a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__sel(X1,X2) -> sel(X1,X2) a__sel(0(),cons(X,Z)) -> mark(X) a__sel(s(X),cons(Y,Z)) -> a__sel(mark(X),mark(Z)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(nil()) -> nil() mark(s(X)) -> s(mark(X)) mark(sel(X1,X2)) -> a__sel(mark(X1),mark(X2)) - Signature: {a__first/2,a__from/1,a__sel/2,mark/1} / {0/0,cons/2,first/2,from/1,nil/0,s/1,sel/2} - Obligation: innermost runtime complexity wrt. defined symbols {a__first,a__from,a__sel,mark} and constructors {0,cons ,first,from,nil,s,sel} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs a__first#(X1,X2) -> c_1() a__first#(0(),Z) -> c_2() a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) a__from#(X) -> c_4(mark#(X)) a__from#(X) -> c_5() a__sel#(X1,X2) -> c_6() a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) mark#(0()) -> c_9() mark#(cons(X1,X2)) -> c_10(mark#(X1)) mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) mark#(nil()) -> c_13() mark#(s(X)) -> c_14(mark#(X)) mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) Weak DPs and mark the set of starting terms. * Step 2: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: a__first#(X1,X2) -> c_1() a__first#(0(),Z) -> c_2() a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) a__from#(X) -> c_4(mark#(X)) a__from#(X) -> c_5() a__sel#(X1,X2) -> c_6() a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) mark#(0()) -> c_9() mark#(cons(X1,X2)) -> c_10(mark#(X1)) mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) mark#(nil()) -> c_13() mark#(s(X)) -> c_14(mark#(X)) mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) - Weak TRS: a__first(X1,X2) -> first(X1,X2) a__first(0(),Z) -> nil() a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__sel(X1,X2) -> sel(X1,X2) a__sel(0(),cons(X,Z)) -> mark(X) a__sel(s(X),cons(Y,Z)) -> a__sel(mark(X),mark(Z)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(nil()) -> nil() mark(s(X)) -> s(mark(X)) mark(sel(X1,X2)) -> a__sel(mark(X1),mark(X2)) - Signature: {a__first/2,a__from/1,a__sel/2,mark/1,a__first#/2,a__from#/1,a__sel#/2,mark#/1} / {0/0,cons/2,first/2,from/1 ,nil/0,s/1,sel/2,c_1/0,c_2/0,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/3,c_9/0,c_10/1,c_11/3,c_12/2,c_13/0,c_14/1 ,c_15/3} - Obligation: innermost runtime complexity wrt. defined symbols {a__first#,a__from#,a__sel#,mark#} and constructors {0 ,cons,first,from,nil,s,sel} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {1,2,5,6,9,13} by application of Pre({1,2,5,6,9,13}) = {3,4,7,8,10,11,12,14,15}. Here rules are labelled as follows: 1: a__first#(X1,X2) -> c_1() 2: a__first#(0(),Z) -> c_2() 3: a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) 4: a__from#(X) -> c_4(mark#(X)) 5: a__from#(X) -> c_5() 6: a__sel#(X1,X2) -> c_6() 7: a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) 8: a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) 9: mark#(0()) -> c_9() 10: mark#(cons(X1,X2)) -> c_10(mark#(X1)) 11: mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) 12: mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) 13: mark#(nil()) -> c_13() 14: mark#(s(X)) -> c_14(mark#(X)) 15: mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) * Step 3: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) a__from#(X) -> c_4(mark#(X)) a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) mark#(cons(X1,X2)) -> c_10(mark#(X1)) mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) mark#(s(X)) -> c_14(mark#(X)) mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) - Weak DPs: a__first#(X1,X2) -> c_1() a__first#(0(),Z) -> c_2() a__from#(X) -> c_5() a__sel#(X1,X2) -> c_6() mark#(0()) -> c_9() mark#(nil()) -> c_13() - Weak TRS: a__first(X1,X2) -> first(X1,X2) a__first(0(),Z) -> nil() a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__sel(X1,X2) -> sel(X1,X2) a__sel(0(),cons(X,Z)) -> mark(X) a__sel(s(X),cons(Y,Z)) -> a__sel(mark(X),mark(Z)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(nil()) -> nil() mark(s(X)) -> s(mark(X)) mark(sel(X1,X2)) -> a__sel(mark(X1),mark(X2)) - Signature: {a__first/2,a__from/1,a__sel/2,mark/1,a__first#/2,a__from#/1,a__sel#/2,mark#/1} / {0/0,cons/2,first/2,from/1 ,nil/0,s/1,sel/2,c_1/0,c_2/0,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/3,c_9/0,c_10/1,c_11/3,c_12/2,c_13/0,c_14/1 ,c_15/3} - Obligation: innermost runtime complexity wrt. defined symbols {a__first#,a__from#,a__sel#,mark#} and constructors {0 ,cons,first,from,nil,s,sel} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) -->_1 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_1 mark#(s(X)) -> c_14(mark#(X)):8 -->_1 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_1 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_1 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 mark#(nil()) -> c_13():15 -->_1 mark#(0()) -> c_9():14 2:S:a__from#(X) -> c_4(mark#(X)) -->_1 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_1 mark#(s(X)) -> c_14(mark#(X)):8 -->_1 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_1 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_1 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 mark#(nil()) -> c_13():15 -->_1 mark#(0()) -> c_9():14 3:S:a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) -->_1 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_1 mark#(s(X)) -> c_14(mark#(X)):8 -->_1 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_1 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_1 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 mark#(nil()) -> c_13():15 -->_1 mark#(0()) -> c_9():14 4:S:a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) -->_3 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_2 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_3 mark#(s(X)) -> c_14(mark#(X)):8 -->_2 mark#(s(X)) -> c_14(mark#(X)):8 -->_3 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_2 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_3 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_2 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_3 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_2 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_3 mark#(nil()) -> c_13():15 -->_2 mark#(nil()) -> c_13():15 -->_3 mark#(0()) -> c_9():14 -->_2 mark#(0()) -> c_9():14 -->_1 a__sel#(X1,X2) -> c_6():13 -->_1 a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)):4 -->_1 a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)):3 5:S:mark#(cons(X1,X2)) -> c_10(mark#(X1)) -->_1 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_1 mark#(s(X)) -> c_14(mark#(X)):8 -->_1 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_1 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_1 mark#(nil()) -> c_13():15 -->_1 mark#(0()) -> c_9():14 -->_1 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 6:S:mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) -->_3 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_2 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_3 mark#(s(X)) -> c_14(mark#(X)):8 -->_2 mark#(s(X)) -> c_14(mark#(X)):8 -->_3 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_2 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_3 mark#(nil()) -> c_13():15 -->_2 mark#(nil()) -> c_13():15 -->_3 mark#(0()) -> c_9():14 -->_2 mark#(0()) -> c_9():14 -->_1 a__first#(0(),Z) -> c_2():11 -->_1 a__first#(X1,X2) -> c_1():10 -->_3 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_2 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_3 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_2 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)):1 7:S:mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) -->_2 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_2 mark#(s(X)) -> c_14(mark#(X)):8 -->_2 mark#(nil()) -> c_13():15 -->_2 mark#(0()) -> c_9():14 -->_1 a__from#(X) -> c_5():12 -->_2 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_2 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_2 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 a__from#(X) -> c_4(mark#(X)):2 8:S:mark#(s(X)) -> c_14(mark#(X)) -->_1 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_1 mark#(nil()) -> c_13():15 -->_1 mark#(0()) -> c_9():14 -->_1 mark#(s(X)) -> c_14(mark#(X)):8 -->_1 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_1 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_1 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 9:S:mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) -->_3 mark#(nil()) -> c_13():15 -->_2 mark#(nil()) -> c_13():15 -->_3 mark#(0()) -> c_9():14 -->_2 mark#(0()) -> c_9():14 -->_1 a__sel#(X1,X2) -> c_6():13 -->_3 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_2 mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):9 -->_3 mark#(s(X)) -> c_14(mark#(X)):8 -->_2 mark#(s(X)) -> c_14(mark#(X)):8 -->_3 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_2 mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)):7 -->_3 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_2 mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)):6 -->_3 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_2 mark#(cons(X1,X2)) -> c_10(mark#(X1)):5 -->_1 a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)):4 -->_1 a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)):3 10:W:a__first#(X1,X2) -> c_1() 11:W:a__first#(0(),Z) -> c_2() 12:W:a__from#(X) -> c_5() 13:W:a__sel#(X1,X2) -> c_6() 14:W:mark#(0()) -> c_9() 15:W:mark#(nil()) -> c_13() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 10: a__first#(X1,X2) -> c_1() 11: a__first#(0(),Z) -> c_2() 12: a__from#(X) -> c_5() 13: a__sel#(X1,X2) -> c_6() 14: mark#(0()) -> c_9() 15: mark#(nil()) -> c_13() * Step 4: Failure MAYBE + Considered Problem: - Strict DPs: a__first#(s(X),cons(Y,Z)) -> c_3(mark#(Y)) a__from#(X) -> c_4(mark#(X)) a__sel#(0(),cons(X,Z)) -> c_7(mark#(X)) a__sel#(s(X),cons(Y,Z)) -> c_8(a__sel#(mark(X),mark(Z)),mark#(X),mark#(Z)) mark#(cons(X1,X2)) -> c_10(mark#(X1)) mark#(first(X1,X2)) -> c_11(a__first#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) mark#(from(X)) -> c_12(a__from#(mark(X)),mark#(X)) mark#(s(X)) -> c_14(mark#(X)) mark#(sel(X1,X2)) -> c_15(a__sel#(mark(X1),mark(X2)),mark#(X1),mark#(X2)) - Weak TRS: a__first(X1,X2) -> first(X1,X2) a__first(0(),Z) -> nil() a__first(s(X),cons(Y,Z)) -> cons(mark(Y),first(X,Z)) a__from(X) -> cons(mark(X),from(s(X))) a__from(X) -> from(X) a__sel(X1,X2) -> sel(X1,X2) a__sel(0(),cons(X,Z)) -> mark(X) a__sel(s(X),cons(Y,Z)) -> a__sel(mark(X),mark(Z)) mark(0()) -> 0() mark(cons(X1,X2)) -> cons(mark(X1),X2) mark(first(X1,X2)) -> a__first(mark(X1),mark(X2)) mark(from(X)) -> a__from(mark(X)) mark(nil()) -> nil() mark(s(X)) -> s(mark(X)) mark(sel(X1,X2)) -> a__sel(mark(X1),mark(X2)) - Signature: {a__first/2,a__from/1,a__sel/2,mark/1,a__first#/2,a__from#/1,a__sel#/2,mark#/1} / {0/0,cons/2,first/2,from/1 ,nil/0,s/1,sel/2,c_1/0,c_2/0,c_3/1,c_4/1,c_5/0,c_6/0,c_7/1,c_8/3,c_9/0,c_10/1,c_11/3,c_12/2,c_13/0,c_14/1 ,c_15/3} - Obligation: innermost runtime complexity wrt. defined symbols {a__first#,a__from#,a__sel#,mark#} and constructors {0 ,cons,first,from,nil,s,sel} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE