MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { active(app(X1, X2)) -> app(X1, active(X2)) , active(app(X1, X2)) -> app(active(X1), X2) , active(app(nil(), YS)) -> mark(YS) , active(app(cons(X, XS), YS)) -> mark(cons(X, app(XS, YS))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(from(X)) -> from(active(X)) , active(s(X)) -> s(active(X)) , active(zWadr(X1, X2)) -> zWadr(X1, active(X2)) , active(zWadr(X1, X2)) -> zWadr(active(X1), X2) , active(zWadr(XS, nil())) -> mark(nil()) , active(zWadr(nil(), YS)) -> mark(nil()) , active(zWadr(cons(X, XS), cons(Y, YS))) -> mark(cons(app(Y, cons(X, nil())), zWadr(XS, YS))) , active(prefix(L)) -> mark(cons(nil(), zWadr(L, prefix(L)))) , active(prefix(X)) -> prefix(active(X)) , app(X1, mark(X2)) -> mark(app(X1, X2)) , app(mark(X1), X2) -> mark(app(X1, X2)) , app(ok(X1), ok(X2)) -> ok(app(X1, X2)) , 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)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , zWadr(X1, mark(X2)) -> mark(zWadr(X1, X2)) , zWadr(mark(X1), X2) -> mark(zWadr(X1, X2)) , zWadr(ok(X1), ok(X2)) -> ok(zWadr(X1, X2)) , prefix(mark(X)) -> mark(prefix(X)) , prefix(ok(X)) -> ok(prefix(X)) , proper(app(X1, X2)) -> app(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(from(X)) -> from(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(zWadr(X1, X2)) -> zWadr(proper(X1), proper(X2)) , proper(prefix(X)) -> prefix(proper(X)) , 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^#(app(X1, X2)) -> c_1(app^#(X1, active(X2))) , active^#(app(X1, X2)) -> c_2(app^#(active(X1), X2)) , active^#(app(nil(), YS)) -> c_3(YS) , active^#(app(cons(X, XS), YS)) -> c_4(cons^#(X, app(XS, YS))) , active^#(cons(X1, X2)) -> c_5(cons^#(active(X1), X2)) , active^#(from(X)) -> c_6(cons^#(X, from(s(X)))) , active^#(from(X)) -> c_7(from^#(active(X))) , active^#(s(X)) -> c_8(s^#(active(X))) , active^#(zWadr(X1, X2)) -> c_9(zWadr^#(X1, active(X2))) , active^#(zWadr(X1, X2)) -> c_10(zWadr^#(active(X1), X2)) , active^#(zWadr(XS, nil())) -> c_11() , active^#(zWadr(nil(), YS)) -> c_12() , active^#(zWadr(cons(X, XS), cons(Y, YS))) -> c_13(cons^#(app(Y, cons(X, nil())), zWadr(XS, YS))) , active^#(prefix(L)) -> c_14(cons^#(nil(), zWadr(L, prefix(L)))) , active^#(prefix(X)) -> c_15(prefix^#(active(X))) , app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) , app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) , app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , from^#(mark(X)) -> c_21(from^#(X)) , from^#(ok(X)) -> c_22(from^#(X)) , s^#(mark(X)) -> c_23(s^#(X)) , s^#(ok(X)) -> c_24(s^#(X)) , zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) , zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) , zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) , prefix^#(mark(X)) -> c_28(prefix^#(X)) , prefix^#(ok(X)) -> c_29(prefix^#(X)) , proper^#(app(X1, X2)) -> c_30(app^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_31() , proper^#(cons(X1, X2)) -> c_32(cons^#(proper(X1), proper(X2))) , proper^#(from(X)) -> c_33(from^#(proper(X))) , proper^#(s(X)) -> c_34(s^#(proper(X))) , proper^#(zWadr(X1, X2)) -> c_35(zWadr^#(proper(X1), proper(X2))) , proper^#(prefix(X)) -> c_36(prefix^#(proper(X))) , top^#(mark(X)) -> c_37(top^#(proper(X))) , top^#(ok(X)) -> c_38(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^#(app(X1, X2)) -> c_1(app^#(X1, active(X2))) , active^#(app(X1, X2)) -> c_2(app^#(active(X1), X2)) , active^#(app(nil(), YS)) -> c_3(YS) , active^#(app(cons(X, XS), YS)) -> c_4(cons^#(X, app(XS, YS))) , active^#(cons(X1, X2)) -> c_5(cons^#(active(X1), X2)) , active^#(from(X)) -> c_6(cons^#(X, from(s(X)))) , active^#(from(X)) -> c_7(from^#(active(X))) , active^#(s(X)) -> c_8(s^#(active(X))) , active^#(zWadr(X1, X2)) -> c_9(zWadr^#(X1, active(X2))) , active^#(zWadr(X1, X2)) -> c_10(zWadr^#(active(X1), X2)) , active^#(zWadr(XS, nil())) -> c_11() , active^#(zWadr(nil(), YS)) -> c_12() , active^#(zWadr(cons(X, XS), cons(Y, YS))) -> c_13(cons^#(app(Y, cons(X, nil())), zWadr(XS, YS))) , active^#(prefix(L)) -> c_14(cons^#(nil(), zWadr(L, prefix(L)))) , active^#(prefix(X)) -> c_15(prefix^#(active(X))) , app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) , app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) , app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , from^#(mark(X)) -> c_21(from^#(X)) , from^#(ok(X)) -> c_22(from^#(X)) , s^#(mark(X)) -> c_23(s^#(X)) , s^#(ok(X)) -> c_24(s^#(X)) , zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) , zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) , zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) , prefix^#(mark(X)) -> c_28(prefix^#(X)) , prefix^#(ok(X)) -> c_29(prefix^#(X)) , proper^#(app(X1, X2)) -> c_30(app^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_31() , proper^#(cons(X1, X2)) -> c_32(cons^#(proper(X1), proper(X2))) , proper^#(from(X)) -> c_33(from^#(proper(X))) , proper^#(s(X)) -> c_34(s^#(proper(X))) , proper^#(zWadr(X1, X2)) -> c_35(zWadr^#(proper(X1), proper(X2))) , proper^#(prefix(X)) -> c_36(prefix^#(proper(X))) , top^#(mark(X)) -> c_37(top^#(proper(X))) , top^#(ok(X)) -> c_38(top^#(active(X))) } Strict Trs: { active(app(X1, X2)) -> app(X1, active(X2)) , active(app(X1, X2)) -> app(active(X1), X2) , active(app(nil(), YS)) -> mark(YS) , active(app(cons(X, XS), YS)) -> mark(cons(X, app(XS, YS))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(from(X)) -> from(active(X)) , active(s(X)) -> s(active(X)) , active(zWadr(X1, X2)) -> zWadr(X1, active(X2)) , active(zWadr(X1, X2)) -> zWadr(active(X1), X2) , active(zWadr(XS, nil())) -> mark(nil()) , active(zWadr(nil(), YS)) -> mark(nil()) , active(zWadr(cons(X, XS), cons(Y, YS))) -> mark(cons(app(Y, cons(X, nil())), zWadr(XS, YS))) , active(prefix(L)) -> mark(cons(nil(), zWadr(L, prefix(L)))) , active(prefix(X)) -> prefix(active(X)) , app(X1, mark(X2)) -> mark(app(X1, X2)) , app(mark(X1), X2) -> mark(app(X1, X2)) , app(ok(X1), ok(X2)) -> ok(app(X1, X2)) , 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)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , zWadr(X1, mark(X2)) -> mark(zWadr(X1, X2)) , zWadr(mark(X1), X2) -> mark(zWadr(X1, X2)) , zWadr(ok(X1), ok(X2)) -> ok(zWadr(X1, X2)) , prefix(mark(X)) -> mark(prefix(X)) , prefix(ok(X)) -> ok(prefix(X)) , proper(app(X1, X2)) -> app(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(from(X)) -> from(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(zWadr(X1, X2)) -> zWadr(proper(X1), proper(X2)) , proper(prefix(X)) -> prefix(proper(X)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE Consider the dependency graph: 1: active^#(app(X1, X2)) -> c_1(app^#(X1, active(X2))) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 2: active^#(app(X1, X2)) -> c_2(app^#(active(X1), X2)) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 3: active^#(app(nil(), YS)) -> c_3(YS) -->_1 top^#(ok(X)) -> c_38(top^#(active(X))) :38 -->_1 top^#(mark(X)) -> c_37(top^#(proper(X))) :37 -->_1 proper^#(prefix(X)) -> c_36(prefix^#(proper(X))) :36 -->_1 proper^#(zWadr(X1, X2)) -> c_35(zWadr^#(proper(X1), proper(X2))) :35 -->_1 proper^#(s(X)) -> c_34(s^#(proper(X))) :34 -->_1 proper^#(from(X)) -> c_33(from^#(proper(X))) :33 -->_1 proper^#(cons(X1, X2)) -> c_32(cons^#(proper(X1), proper(X2))) :32 -->_1 proper^#(app(X1, X2)) -> c_30(app^#(proper(X1), proper(X2))) :30 -->_1 prefix^#(ok(X)) -> c_29(prefix^#(X)) :29 -->_1 prefix^#(mark(X)) -> c_28(prefix^#(X)) :28 -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 -->_1 from^#(ok(X)) -> c_22(from^#(X)) :22 -->_1 from^#(mark(X)) -> c_21(from^#(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 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 -->_1 active^#(prefix(X)) -> c_15(prefix^#(active(X))) :15 -->_1 active^#(zWadr(cons(X, XS), cons(Y, YS))) -> c_13(cons^#(app(Y, cons(X, nil())), zWadr(XS, YS))) :13 -->_1 active^#(zWadr(X1, X2)) -> c_10(zWadr^#(active(X1), X2)) :10 -->_1 active^#(zWadr(X1, X2)) -> c_9(zWadr^#(X1, active(X2))) :9 -->_1 active^#(s(X)) -> c_8(s^#(active(X))) :8 -->_1 active^#(from(X)) -> c_7(from^#(active(X))) :7 -->_1 active^#(from(X)) -> c_6(cons^#(X, from(s(X)))) :6 -->_1 active^#(cons(X1, X2)) -> c_5(cons^#(active(X1), X2)) :5 -->_1 active^#(app(cons(X, XS), YS)) -> c_4(cons^#(X, app(XS, YS))) :4 -->_1 proper^#(nil()) -> c_31() :31 -->_1 active^#(prefix(L)) -> c_14(cons^#(nil(), zWadr(L, prefix(L)))) :14 -->_1 active^#(zWadr(nil(), YS)) -> c_12() :12 -->_1 active^#(zWadr(XS, nil())) -> c_11() :11 -->_1 active^#(app(nil(), YS)) -> c_3(YS) :3 -->_1 active^#(app(X1, X2)) -> c_2(app^#(active(X1), X2)) :2 -->_1 active^#(app(X1, X2)) -> c_1(app^#(X1, active(X2))) :1 4: active^#(app(cons(X, XS), YS)) -> c_4(cons^#(X, app(XS, YS))) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 5: active^#(cons(X1, X2)) -> c_5(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 6: active^#(from(X)) -> c_6(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 7: active^#(from(X)) -> c_7(from^#(active(X))) -->_1 from^#(ok(X)) -> c_22(from^#(X)) :22 -->_1 from^#(mark(X)) -> c_21(from^#(X)) :21 8: active^#(s(X)) -> c_8(s^#(active(X))) -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 9: active^#(zWadr(X1, X2)) -> c_9(zWadr^#(X1, active(X2))) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 10: active^#(zWadr(X1, X2)) -> c_10(zWadr^#(active(X1), X2)) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 11: active^#(zWadr(XS, nil())) -> c_11() 12: active^#(zWadr(nil(), YS)) -> c_12() 13: active^#(zWadr(cons(X, XS), cons(Y, YS))) -> c_13(cons^#(app(Y, cons(X, nil())), zWadr(XS, YS))) -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 14: active^#(prefix(L)) -> c_14(cons^#(nil(), zWadr(L, prefix(L)))) 15: active^#(prefix(X)) -> c_15(prefix^#(active(X))) -->_1 prefix^#(ok(X)) -> c_29(prefix^#(X)) :29 -->_1 prefix^#(mark(X)) -> c_28(prefix^#(X)) :28 16: app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 17: app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 18: app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 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: from^#(mark(X)) -> c_21(from^#(X)) -->_1 from^#(ok(X)) -> c_22(from^#(X)) :22 -->_1 from^#(mark(X)) -> c_21(from^#(X)) :21 22: from^#(ok(X)) -> c_22(from^#(X)) -->_1 from^#(ok(X)) -> c_22(from^#(X)) :22 -->_1 from^#(mark(X)) -> c_21(from^#(X)) :21 23: s^#(mark(X)) -> c_23(s^#(X)) -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 24: s^#(ok(X)) -> c_24(s^#(X)) -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 25: zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 26: zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 27: zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 28: prefix^#(mark(X)) -> c_28(prefix^#(X)) -->_1 prefix^#(ok(X)) -> c_29(prefix^#(X)) :29 -->_1 prefix^#(mark(X)) -> c_28(prefix^#(X)) :28 29: prefix^#(ok(X)) -> c_29(prefix^#(X)) -->_1 prefix^#(ok(X)) -> c_29(prefix^#(X)) :29 -->_1 prefix^#(mark(X)) -> c_28(prefix^#(X)) :28 30: proper^#(app(X1, X2)) -> c_30(app^#(proper(X1), proper(X2))) -->_1 app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) :18 -->_1 app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) :17 -->_1 app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) :16 31: proper^#(nil()) -> c_31() 32: proper^#(cons(X1, X2)) -> c_32(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 33: proper^#(from(X)) -> c_33(from^#(proper(X))) -->_1 from^#(ok(X)) -> c_22(from^#(X)) :22 -->_1 from^#(mark(X)) -> c_21(from^#(X)) :21 34: proper^#(s(X)) -> c_34(s^#(proper(X))) -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 35: proper^#(zWadr(X1, X2)) -> c_35(zWadr^#(proper(X1), proper(X2))) -->_1 zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) :27 -->_1 zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) :26 -->_1 zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) :25 36: proper^#(prefix(X)) -> c_36(prefix^#(proper(X))) -->_1 prefix^#(ok(X)) -> c_29(prefix^#(X)) :29 -->_1 prefix^#(mark(X)) -> c_28(prefix^#(X)) :28 37: top^#(mark(X)) -> c_37(top^#(proper(X))) -->_1 top^#(ok(X)) -> c_38(top^#(active(X))) :38 -->_1 top^#(mark(X)) -> c_37(top^#(proper(X))) :37 38: top^#(ok(X)) -> c_38(top^#(active(X))) -->_1 top^#(ok(X)) -> c_38(top^#(active(X))) :38 -->_1 top^#(mark(X)) -> c_37(top^#(proper(X))) :37 Only the nodes {16,18,17,19,20,21,22,23,24,25,27,26,28,29,31,37,38} are reachable from nodes {16,17,18,19,20,21,22,23,24,25,26,27,28,29,31,37,38} 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: { app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) , app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) , app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , from^#(mark(X)) -> c_21(from^#(X)) , from^#(ok(X)) -> c_22(from^#(X)) , s^#(mark(X)) -> c_23(s^#(X)) , s^#(ok(X)) -> c_24(s^#(X)) , zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) , zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) , zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) , prefix^#(mark(X)) -> c_28(prefix^#(X)) , prefix^#(ok(X)) -> c_29(prefix^#(X)) , proper^#(nil()) -> c_31() , top^#(mark(X)) -> c_37(top^#(proper(X))) , top^#(ok(X)) -> c_38(top^#(active(X))) } Strict Trs: { active(app(X1, X2)) -> app(X1, active(X2)) , active(app(X1, X2)) -> app(active(X1), X2) , active(app(nil(), YS)) -> mark(YS) , active(app(cons(X, XS), YS)) -> mark(cons(X, app(XS, YS))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(from(X)) -> from(active(X)) , active(s(X)) -> s(active(X)) , active(zWadr(X1, X2)) -> zWadr(X1, active(X2)) , active(zWadr(X1, X2)) -> zWadr(active(X1), X2) , active(zWadr(XS, nil())) -> mark(nil()) , active(zWadr(nil(), YS)) -> mark(nil()) , active(zWadr(cons(X, XS), cons(Y, YS))) -> mark(cons(app(Y, cons(X, nil())), zWadr(XS, YS))) , active(prefix(L)) -> mark(cons(nil(), zWadr(L, prefix(L)))) , active(prefix(X)) -> prefix(active(X)) , app(X1, mark(X2)) -> mark(app(X1, X2)) , app(mark(X1), X2) -> mark(app(X1, X2)) , app(ok(X1), ok(X2)) -> ok(app(X1, X2)) , 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)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , zWadr(X1, mark(X2)) -> mark(zWadr(X1, X2)) , zWadr(mark(X1), X2) -> mark(zWadr(X1, X2)) , zWadr(ok(X1), ok(X2)) -> ok(zWadr(X1, X2)) , prefix(mark(X)) -> mark(prefix(X)) , prefix(ok(X)) -> ok(prefix(X)) , proper(app(X1, X2)) -> app(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(from(X)) -> from(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(zWadr(X1, X2)) -> zWadr(proper(X1), proper(X2)) , proper(prefix(X)) -> prefix(proper(X)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE We estimate the number of application of {15} by applications of Pre({15}) = {}. Here rules are labeled as follows: DPs: { 1: app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) , 2: app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) , 3: app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) , 4: cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , 5: cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , 6: from^#(mark(X)) -> c_21(from^#(X)) , 7: from^#(ok(X)) -> c_22(from^#(X)) , 8: s^#(mark(X)) -> c_23(s^#(X)) , 9: s^#(ok(X)) -> c_24(s^#(X)) , 10: zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) , 11: zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) , 12: zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) , 13: prefix^#(mark(X)) -> c_28(prefix^#(X)) , 14: prefix^#(ok(X)) -> c_29(prefix^#(X)) , 15: proper^#(nil()) -> c_31() , 16: top^#(mark(X)) -> c_37(top^#(proper(X))) , 17: top^#(ok(X)) -> c_38(top^#(active(X))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { app^#(X1, mark(X2)) -> c_16(app^#(X1, X2)) , app^#(mark(X1), X2) -> c_17(app^#(X1, X2)) , app^#(ok(X1), ok(X2)) -> c_18(app^#(X1, X2)) , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) , from^#(mark(X)) -> c_21(from^#(X)) , from^#(ok(X)) -> c_22(from^#(X)) , s^#(mark(X)) -> c_23(s^#(X)) , s^#(ok(X)) -> c_24(s^#(X)) , zWadr^#(X1, mark(X2)) -> c_25(zWadr^#(X1, X2)) , zWadr^#(mark(X1), X2) -> c_26(zWadr^#(X1, X2)) , zWadr^#(ok(X1), ok(X2)) -> c_27(zWadr^#(X1, X2)) , prefix^#(mark(X)) -> c_28(prefix^#(X)) , prefix^#(ok(X)) -> c_29(prefix^#(X)) , top^#(mark(X)) -> c_37(top^#(proper(X))) , top^#(ok(X)) -> c_38(top^#(active(X))) } Strict Trs: { active(app(X1, X2)) -> app(X1, active(X2)) , active(app(X1, X2)) -> app(active(X1), X2) , active(app(nil(), YS)) -> mark(YS) , active(app(cons(X, XS), YS)) -> mark(cons(X, app(XS, YS))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(from(X)) -> mark(cons(X, from(s(X)))) , active(from(X)) -> from(active(X)) , active(s(X)) -> s(active(X)) , active(zWadr(X1, X2)) -> zWadr(X1, active(X2)) , active(zWadr(X1, X2)) -> zWadr(active(X1), X2) , active(zWadr(XS, nil())) -> mark(nil()) , active(zWadr(nil(), YS)) -> mark(nil()) , active(zWadr(cons(X, XS), cons(Y, YS))) -> mark(cons(app(Y, cons(X, nil())), zWadr(XS, YS))) , active(prefix(L)) -> mark(cons(nil(), zWadr(L, prefix(L)))) , active(prefix(X)) -> prefix(active(X)) , app(X1, mark(X2)) -> mark(app(X1, X2)) , app(mark(X1), X2) -> mark(app(X1, X2)) , app(ok(X1), ok(X2)) -> ok(app(X1, X2)) , 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)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , zWadr(X1, mark(X2)) -> mark(zWadr(X1, X2)) , zWadr(mark(X1), X2) -> mark(zWadr(X1, X2)) , zWadr(ok(X1), ok(X2)) -> ok(zWadr(X1, X2)) , prefix(mark(X)) -> mark(prefix(X)) , prefix(ok(X)) -> ok(prefix(X)) , proper(app(X1, X2)) -> app(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(from(X)) -> from(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(zWadr(X1, X2)) -> zWadr(proper(X1), proper(X2)) , proper(prefix(X)) -> prefix(proper(X)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Weak DPs: { proper^#(nil()) -> c_31() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..