MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { active(from(X)) -> from(active(X)) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(s(X)) -> s(active(X)) , active(head(X)) -> head(active(X)) , active(head(cons(X, XS))) -> mark(X) , active(2nd(X)) -> 2nd(active(X)) , active(2nd(cons(X, XS))) -> mark(head(XS)) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) , active(take(0(), XS)) -> mark(nil()) , active(sel(X1, X2)) -> sel(X1, active(X2)) , active(sel(X1, X2)) -> sel(active(X1), X2) , active(sel(s(N), cons(X, XS))) -> mark(sel(N, XS)) , active(sel(0(), cons(X, XS))) -> mark(X) , from(mark(X)) -> mark(from(X)) , from(ok(X)) -> ok(from(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , head(mark(X)) -> mark(head(X)) , head(ok(X)) -> ok(head(X)) , 2nd(mark(X)) -> mark(2nd(X)) , 2nd(ok(X)) -> ok(2nd(X)) , take(X1, mark(X2)) -> mark(take(X1, X2)) , take(mark(X1), X2) -> mark(take(X1, X2)) , take(ok(X1), ok(X2)) -> ok(take(X1, X2)) , sel(X1, mark(X2)) -> mark(sel(X1, X2)) , sel(mark(X1), X2) -> mark(sel(X1, X2)) , sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) , proper(from(X)) -> from(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(s(X)) -> s(proper(X)) , proper(head(X)) -> head(proper(X)) , proper(2nd(X)) -> 2nd(proper(X)) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(nil()) -> ok(nil()) , proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'WithProblem (timeout of 60 seconds)' failed due to the following reason: Computation stopped due to timeout after 60.0 seconds. 2) 'Best' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'WithProblem (timeout of 30 seconds) (timeout of 60 seconds)' failed due to the following reason: Computation stopped due to timeout after 30.0 seconds. 2) 'Best' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'bsearch-popstar (timeout of 60 seconds)' failed due to the following reason: The processor is inapplicable, reason: Processor only applicable for innermost runtime complexity analysis 2) 'Polynomial Path Order (PS) (timeout of 60 seconds)' failed due to the following reason: The processor is inapplicable, reason: Processor only applicable for innermost runtime complexity analysis 3) 'Fastest (timeout of 5 seconds) (timeout of 60 seconds)' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) 'Bounds with perSymbol-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 2) 'Bounds with minimal-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 3) 'Innermost Weak Dependency Pairs (timeout of 60 seconds)' failed due to the following reason: We add the following weak dependency pairs: Strict DPs: { active^#(from(X)) -> c_1(from^#(active(X))) , active^#(from(X)) -> c_2(cons^#(X, from(s(X)))) , active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) , active^#(s(X)) -> c_4(s^#(active(X))) , active^#(head(X)) -> c_5(head^#(active(X))) , active^#(head(cons(X, XS))) -> c_6(X) , active^#(2nd(X)) -> c_7(2nd^#(active(X))) , active^#(2nd(cons(X, XS))) -> c_8(head^#(XS)) , active^#(take(X1, X2)) -> c_9(take^#(X1, active(X2))) , active^#(take(X1, X2)) -> c_10(take^#(active(X1), X2)) , active^#(take(s(N), cons(X, XS))) -> c_11(cons^#(X, take(N, XS))) , active^#(take(0(), XS)) -> c_12() , active^#(sel(X1, X2)) -> c_13(sel^#(X1, active(X2))) , active^#(sel(X1, X2)) -> c_14(sel^#(active(X1), X2)) , active^#(sel(s(N), cons(X, XS))) -> c_15(sel^#(N, XS)) , active^#(sel(0(), cons(X, XS))) -> c_16(X) , from^#(mark(X)) -> c_17(from^#(X)) , from^#(ok(X)) -> c_18(from^#(X)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , s^#(mark(X)) -> c_21(s^#(X)) , s^#(ok(X)) -> c_22(s^#(X)) , head^#(mark(X)) -> c_23(head^#(X)) , head^#(ok(X)) -> c_24(head^#(X)) , 2nd^#(mark(X)) -> c_25(2nd^#(X)) , 2nd^#(ok(X)) -> c_26(2nd^#(X)) , take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) , sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) , sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) , sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) , proper^#(from(X)) -> c_33(from^#(proper(X))) , proper^#(cons(X1, X2)) -> c_34(cons^#(proper(X1), proper(X2))) , proper^#(s(X)) -> c_35(s^#(proper(X))) , proper^#(head(X)) -> c_36(head^#(proper(X))) , proper^#(2nd(X)) -> c_37(2nd^#(proper(X))) , proper^#(take(X1, X2)) -> c_38(take^#(proper(X1), proper(X2))) , proper^#(0()) -> c_39() , proper^#(nil()) -> c_40() , proper^#(sel(X1, X2)) -> c_41(sel^#(proper(X1), proper(X2))) , top^#(mark(X)) -> c_42(top^#(proper(X))) , top^#(ok(X)) -> c_43(top^#(active(X))) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { active^#(from(X)) -> c_1(from^#(active(X))) , active^#(from(X)) -> c_2(cons^#(X, from(s(X)))) , active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) , active^#(s(X)) -> c_4(s^#(active(X))) , active^#(head(X)) -> c_5(head^#(active(X))) , active^#(head(cons(X, XS))) -> c_6(X) , active^#(2nd(X)) -> c_7(2nd^#(active(X))) , active^#(2nd(cons(X, XS))) -> c_8(head^#(XS)) , active^#(take(X1, X2)) -> c_9(take^#(X1, active(X2))) , active^#(take(X1, X2)) -> c_10(take^#(active(X1), X2)) , active^#(take(s(N), cons(X, XS))) -> c_11(cons^#(X, take(N, XS))) , active^#(take(0(), XS)) -> c_12() , active^#(sel(X1, X2)) -> c_13(sel^#(X1, active(X2))) , active^#(sel(X1, X2)) -> c_14(sel^#(active(X1), X2)) , active^#(sel(s(N), cons(X, XS))) -> c_15(sel^#(N, XS)) , active^#(sel(0(), cons(X, XS))) -> c_16(X) , from^#(mark(X)) -> c_17(from^#(X)) , from^#(ok(X)) -> c_18(from^#(X)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , s^#(mark(X)) -> c_21(s^#(X)) , s^#(ok(X)) -> c_22(s^#(X)) , head^#(mark(X)) -> c_23(head^#(X)) , head^#(ok(X)) -> c_24(head^#(X)) , 2nd^#(mark(X)) -> c_25(2nd^#(X)) , 2nd^#(ok(X)) -> c_26(2nd^#(X)) , take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) , sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) , sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) , sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) , proper^#(from(X)) -> c_33(from^#(proper(X))) , proper^#(cons(X1, X2)) -> c_34(cons^#(proper(X1), proper(X2))) , proper^#(s(X)) -> c_35(s^#(proper(X))) , proper^#(head(X)) -> c_36(head^#(proper(X))) , proper^#(2nd(X)) -> c_37(2nd^#(proper(X))) , proper^#(take(X1, X2)) -> c_38(take^#(proper(X1), proper(X2))) , proper^#(0()) -> c_39() , proper^#(nil()) -> c_40() , proper^#(sel(X1, X2)) -> c_41(sel^#(proper(X1), proper(X2))) , top^#(mark(X)) -> c_42(top^#(proper(X))) , top^#(ok(X)) -> c_43(top^#(active(X))) } Strict Trs: { active(from(X)) -> from(active(X)) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(s(X)) -> s(active(X)) , active(head(X)) -> head(active(X)) , active(head(cons(X, XS))) -> mark(X) , active(2nd(X)) -> 2nd(active(X)) , active(2nd(cons(X, XS))) -> mark(head(XS)) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) , active(take(0(), XS)) -> mark(nil()) , active(sel(X1, X2)) -> sel(X1, active(X2)) , active(sel(X1, X2)) -> sel(active(X1), X2) , active(sel(s(N), cons(X, XS))) -> mark(sel(N, XS)) , active(sel(0(), cons(X, XS))) -> mark(X) , from(mark(X)) -> mark(from(X)) , from(ok(X)) -> ok(from(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , head(mark(X)) -> mark(head(X)) , head(ok(X)) -> ok(head(X)) , 2nd(mark(X)) -> mark(2nd(X)) , 2nd(ok(X)) -> ok(2nd(X)) , take(X1, mark(X2)) -> mark(take(X1, X2)) , take(mark(X1), X2) -> mark(take(X1, X2)) , take(ok(X1), ok(X2)) -> ok(take(X1, X2)) , sel(X1, mark(X2)) -> mark(sel(X1, X2)) , sel(mark(X1), X2) -> mark(sel(X1, X2)) , sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) , proper(from(X)) -> from(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(s(X)) -> s(proper(X)) , proper(head(X)) -> head(proper(X)) , proper(2nd(X)) -> 2nd(proper(X)) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(nil()) -> ok(nil()) , proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE Consider the dependency graph: 1: active^#(from(X)) -> c_1(from^#(active(X))) -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 2: active^#(from(X)) -> c_2(cons^#(X, from(s(X)))) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 3: active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 4: active^#(s(X)) -> c_4(s^#(active(X))) -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 5: active^#(head(X)) -> c_5(head^#(active(X))) -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 6: active^#(head(cons(X, XS))) -> c_6(X) -->_1 top^#(ok(X)) -> c_43(top^#(active(X))) :43 -->_1 top^#(mark(X)) -> c_42(top^#(proper(X))) :42 -->_1 proper^#(sel(X1, X2)) -> c_41(sel^#(proper(X1), proper(X2))) :41 -->_1 proper^#(take(X1, X2)) -> c_38(take^#(proper(X1), proper(X2))) :38 -->_1 proper^#(2nd(X)) -> c_37(2nd^#(proper(X))) :37 -->_1 proper^#(head(X)) -> c_36(head^#(proper(X))) :36 -->_1 proper^#(s(X)) -> c_35(s^#(proper(X))) :35 -->_1 proper^#(cons(X1, X2)) -> c_34(cons^#(proper(X1), proper(X2))) :34 -->_1 proper^#(from(X)) -> c_33(from^#(proper(X))) :33 -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 -->_1 active^#(sel(0(), cons(X, XS))) -> c_16(X) :16 -->_1 active^#(sel(s(N), cons(X, XS))) -> c_15(sel^#(N, XS)) :15 -->_1 active^#(sel(X1, X2)) -> c_14(sel^#(active(X1), X2)) :14 -->_1 active^#(sel(X1, X2)) -> c_13(sel^#(X1, active(X2))) :13 -->_1 active^#(take(s(N), cons(X, XS))) -> c_11(cons^#(X, take(N, XS))) :11 -->_1 active^#(take(X1, X2)) -> c_10(take^#(active(X1), X2)) :10 -->_1 active^#(take(X1, X2)) -> c_9(take^#(X1, active(X2))) :9 -->_1 active^#(2nd(cons(X, XS))) -> c_8(head^#(XS)) :8 -->_1 active^#(2nd(X)) -> c_7(2nd^#(active(X))) :7 -->_1 proper^#(nil()) -> c_40() :40 -->_1 proper^#(0()) -> c_39() :39 -->_1 active^#(take(0(), XS)) -> c_12() :12 -->_1 active^#(head(cons(X, XS))) -> c_6(X) :6 -->_1 active^#(head(X)) -> c_5(head^#(active(X))) :5 -->_1 active^#(s(X)) -> c_4(s^#(active(X))) :4 -->_1 active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) :3 -->_1 active^#(from(X)) -> c_2(cons^#(X, from(s(X)))) :2 -->_1 active^#(from(X)) -> c_1(from^#(active(X))) :1 7: active^#(2nd(X)) -> c_7(2nd^#(active(X))) -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 8: active^#(2nd(cons(X, XS))) -> c_8(head^#(XS)) -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 9: active^#(take(X1, X2)) -> c_9(take^#(X1, active(X2))) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 10: active^#(take(X1, X2)) -> c_10(take^#(active(X1), X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 11: active^#(take(s(N), cons(X, XS))) -> c_11(cons^#(X, take(N, XS))) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 12: active^#(take(0(), XS)) -> c_12() 13: active^#(sel(X1, X2)) -> c_13(sel^#(X1, active(X2))) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 14: active^#(sel(X1, X2)) -> c_14(sel^#(active(X1), X2)) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 15: active^#(sel(s(N), cons(X, XS))) -> c_15(sel^#(N, XS)) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 16: active^#(sel(0(), cons(X, XS))) -> c_16(X) -->_1 top^#(ok(X)) -> c_43(top^#(active(X))) :43 -->_1 top^#(mark(X)) -> c_42(top^#(proper(X))) :42 -->_1 proper^#(sel(X1, X2)) -> c_41(sel^#(proper(X1), proper(X2))) :41 -->_1 proper^#(take(X1, X2)) -> c_38(take^#(proper(X1), proper(X2))) :38 -->_1 proper^#(2nd(X)) -> c_37(2nd^#(proper(X))) :37 -->_1 proper^#(head(X)) -> c_36(head^#(proper(X))) :36 -->_1 proper^#(s(X)) -> c_35(s^#(proper(X))) :35 -->_1 proper^#(cons(X1, X2)) -> c_34(cons^#(proper(X1), proper(X2))) :34 -->_1 proper^#(from(X)) -> c_33(from^#(proper(X))) :33 -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 -->_1 proper^#(nil()) -> c_40() :40 -->_1 proper^#(0()) -> c_39() :39 -->_1 active^#(sel(0(), cons(X, XS))) -> c_16(X) :16 -->_1 active^#(sel(s(N), cons(X, XS))) -> c_15(sel^#(N, XS)) :15 -->_1 active^#(sel(X1, X2)) -> c_14(sel^#(active(X1), X2)) :14 -->_1 active^#(sel(X1, X2)) -> c_13(sel^#(X1, active(X2))) :13 -->_1 active^#(take(0(), XS)) -> c_12() :12 -->_1 active^#(take(s(N), cons(X, XS))) -> c_11(cons^#(X, take(N, XS))) :11 -->_1 active^#(take(X1, X2)) -> c_10(take^#(active(X1), X2)) :10 -->_1 active^#(take(X1, X2)) -> c_9(take^#(X1, active(X2))) :9 -->_1 active^#(2nd(cons(X, XS))) -> c_8(head^#(XS)) :8 -->_1 active^#(2nd(X)) -> c_7(2nd^#(active(X))) :7 -->_1 active^#(head(cons(X, XS))) -> c_6(X) :6 -->_1 active^#(head(X)) -> c_5(head^#(active(X))) :5 -->_1 active^#(s(X)) -> c_4(s^#(active(X))) :4 -->_1 active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) :3 -->_1 active^#(from(X)) -> c_2(cons^#(X, from(s(X)))) :2 -->_1 active^#(from(X)) -> c_1(from^#(active(X))) :1 17: from^#(mark(X)) -> c_17(from^#(X)) -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 18: from^#(ok(X)) -> c_18(from^#(X)) -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 19: cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 20: cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 21: s^#(mark(X)) -> c_21(s^#(X)) -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 22: s^#(ok(X)) -> c_22(s^#(X)) -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 23: head^#(mark(X)) -> c_23(head^#(X)) -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 24: head^#(ok(X)) -> c_24(head^#(X)) -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 25: 2nd^#(mark(X)) -> c_25(2nd^#(X)) -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 26: 2nd^#(ok(X)) -> c_26(2nd^#(X)) -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 27: take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 28: take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 29: take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 30: sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 31: sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 32: sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 33: proper^#(from(X)) -> c_33(from^#(proper(X))) -->_1 from^#(ok(X)) -> c_18(from^#(X)) :18 -->_1 from^#(mark(X)) -> c_17(from^#(X)) :17 34: proper^#(cons(X1, X2)) -> c_34(cons^#(proper(X1), proper(X2))) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 35: proper^#(s(X)) -> c_35(s^#(proper(X))) -->_1 s^#(ok(X)) -> c_22(s^#(X)) :22 -->_1 s^#(mark(X)) -> c_21(s^#(X)) :21 36: proper^#(head(X)) -> c_36(head^#(proper(X))) -->_1 head^#(ok(X)) -> c_24(head^#(X)) :24 -->_1 head^#(mark(X)) -> c_23(head^#(X)) :23 37: proper^#(2nd(X)) -> c_37(2nd^#(proper(X))) -->_1 2nd^#(ok(X)) -> c_26(2nd^#(X)) :26 -->_1 2nd^#(mark(X)) -> c_25(2nd^#(X)) :25 38: proper^#(take(X1, X2)) -> c_38(take^#(proper(X1), proper(X2))) -->_1 take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) :29 -->_1 take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) :28 -->_1 take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) :27 39: proper^#(0()) -> c_39() 40: proper^#(nil()) -> c_40() 41: proper^#(sel(X1, X2)) -> c_41(sel^#(proper(X1), proper(X2))) -->_1 sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) :32 -->_1 sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) :31 -->_1 sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) :30 42: top^#(mark(X)) -> c_42(top^#(proper(X))) -->_1 top^#(ok(X)) -> c_43(top^#(active(X))) :43 -->_1 top^#(mark(X)) -> c_42(top^#(proper(X))) :42 43: top^#(ok(X)) -> c_43(top^#(active(X))) -->_1 top^#(ok(X)) -> c_43(top^#(active(X))) :43 -->_1 top^#(mark(X)) -> c_42(top^#(proper(X))) :42 Only the nodes {17,18,19,20,21,22,23,24,25,26,27,29,28,30,32,31,39,40,42,43} are reachable from nodes {17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,39,40,42,43} that start derivation from marked basic terms. The nodes not reachable are removed from the problem. We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { from^#(mark(X)) -> c_17(from^#(X)) , from^#(ok(X)) -> c_18(from^#(X)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , s^#(mark(X)) -> c_21(s^#(X)) , s^#(ok(X)) -> c_22(s^#(X)) , head^#(mark(X)) -> c_23(head^#(X)) , head^#(ok(X)) -> c_24(head^#(X)) , 2nd^#(mark(X)) -> c_25(2nd^#(X)) , 2nd^#(ok(X)) -> c_26(2nd^#(X)) , take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) , sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) , sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) , sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) , proper^#(0()) -> c_39() , proper^#(nil()) -> c_40() , top^#(mark(X)) -> c_42(top^#(proper(X))) , top^#(ok(X)) -> c_43(top^#(active(X))) } Strict Trs: { active(from(X)) -> from(active(X)) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(s(X)) -> s(active(X)) , active(head(X)) -> head(active(X)) , active(head(cons(X, XS))) -> mark(X) , active(2nd(X)) -> 2nd(active(X)) , active(2nd(cons(X, XS))) -> mark(head(XS)) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) , active(take(0(), XS)) -> mark(nil()) , active(sel(X1, X2)) -> sel(X1, active(X2)) , active(sel(X1, X2)) -> sel(active(X1), X2) , active(sel(s(N), cons(X, XS))) -> mark(sel(N, XS)) , active(sel(0(), cons(X, XS))) -> mark(X) , from(mark(X)) -> mark(from(X)) , from(ok(X)) -> ok(from(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , head(mark(X)) -> mark(head(X)) , head(ok(X)) -> ok(head(X)) , 2nd(mark(X)) -> mark(2nd(X)) , 2nd(ok(X)) -> ok(2nd(X)) , take(X1, mark(X2)) -> mark(take(X1, X2)) , take(mark(X1), X2) -> mark(take(X1, X2)) , take(ok(X1), ok(X2)) -> ok(take(X1, X2)) , sel(X1, mark(X2)) -> mark(sel(X1, X2)) , sel(mark(X1), X2) -> mark(sel(X1, X2)) , sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) , proper(from(X)) -> from(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(s(X)) -> s(proper(X)) , proper(head(X)) -> head(proper(X)) , proper(2nd(X)) -> 2nd(proper(X)) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(nil()) -> ok(nil()) , proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE We estimate the number of application of {17,18} by applications of Pre({17,18}) = {}. Here rules are labeled as follows: DPs: { 1: from^#(mark(X)) -> c_17(from^#(X)) , 2: from^#(ok(X)) -> c_18(from^#(X)) , 3: cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , 4: cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , 5: s^#(mark(X)) -> c_21(s^#(X)) , 6: s^#(ok(X)) -> c_22(s^#(X)) , 7: head^#(mark(X)) -> c_23(head^#(X)) , 8: head^#(ok(X)) -> c_24(head^#(X)) , 9: 2nd^#(mark(X)) -> c_25(2nd^#(X)) , 10: 2nd^#(ok(X)) -> c_26(2nd^#(X)) , 11: take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) , 12: take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) , 13: take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) , 14: sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) , 15: sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) , 16: sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) , 17: proper^#(0()) -> c_39() , 18: proper^#(nil()) -> c_40() , 19: top^#(mark(X)) -> c_42(top^#(proper(X))) , 20: top^#(ok(X)) -> c_43(top^#(active(X))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { from^#(mark(X)) -> c_17(from^#(X)) , from^#(ok(X)) -> c_18(from^#(X)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , s^#(mark(X)) -> c_21(s^#(X)) , s^#(ok(X)) -> c_22(s^#(X)) , head^#(mark(X)) -> c_23(head^#(X)) , head^#(ok(X)) -> c_24(head^#(X)) , 2nd^#(mark(X)) -> c_25(2nd^#(X)) , 2nd^#(ok(X)) -> c_26(2nd^#(X)) , take^#(X1, mark(X2)) -> c_27(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_28(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_29(take^#(X1, X2)) , sel^#(X1, mark(X2)) -> c_30(sel^#(X1, X2)) , sel^#(mark(X1), X2) -> c_31(sel^#(X1, X2)) , sel^#(ok(X1), ok(X2)) -> c_32(sel^#(X1, X2)) , top^#(mark(X)) -> c_42(top^#(proper(X))) , top^#(ok(X)) -> c_43(top^#(active(X))) } Strict Trs: { active(from(X)) -> from(active(X)) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(s(X)) -> s(active(X)) , active(head(X)) -> head(active(X)) , active(head(cons(X, XS))) -> mark(X) , active(2nd(X)) -> 2nd(active(X)) , active(2nd(cons(X, XS))) -> mark(head(XS)) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(s(N), cons(X, XS))) -> mark(cons(X, take(N, XS))) , active(take(0(), XS)) -> mark(nil()) , active(sel(X1, X2)) -> sel(X1, active(X2)) , active(sel(X1, X2)) -> sel(active(X1), X2) , active(sel(s(N), cons(X, XS))) -> mark(sel(N, XS)) , active(sel(0(), cons(X, XS))) -> mark(X) , from(mark(X)) -> mark(from(X)) , from(ok(X)) -> ok(from(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , head(mark(X)) -> mark(head(X)) , head(ok(X)) -> ok(head(X)) , 2nd(mark(X)) -> mark(2nd(X)) , 2nd(ok(X)) -> ok(2nd(X)) , take(X1, mark(X2)) -> mark(take(X1, X2)) , take(mark(X1), X2) -> mark(take(X1, X2)) , take(ok(X1), ok(X2)) -> ok(take(X1, X2)) , sel(X1, mark(X2)) -> mark(sel(X1, X2)) , sel(mark(X1), X2) -> mark(sel(X1, X2)) , sel(ok(X1), ok(X2)) -> ok(sel(X1, X2)) , proper(from(X)) -> from(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(s(X)) -> s(proper(X)) , proper(head(X)) -> head(proper(X)) , proper(2nd(X)) -> 2nd(proper(X)) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(nil()) -> ok(nil()) , proper(sel(X1, X2)) -> sel(proper(X1), proper(X2)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Weak DPs: { proper^#(0()) -> c_39() , proper^#(nil()) -> c_40() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..