MAYBE * Step 1: DependencyPairs MAYBE + Considered Problem: - Strict TRS: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) - Signature: {active/1,cons/2,from/1,length/1,length1/1,proper/1,s/1,top/1} / {0/0,mark/1,nil/0,ok/1} - Obligation: innermost runtime complexity wrt. defined symbols {active,cons,from,length,length1,proper,s ,top} and constructors {0,mark,nil,ok} + Applied Processor: DependencyPairs {dpKind_ = DT} + Details: We add the following dependency tuples: Strict DPs active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length(nil())) -> c_5() active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(0()) -> c_14() proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(nil()) -> c_19() proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) Weak DPs and mark the set of starting terms. * Step 2: UsableRules MAYBE + Considered Problem: - Strict DPs: active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length(nil())) -> c_5() active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(0()) -> c_14() proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(nil()) -> c_19() proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) - Weak TRS: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) - Signature: {active/1,cons/2,from/1,length/1,length1/1,proper/1,s/1,top/1,active#/1,cons#/2,from#/1,length#/1,length1#/1 ,proper#/1,s#/1,top#/1} / {0/0,mark/1,nil/0,ok/1,c_1/2,c_2/2,c_3/3,c_4/2,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1 ,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/3,c_16/2,c_17/2,c_18/2,c_19/0,c_20/2,c_21/1,c_22/1,c_23/2,c_24/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,cons#,from#,length#,length1#,proper#,s# ,top#} and constructors {0,mark,nil,ok} + Applied Processor: UsableRules + Details: We replace rewrite rules by usable rules: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length(nil())) -> c_5() active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(0()) -> c_14() proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(nil()) -> c_19() proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) * Step 3: PredecessorEstimation MAYBE + Considered Problem: - Strict DPs: active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length(nil())) -> c_5() active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(0()) -> c_14() proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(nil()) -> c_19() proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) - Weak TRS: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) - Signature: {active/1,cons/2,from/1,length/1,length1/1,proper/1,s/1,top/1,active#/1,cons#/2,from#/1,length#/1,length1#/1 ,proper#/1,s#/1,top#/1} / {0/0,mark/1,nil/0,ok/1,c_1/2,c_2/2,c_3/3,c_4/2,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1 ,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/3,c_16/2,c_17/2,c_18/2,c_19/0,c_20/2,c_21/1,c_22/1,c_23/2,c_24/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,cons#,from#,length#,length1#,proper#,s# ,top#} and constructors {0,mark,nil,ok} + Applied Processor: PredecessorEstimation {onSelection = all simple predecessor estimation selector} + Details: We estimate the number of application of {5,14,19} by application of Pre({5,14,19}) = {1,2,7,15,16,17,18,20,23,24}. Here rules are labelled as follows: 1: active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) 2: active#(from(X)) -> c_2(from#(active(X)),active#(X)) 3: active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) 4: active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) 5: active#(length(nil())) -> c_5() 6: active#(length1(X)) -> c_6(length#(X)) 7: active#(s(X)) -> c_7(s#(active(X)),active#(X)) 8: cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) 9: cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) 10: from#(mark(X)) -> c_10(from#(X)) 11: from#(ok(X)) -> c_11(from#(X)) 12: length#(ok(X)) -> c_12(length#(X)) 13: length1#(ok(X)) -> c_13(length1#(X)) 14: proper#(0()) -> c_14() 15: proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) 16: proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) 17: proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) 18: proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) 19: proper#(nil()) -> c_19() 20: proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) 21: s#(mark(X)) -> c_21(s#(X)) 22: s#(ok(X)) -> c_22(s#(X)) 23: top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) 24: top#(ok(X)) -> c_24(top#(active(X)),active#(X)) * Step 4: RemoveWeakSuffixes MAYBE + Considered Problem: - Strict DPs: active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) - Weak DPs: active#(length(nil())) -> c_5() proper#(0()) -> c_14() proper#(nil()) -> c_19() - Weak TRS: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) - Signature: {active/1,cons/2,from/1,length/1,length1/1,proper/1,s/1,top/1,active#/1,cons#/2,from#/1,length#/1,length1#/1 ,proper#/1,s#/1,top#/1} / {0/0,mark/1,nil/0,ok/1,c_1/2,c_2/2,c_3/3,c_4/2,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1 ,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/3,c_16/2,c_17/2,c_18/2,c_19/0,c_20/2,c_21/1,c_22/1,c_23/2,c_24/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,cons#,from#,length#,length1#,proper#,s# ,top#} and constructors {0,mark,nil,ok} + Applied Processor: RemoveWeakSuffixes + Details: Consider the dependency graph 1:S:active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) -->_1 cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)):8 -->_1 cons#(mark(X1),X2) -> c_8(cons#(X1,X2)):7 -->_2 active#(s(X)) -> c_7(s#(active(X)),active#(X)):6 -->_2 active#(length1(X)) -> c_6(length#(X)):5 -->_2 active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)):4 -->_2 active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)):3 -->_2 active#(from(X)) -> c_2(from#(active(X)),active#(X)):2 -->_2 active#(length(nil())) -> c_5():22 -->_2 active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)):1 2:S:active#(from(X)) -> c_2(from#(active(X)),active#(X)) -->_1 from#(ok(X)) -> c_11(from#(X)):10 -->_1 from#(mark(X)) -> c_10(from#(X)):9 -->_2 active#(s(X)) -> c_7(s#(active(X)),active#(X)):6 -->_2 active#(length1(X)) -> c_6(length#(X)):5 -->_2 active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)):4 -->_2 active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)):3 -->_2 active#(length(nil())) -> c_5():22 -->_2 active#(from(X)) -> c_2(from#(active(X)),active#(X)):2 -->_2 active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)):1 3:S:active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) -->_3 s#(ok(X)) -> c_22(s#(X)):19 -->_3 s#(mark(X)) -> c_21(s#(X)):18 -->_2 from#(ok(X)) -> c_11(from#(X)):10 -->_2 from#(mark(X)) -> c_10(from#(X)):9 -->_1 cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)):8 -->_1 cons#(mark(X1),X2) -> c_8(cons#(X1,X2)):7 4:S:active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) -->_1 s#(ok(X)) -> c_22(s#(X)):19 -->_1 s#(mark(X)) -> c_21(s#(X)):18 -->_2 length1#(ok(X)) -> c_13(length1#(X)):12 5:S:active#(length1(X)) -> c_6(length#(X)) -->_1 length#(ok(X)) -> c_12(length#(X)):11 6:S:active#(s(X)) -> c_7(s#(active(X)),active#(X)) -->_1 s#(ok(X)) -> c_22(s#(X)):19 -->_1 s#(mark(X)) -> c_21(s#(X)):18 -->_2 active#(length(nil())) -> c_5():22 -->_2 active#(s(X)) -> c_7(s#(active(X)),active#(X)):6 -->_2 active#(length1(X)) -> c_6(length#(X)):5 -->_2 active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)):4 -->_2 active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)):3 -->_2 active#(from(X)) -> c_2(from#(active(X)),active#(X)):2 -->_2 active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)):1 7:S:cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) -->_1 cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)):8 -->_1 cons#(mark(X1),X2) -> c_8(cons#(X1,X2)):7 8:S:cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) -->_1 cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)):8 -->_1 cons#(mark(X1),X2) -> c_8(cons#(X1,X2)):7 9:S:from#(mark(X)) -> c_10(from#(X)) -->_1 from#(ok(X)) -> c_11(from#(X)):10 -->_1 from#(mark(X)) -> c_10(from#(X)):9 10:S:from#(ok(X)) -> c_11(from#(X)) -->_1 from#(ok(X)) -> c_11(from#(X)):10 -->_1 from#(mark(X)) -> c_10(from#(X)):9 11:S:length#(ok(X)) -> c_12(length#(X)) -->_1 length#(ok(X)) -> c_12(length#(X)):11 12:S:length1#(ok(X)) -> c_13(length1#(X)) -->_1 length1#(ok(X)) -> c_13(length1#(X)):12 13:S:proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) -->_3 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_3 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_3 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_3 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_3 proper#(nil()) -> c_19():24 -->_2 proper#(nil()) -> c_19():24 -->_3 proper#(0()) -> c_14():23 -->_2 proper#(0()) -> c_14():23 -->_3 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 -->_1 cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)):8 -->_1 cons#(mark(X1),X2) -> c_8(cons#(X1,X2)):7 14:S:proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(nil()) -> c_19():24 -->_2 proper#(0()) -> c_14():23 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 -->_1 from#(ok(X)) -> c_11(from#(X)):10 -->_1 from#(mark(X)) -> c_10(from#(X)):9 15:S:proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(nil()) -> c_19():24 -->_2 proper#(0()) -> c_14():23 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 -->_1 length#(ok(X)) -> c_12(length#(X)):11 16:S:proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(nil()) -> c_19():24 -->_2 proper#(0()) -> c_14():23 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 -->_1 length1#(ok(X)) -> c_13(length1#(X)):12 17:S:proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) -->_1 s#(ok(X)) -> c_22(s#(X)):19 -->_1 s#(mark(X)) -> c_21(s#(X)):18 -->_2 proper#(nil()) -> c_19():24 -->_2 proper#(0()) -> c_14():23 -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 18:S:s#(mark(X)) -> c_21(s#(X)) -->_1 s#(ok(X)) -> c_22(s#(X)):19 -->_1 s#(mark(X)) -> c_21(s#(X)):18 19:S:s#(ok(X)) -> c_22(s#(X)) -->_1 s#(ok(X)) -> c_22(s#(X)):19 -->_1 s#(mark(X)) -> c_21(s#(X)):18 20:S:top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) -->_1 top#(ok(X)) -> c_24(top#(active(X)),active#(X)):21 -->_2 proper#(nil()) -> c_19():24 -->_2 proper#(0()) -> c_14():23 -->_1 top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)):20 -->_2 proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)):17 -->_2 proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)):16 -->_2 proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)):15 -->_2 proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)):14 -->_2 proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)):13 21:S:top#(ok(X)) -> c_24(top#(active(X)),active#(X)) -->_2 active#(length(nil())) -> c_5():22 -->_1 top#(ok(X)) -> c_24(top#(active(X)),active#(X)):21 -->_1 top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)):20 -->_2 active#(s(X)) -> c_7(s#(active(X)),active#(X)):6 -->_2 active#(length1(X)) -> c_6(length#(X)):5 -->_2 active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)):4 -->_2 active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)):3 -->_2 active#(from(X)) -> c_2(from#(active(X)),active#(X)):2 -->_2 active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)):1 22:W:active#(length(nil())) -> c_5() 23:W:proper#(0()) -> c_14() 24:W:proper#(nil()) -> c_19() The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. 23: proper#(0()) -> c_14() 24: proper#(nil()) -> c_19() 22: active#(length(nil())) -> c_5() * Step 5: Failure MAYBE + Considered Problem: - Strict DPs: active#(cons(X1,X2)) -> c_1(cons#(active(X1),X2),active#(X1)) active#(from(X)) -> c_2(from#(active(X)),active#(X)) active#(from(X)) -> c_3(cons#(X,from(s(X))),from#(s(X)),s#(X)) active#(length(cons(X,Y))) -> c_4(s#(length1(Y)),length1#(Y)) active#(length1(X)) -> c_6(length#(X)) active#(s(X)) -> c_7(s#(active(X)),active#(X)) cons#(mark(X1),X2) -> c_8(cons#(X1,X2)) cons#(ok(X1),ok(X2)) -> c_9(cons#(X1,X2)) from#(mark(X)) -> c_10(from#(X)) from#(ok(X)) -> c_11(from#(X)) length#(ok(X)) -> c_12(length#(X)) length1#(ok(X)) -> c_13(length1#(X)) proper#(cons(X1,X2)) -> c_15(cons#(proper(X1),proper(X2)),proper#(X1),proper#(X2)) proper#(from(X)) -> c_16(from#(proper(X)),proper#(X)) proper#(length(X)) -> c_17(length#(proper(X)),proper#(X)) proper#(length1(X)) -> c_18(length1#(proper(X)),proper#(X)) proper#(s(X)) -> c_20(s#(proper(X)),proper#(X)) s#(mark(X)) -> c_21(s#(X)) s#(ok(X)) -> c_22(s#(X)) top#(mark(X)) -> c_23(top#(proper(X)),proper#(X)) top#(ok(X)) -> c_24(top#(active(X)),active#(X)) - Weak TRS: active(cons(X1,X2)) -> cons(active(X1),X2) active(from(X)) -> from(active(X)) active(from(X)) -> mark(cons(X,from(s(X)))) active(length(cons(X,Y))) -> mark(s(length1(Y))) active(length(nil())) -> mark(0()) active(length1(X)) -> mark(length(X)) active(s(X)) -> s(active(X)) cons(mark(X1),X2) -> mark(cons(X1,X2)) cons(ok(X1),ok(X2)) -> ok(cons(X1,X2)) from(mark(X)) -> mark(from(X)) from(ok(X)) -> ok(from(X)) length(ok(X)) -> ok(length(X)) length1(ok(X)) -> ok(length1(X)) proper(0()) -> ok(0()) proper(cons(X1,X2)) -> cons(proper(X1),proper(X2)) proper(from(X)) -> from(proper(X)) proper(length(X)) -> length(proper(X)) proper(length1(X)) -> length1(proper(X)) proper(nil()) -> ok(nil()) proper(s(X)) -> s(proper(X)) s(mark(X)) -> mark(s(X)) s(ok(X)) -> ok(s(X)) - Signature: {active/1,cons/2,from/1,length/1,length1/1,proper/1,s/1,top/1,active#/1,cons#/2,from#/1,length#/1,length1#/1 ,proper#/1,s#/1,top#/1} / {0/0,mark/1,nil/0,ok/1,c_1/2,c_2/2,c_3/3,c_4/2,c_5/0,c_6/1,c_7/2,c_8/1,c_9/1 ,c_10/1,c_11/1,c_12/1,c_13/1,c_14/0,c_15/3,c_16/2,c_17/2,c_18/2,c_19/0,c_20/2,c_21/1,c_22/1,c_23/2,c_24/2} - Obligation: innermost runtime complexity wrt. defined symbols {active#,cons#,from#,length#,length1#,proper#,s# ,top#} and constructors {0,mark,nil,ok} + Applied Processor: EmptyProcessor + Details: The problem is still open. MAYBE