MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { active(terms(X)) -> terms(active(X)) , active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(recip(X)) -> recip(active(X)) , active(sqr(X)) -> sqr(active(X)) , active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))) , active(sqr(0())) -> mark(0()) , active(s(X)) -> s(active(X)) , active(add(X1, X2)) -> add(X1, active(X2)) , active(add(X1, X2)) -> add(active(X1), X2) , active(add(s(X), Y)) -> mark(s(add(X, Y))) , active(add(0(), X)) -> mark(X) , active(dbl(X)) -> dbl(active(X)) , active(dbl(s(X))) -> mark(s(s(dbl(X)))) , active(dbl(0())) -> mark(0()) , active(first(X1, X2)) -> first(X1, active(X2)) , active(first(X1, X2)) -> first(active(X1), X2) , active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))) , active(first(0(), X)) -> mark(nil()) , active(half(X)) -> half(active(X)) , active(half(s(s(X)))) -> mark(s(half(X))) , active(half(s(0()))) -> mark(0()) , active(half(0())) -> mark(0()) , active(half(dbl(X))) -> mark(X) , terms(mark(X)) -> mark(terms(X)) , terms(ok(X)) -> ok(terms(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , recip(mark(X)) -> mark(recip(X)) , recip(ok(X)) -> ok(recip(X)) , sqr(mark(X)) -> mark(sqr(X)) , sqr(ok(X)) -> ok(sqr(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , add(X1, mark(X2)) -> mark(add(X1, X2)) , add(mark(X1), X2) -> mark(add(X1, X2)) , add(ok(X1), ok(X2)) -> ok(add(X1, X2)) , dbl(mark(X)) -> mark(dbl(X)) , dbl(ok(X)) -> ok(dbl(X)) , first(X1, mark(X2)) -> mark(first(X1, X2)) , first(mark(X1), X2) -> mark(first(X1, X2)) , first(ok(X1), ok(X2)) -> ok(first(X1, X2)) , half(mark(X)) -> mark(half(X)) , half(ok(X)) -> ok(half(X)) , proper(terms(X)) -> terms(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(recip(X)) -> recip(proper(X)) , proper(sqr(X)) -> sqr(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(0()) -> ok(0()) , proper(add(X1, X2)) -> add(proper(X1), proper(X2)) , proper(dbl(X)) -> dbl(proper(X)) , proper(first(X1, X2)) -> first(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(half(X)) -> half(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) '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 minimal-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 2) 'Bounds with perSymbol-enrichment and initial automaton 'match'' failed due to the following reason: match-boundness of the problem could not be verified. 3) 'Best' failed due to the following reason: None of the processors succeeded. Details of failed attempt(s): ----------------------------- 1) '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 2) '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 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^#(terms(X)) -> c_1(terms^#(active(X))) , active^#(terms(N)) -> c_2(cons^#(recip(sqr(N)), terms(s(N)))) , active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) , active^#(recip(X)) -> c_4(recip^#(active(X))) , active^#(sqr(X)) -> c_5(sqr^#(active(X))) , active^#(sqr(s(X))) -> c_6(s^#(add(sqr(X), dbl(X)))) , active^#(sqr(0())) -> c_7() , active^#(s(X)) -> c_8(s^#(active(X))) , active^#(add(X1, X2)) -> c_9(add^#(X1, active(X2))) , active^#(add(X1, X2)) -> c_10(add^#(active(X1), X2)) , active^#(add(s(X), Y)) -> c_11(s^#(add(X, Y))) , active^#(add(0(), X)) -> c_12(X) , active^#(dbl(X)) -> c_13(dbl^#(active(X))) , active^#(dbl(s(X))) -> c_14(s^#(s(dbl(X)))) , active^#(dbl(0())) -> c_15() , active^#(first(X1, X2)) -> c_16(first^#(X1, active(X2))) , active^#(first(X1, X2)) -> c_17(first^#(active(X1), X2)) , active^#(first(s(X), cons(Y, Z))) -> c_18(cons^#(Y, first(X, Z))) , active^#(first(0(), X)) -> c_19() , active^#(half(X)) -> c_20(half^#(active(X))) , active^#(half(s(s(X)))) -> c_21(s^#(half(X))) , active^#(half(s(0()))) -> c_22() , active^#(half(0())) -> c_23() , active^#(half(dbl(X))) -> c_24(X) , terms^#(mark(X)) -> c_25(terms^#(X)) , terms^#(ok(X)) -> c_26(terms^#(X)) , cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) , recip^#(mark(X)) -> c_29(recip^#(X)) , recip^#(ok(X)) -> c_30(recip^#(X)) , sqr^#(mark(X)) -> c_31(sqr^#(X)) , sqr^#(ok(X)) -> c_32(sqr^#(X)) , s^#(mark(X)) -> c_33(s^#(X)) , s^#(ok(X)) -> c_34(s^#(X)) , add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) , add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) , add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) , dbl^#(mark(X)) -> c_38(dbl^#(X)) , dbl^#(ok(X)) -> c_39(dbl^#(X)) , first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) , first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) , first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) , half^#(mark(X)) -> c_43(half^#(X)) , half^#(ok(X)) -> c_44(half^#(X)) , proper^#(terms(X)) -> c_45(terms^#(proper(X))) , proper^#(cons(X1, X2)) -> c_46(cons^#(proper(X1), proper(X2))) , proper^#(recip(X)) -> c_47(recip^#(proper(X))) , proper^#(sqr(X)) -> c_48(sqr^#(proper(X))) , proper^#(s(X)) -> c_49(s^#(proper(X))) , proper^#(0()) -> c_50() , proper^#(add(X1, X2)) -> c_51(add^#(proper(X1), proper(X2))) , proper^#(dbl(X)) -> c_52(dbl^#(proper(X))) , proper^#(first(X1, X2)) -> c_53(first^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_54() , proper^#(half(X)) -> c_55(half^#(proper(X))) , top^#(mark(X)) -> c_56(top^#(proper(X))) , top^#(ok(X)) -> c_57(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^#(terms(X)) -> c_1(terms^#(active(X))) , active^#(terms(N)) -> c_2(cons^#(recip(sqr(N)), terms(s(N)))) , active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) , active^#(recip(X)) -> c_4(recip^#(active(X))) , active^#(sqr(X)) -> c_5(sqr^#(active(X))) , active^#(sqr(s(X))) -> c_6(s^#(add(sqr(X), dbl(X)))) , active^#(sqr(0())) -> c_7() , active^#(s(X)) -> c_8(s^#(active(X))) , active^#(add(X1, X2)) -> c_9(add^#(X1, active(X2))) , active^#(add(X1, X2)) -> c_10(add^#(active(X1), X2)) , active^#(add(s(X), Y)) -> c_11(s^#(add(X, Y))) , active^#(add(0(), X)) -> c_12(X) , active^#(dbl(X)) -> c_13(dbl^#(active(X))) , active^#(dbl(s(X))) -> c_14(s^#(s(dbl(X)))) , active^#(dbl(0())) -> c_15() , active^#(first(X1, X2)) -> c_16(first^#(X1, active(X2))) , active^#(first(X1, X2)) -> c_17(first^#(active(X1), X2)) , active^#(first(s(X), cons(Y, Z))) -> c_18(cons^#(Y, first(X, Z))) , active^#(first(0(), X)) -> c_19() , active^#(half(X)) -> c_20(half^#(active(X))) , active^#(half(s(s(X)))) -> c_21(s^#(half(X))) , active^#(half(s(0()))) -> c_22() , active^#(half(0())) -> c_23() , active^#(half(dbl(X))) -> c_24(X) , terms^#(mark(X)) -> c_25(terms^#(X)) , terms^#(ok(X)) -> c_26(terms^#(X)) , cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) , recip^#(mark(X)) -> c_29(recip^#(X)) , recip^#(ok(X)) -> c_30(recip^#(X)) , sqr^#(mark(X)) -> c_31(sqr^#(X)) , sqr^#(ok(X)) -> c_32(sqr^#(X)) , s^#(mark(X)) -> c_33(s^#(X)) , s^#(ok(X)) -> c_34(s^#(X)) , add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) , add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) , add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) , dbl^#(mark(X)) -> c_38(dbl^#(X)) , dbl^#(ok(X)) -> c_39(dbl^#(X)) , first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) , first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) , first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) , half^#(mark(X)) -> c_43(half^#(X)) , half^#(ok(X)) -> c_44(half^#(X)) , proper^#(terms(X)) -> c_45(terms^#(proper(X))) , proper^#(cons(X1, X2)) -> c_46(cons^#(proper(X1), proper(X2))) , proper^#(recip(X)) -> c_47(recip^#(proper(X))) , proper^#(sqr(X)) -> c_48(sqr^#(proper(X))) , proper^#(s(X)) -> c_49(s^#(proper(X))) , proper^#(0()) -> c_50() , proper^#(add(X1, X2)) -> c_51(add^#(proper(X1), proper(X2))) , proper^#(dbl(X)) -> c_52(dbl^#(proper(X))) , proper^#(first(X1, X2)) -> c_53(first^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_54() , proper^#(half(X)) -> c_55(half^#(proper(X))) , top^#(mark(X)) -> c_56(top^#(proper(X))) , top^#(ok(X)) -> c_57(top^#(active(X))) } Strict Trs: { active(terms(X)) -> terms(active(X)) , active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(recip(X)) -> recip(active(X)) , active(sqr(X)) -> sqr(active(X)) , active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))) , active(sqr(0())) -> mark(0()) , active(s(X)) -> s(active(X)) , active(add(X1, X2)) -> add(X1, active(X2)) , active(add(X1, X2)) -> add(active(X1), X2) , active(add(s(X), Y)) -> mark(s(add(X, Y))) , active(add(0(), X)) -> mark(X) , active(dbl(X)) -> dbl(active(X)) , active(dbl(s(X))) -> mark(s(s(dbl(X)))) , active(dbl(0())) -> mark(0()) , active(first(X1, X2)) -> first(X1, active(X2)) , active(first(X1, X2)) -> first(active(X1), X2) , active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))) , active(first(0(), X)) -> mark(nil()) , active(half(X)) -> half(active(X)) , active(half(s(s(X)))) -> mark(s(half(X))) , active(half(s(0()))) -> mark(0()) , active(half(0())) -> mark(0()) , active(half(dbl(X))) -> mark(X) , terms(mark(X)) -> mark(terms(X)) , terms(ok(X)) -> ok(terms(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , recip(mark(X)) -> mark(recip(X)) , recip(ok(X)) -> ok(recip(X)) , sqr(mark(X)) -> mark(sqr(X)) , sqr(ok(X)) -> ok(sqr(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , add(X1, mark(X2)) -> mark(add(X1, X2)) , add(mark(X1), X2) -> mark(add(X1, X2)) , add(ok(X1), ok(X2)) -> ok(add(X1, X2)) , dbl(mark(X)) -> mark(dbl(X)) , dbl(ok(X)) -> ok(dbl(X)) , first(X1, mark(X2)) -> mark(first(X1, X2)) , first(mark(X1), X2) -> mark(first(X1, X2)) , first(ok(X1), ok(X2)) -> ok(first(X1, X2)) , half(mark(X)) -> mark(half(X)) , half(ok(X)) -> ok(half(X)) , proper(terms(X)) -> terms(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(recip(X)) -> recip(proper(X)) , proper(sqr(X)) -> sqr(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(0()) -> ok(0()) , proper(add(X1, X2)) -> add(proper(X1), proper(X2)) , proper(dbl(X)) -> dbl(proper(X)) , proper(first(X1, X2)) -> first(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(half(X)) -> half(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^#(terms(X)) -> c_1(terms^#(active(X))) -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 2: active^#(terms(N)) -> c_2(cons^#(recip(sqr(N)), terms(s(N)))) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 3: active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 4: active^#(recip(X)) -> c_4(recip^#(active(X))) -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 5: active^#(sqr(X)) -> c_5(sqr^#(active(X))) -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 6: active^#(sqr(s(X))) -> c_6(s^#(add(sqr(X), dbl(X)))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 7: active^#(sqr(0())) -> c_7() 8: active^#(s(X)) -> c_8(s^#(active(X))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 9: active^#(add(X1, X2)) -> c_9(add^#(X1, active(X2))) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 10: active^#(add(X1, X2)) -> c_10(add^#(active(X1), X2)) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 11: active^#(add(s(X), Y)) -> c_11(s^#(add(X, Y))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 12: active^#(add(0(), X)) -> c_12(X) -->_1 top^#(ok(X)) -> c_57(top^#(active(X))) :57 -->_1 top^#(mark(X)) -> c_56(top^#(proper(X))) :56 -->_1 proper^#(half(X)) -> c_55(half^#(proper(X))) :55 -->_1 proper^#(first(X1, X2)) -> c_53(first^#(proper(X1), proper(X2))) :53 -->_1 proper^#(dbl(X)) -> c_52(dbl^#(proper(X))) :52 -->_1 proper^#(add(X1, X2)) -> c_51(add^#(proper(X1), proper(X2))) :51 -->_1 proper^#(s(X)) -> c_49(s^#(proper(X))) :49 -->_1 proper^#(sqr(X)) -> c_48(sqr^#(proper(X))) :48 -->_1 proper^#(recip(X)) -> c_47(recip^#(proper(X))) :47 -->_1 proper^#(cons(X1, X2)) -> c_46(cons^#(proper(X1), proper(X2))) :46 -->_1 proper^#(terms(X)) -> c_45(terms^#(proper(X))) :45 -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 -->_1 active^#(half(dbl(X))) -> c_24(X) :24 -->_1 active^#(half(s(s(X)))) -> c_21(s^#(half(X))) :21 -->_1 active^#(half(X)) -> c_20(half^#(active(X))) :20 -->_1 active^#(first(s(X), cons(Y, Z))) -> c_18(cons^#(Y, first(X, Z))) :18 -->_1 active^#(first(X1, X2)) -> c_17(first^#(active(X1), X2)) :17 -->_1 active^#(first(X1, X2)) -> c_16(first^#(X1, active(X2))) :16 -->_1 active^#(dbl(s(X))) -> c_14(s^#(s(dbl(X)))) :14 -->_1 active^#(dbl(X)) -> c_13(dbl^#(active(X))) :13 -->_1 proper^#(nil()) -> c_54() :54 -->_1 proper^#(0()) -> c_50() :50 -->_1 active^#(half(0())) -> c_23() :23 -->_1 active^#(half(s(0()))) -> c_22() :22 -->_1 active^#(first(0(), X)) -> c_19() :19 -->_1 active^#(dbl(0())) -> c_15() :15 -->_1 active^#(add(0(), X)) -> c_12(X) :12 -->_1 active^#(add(s(X), Y)) -> c_11(s^#(add(X, Y))) :11 -->_1 active^#(add(X1, X2)) -> c_10(add^#(active(X1), X2)) :10 -->_1 active^#(add(X1, X2)) -> c_9(add^#(X1, active(X2))) :9 -->_1 active^#(s(X)) -> c_8(s^#(active(X))) :8 -->_1 active^#(sqr(0())) -> c_7() :7 -->_1 active^#(sqr(s(X))) -> c_6(s^#(add(sqr(X), dbl(X)))) :6 -->_1 active^#(sqr(X)) -> c_5(sqr^#(active(X))) :5 -->_1 active^#(recip(X)) -> c_4(recip^#(active(X))) :4 -->_1 active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) :3 -->_1 active^#(terms(N)) -> c_2(cons^#(recip(sqr(N)), terms(s(N)))) :2 -->_1 active^#(terms(X)) -> c_1(terms^#(active(X))) :1 13: active^#(dbl(X)) -> c_13(dbl^#(active(X))) -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 14: active^#(dbl(s(X))) -> c_14(s^#(s(dbl(X)))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 15: active^#(dbl(0())) -> c_15() 16: active^#(first(X1, X2)) -> c_16(first^#(X1, active(X2))) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 17: active^#(first(X1, X2)) -> c_17(first^#(active(X1), X2)) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 18: active^#(first(s(X), cons(Y, Z))) -> c_18(cons^#(Y, first(X, Z))) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 19: active^#(first(0(), X)) -> c_19() 20: active^#(half(X)) -> c_20(half^#(active(X))) -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 21: active^#(half(s(s(X)))) -> c_21(s^#(half(X))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 22: active^#(half(s(0()))) -> c_22() 23: active^#(half(0())) -> c_23() 24: active^#(half(dbl(X))) -> c_24(X) -->_1 top^#(ok(X)) -> c_57(top^#(active(X))) :57 -->_1 top^#(mark(X)) -> c_56(top^#(proper(X))) :56 -->_1 proper^#(half(X)) -> c_55(half^#(proper(X))) :55 -->_1 proper^#(first(X1, X2)) -> c_53(first^#(proper(X1), proper(X2))) :53 -->_1 proper^#(dbl(X)) -> c_52(dbl^#(proper(X))) :52 -->_1 proper^#(add(X1, X2)) -> c_51(add^#(proper(X1), proper(X2))) :51 -->_1 proper^#(s(X)) -> c_49(s^#(proper(X))) :49 -->_1 proper^#(sqr(X)) -> c_48(sqr^#(proper(X))) :48 -->_1 proper^#(recip(X)) -> c_47(recip^#(proper(X))) :47 -->_1 proper^#(cons(X1, X2)) -> c_46(cons^#(proper(X1), proper(X2))) :46 -->_1 proper^#(terms(X)) -> c_45(terms^#(proper(X))) :45 -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 -->_1 proper^#(nil()) -> c_54() :54 -->_1 proper^#(0()) -> c_50() :50 -->_1 active^#(half(dbl(X))) -> c_24(X) :24 -->_1 active^#(half(0())) -> c_23() :23 -->_1 active^#(half(s(0()))) -> c_22() :22 -->_1 active^#(half(s(s(X)))) -> c_21(s^#(half(X))) :21 -->_1 active^#(half(X)) -> c_20(half^#(active(X))) :20 -->_1 active^#(first(0(), X)) -> c_19() :19 -->_1 active^#(first(s(X), cons(Y, Z))) -> c_18(cons^#(Y, first(X, Z))) :18 -->_1 active^#(first(X1, X2)) -> c_17(first^#(active(X1), X2)) :17 -->_1 active^#(first(X1, X2)) -> c_16(first^#(X1, active(X2))) :16 -->_1 active^#(dbl(0())) -> c_15() :15 -->_1 active^#(dbl(s(X))) -> c_14(s^#(s(dbl(X)))) :14 -->_1 active^#(dbl(X)) -> c_13(dbl^#(active(X))) :13 -->_1 active^#(add(0(), X)) -> c_12(X) :12 -->_1 active^#(add(s(X), Y)) -> c_11(s^#(add(X, Y))) :11 -->_1 active^#(add(X1, X2)) -> c_10(add^#(active(X1), X2)) :10 -->_1 active^#(add(X1, X2)) -> c_9(add^#(X1, active(X2))) :9 -->_1 active^#(s(X)) -> c_8(s^#(active(X))) :8 -->_1 active^#(sqr(0())) -> c_7() :7 -->_1 active^#(sqr(s(X))) -> c_6(s^#(add(sqr(X), dbl(X)))) :6 -->_1 active^#(sqr(X)) -> c_5(sqr^#(active(X))) :5 -->_1 active^#(recip(X)) -> c_4(recip^#(active(X))) :4 -->_1 active^#(cons(X1, X2)) -> c_3(cons^#(active(X1), X2)) :3 -->_1 active^#(terms(N)) -> c_2(cons^#(recip(sqr(N)), terms(s(N)))) :2 -->_1 active^#(terms(X)) -> c_1(terms^#(active(X))) :1 25: terms^#(mark(X)) -> c_25(terms^#(X)) -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 26: terms^#(ok(X)) -> c_26(terms^#(X)) -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 27: cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 28: cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 29: recip^#(mark(X)) -> c_29(recip^#(X)) -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 30: recip^#(ok(X)) -> c_30(recip^#(X)) -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 31: sqr^#(mark(X)) -> c_31(sqr^#(X)) -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 32: sqr^#(ok(X)) -> c_32(sqr^#(X)) -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 33: s^#(mark(X)) -> c_33(s^#(X)) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 34: s^#(ok(X)) -> c_34(s^#(X)) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 35: add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 36: add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 37: add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 38: dbl^#(mark(X)) -> c_38(dbl^#(X)) -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 39: dbl^#(ok(X)) -> c_39(dbl^#(X)) -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 40: first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 41: first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 42: first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 43: half^#(mark(X)) -> c_43(half^#(X)) -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 44: half^#(ok(X)) -> c_44(half^#(X)) -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 45: proper^#(terms(X)) -> c_45(terms^#(proper(X))) -->_1 terms^#(ok(X)) -> c_26(terms^#(X)) :26 -->_1 terms^#(mark(X)) -> c_25(terms^#(X)) :25 46: proper^#(cons(X1, X2)) -> c_46(cons^#(proper(X1), proper(X2))) -->_1 cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) :28 -->_1 cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) :27 47: proper^#(recip(X)) -> c_47(recip^#(proper(X))) -->_1 recip^#(ok(X)) -> c_30(recip^#(X)) :30 -->_1 recip^#(mark(X)) -> c_29(recip^#(X)) :29 48: proper^#(sqr(X)) -> c_48(sqr^#(proper(X))) -->_1 sqr^#(ok(X)) -> c_32(sqr^#(X)) :32 -->_1 sqr^#(mark(X)) -> c_31(sqr^#(X)) :31 49: proper^#(s(X)) -> c_49(s^#(proper(X))) -->_1 s^#(ok(X)) -> c_34(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_33(s^#(X)) :33 50: proper^#(0()) -> c_50() 51: proper^#(add(X1, X2)) -> c_51(add^#(proper(X1), proper(X2))) -->_1 add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) :37 -->_1 add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) :36 -->_1 add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) :35 52: proper^#(dbl(X)) -> c_52(dbl^#(proper(X))) -->_1 dbl^#(ok(X)) -> c_39(dbl^#(X)) :39 -->_1 dbl^#(mark(X)) -> c_38(dbl^#(X)) :38 53: proper^#(first(X1, X2)) -> c_53(first^#(proper(X1), proper(X2))) -->_1 first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) :42 -->_1 first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) :41 -->_1 first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) :40 54: proper^#(nil()) -> c_54() 55: proper^#(half(X)) -> c_55(half^#(proper(X))) -->_1 half^#(ok(X)) -> c_44(half^#(X)) :44 -->_1 half^#(mark(X)) -> c_43(half^#(X)) :43 56: top^#(mark(X)) -> c_56(top^#(proper(X))) -->_1 top^#(ok(X)) -> c_57(top^#(active(X))) :57 -->_1 top^#(mark(X)) -> c_56(top^#(proper(X))) :56 57: top^#(ok(X)) -> c_57(top^#(active(X))) -->_1 top^#(ok(X)) -> c_57(top^#(active(X))) :57 -->_1 top^#(mark(X)) -> c_56(top^#(proper(X))) :56 Only the nodes {25,26,27,28,29,30,31,32,33,34,35,37,36,38,39,40,42,41,43,44,50,54,56,57} are reachable from nodes {25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,50,54,56,57} 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: { terms^#(mark(X)) -> c_25(terms^#(X)) , terms^#(ok(X)) -> c_26(terms^#(X)) , cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) , recip^#(mark(X)) -> c_29(recip^#(X)) , recip^#(ok(X)) -> c_30(recip^#(X)) , sqr^#(mark(X)) -> c_31(sqr^#(X)) , sqr^#(ok(X)) -> c_32(sqr^#(X)) , s^#(mark(X)) -> c_33(s^#(X)) , s^#(ok(X)) -> c_34(s^#(X)) , add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) , add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) , add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) , dbl^#(mark(X)) -> c_38(dbl^#(X)) , dbl^#(ok(X)) -> c_39(dbl^#(X)) , first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) , first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) , first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) , half^#(mark(X)) -> c_43(half^#(X)) , half^#(ok(X)) -> c_44(half^#(X)) , proper^#(0()) -> c_50() , proper^#(nil()) -> c_54() , top^#(mark(X)) -> c_56(top^#(proper(X))) , top^#(ok(X)) -> c_57(top^#(active(X))) } Strict Trs: { active(terms(X)) -> terms(active(X)) , active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(recip(X)) -> recip(active(X)) , active(sqr(X)) -> sqr(active(X)) , active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))) , active(sqr(0())) -> mark(0()) , active(s(X)) -> s(active(X)) , active(add(X1, X2)) -> add(X1, active(X2)) , active(add(X1, X2)) -> add(active(X1), X2) , active(add(s(X), Y)) -> mark(s(add(X, Y))) , active(add(0(), X)) -> mark(X) , active(dbl(X)) -> dbl(active(X)) , active(dbl(s(X))) -> mark(s(s(dbl(X)))) , active(dbl(0())) -> mark(0()) , active(first(X1, X2)) -> first(X1, active(X2)) , active(first(X1, X2)) -> first(active(X1), X2) , active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))) , active(first(0(), X)) -> mark(nil()) , active(half(X)) -> half(active(X)) , active(half(s(s(X)))) -> mark(s(half(X))) , active(half(s(0()))) -> mark(0()) , active(half(0())) -> mark(0()) , active(half(dbl(X))) -> mark(X) , terms(mark(X)) -> mark(terms(X)) , terms(ok(X)) -> ok(terms(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , recip(mark(X)) -> mark(recip(X)) , recip(ok(X)) -> ok(recip(X)) , sqr(mark(X)) -> mark(sqr(X)) , sqr(ok(X)) -> ok(sqr(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , add(X1, mark(X2)) -> mark(add(X1, X2)) , add(mark(X1), X2) -> mark(add(X1, X2)) , add(ok(X1), ok(X2)) -> ok(add(X1, X2)) , dbl(mark(X)) -> mark(dbl(X)) , dbl(ok(X)) -> ok(dbl(X)) , first(X1, mark(X2)) -> mark(first(X1, X2)) , first(mark(X1), X2) -> mark(first(X1, X2)) , first(ok(X1), ok(X2)) -> ok(first(X1, X2)) , half(mark(X)) -> mark(half(X)) , half(ok(X)) -> ok(half(X)) , proper(terms(X)) -> terms(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(recip(X)) -> recip(proper(X)) , proper(sqr(X)) -> sqr(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(0()) -> ok(0()) , proper(add(X1, X2)) -> add(proper(X1), proper(X2)) , proper(dbl(X)) -> dbl(proper(X)) , proper(first(X1, X2)) -> first(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(half(X)) -> half(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 {21,22} by applications of Pre({21,22}) = {}. Here rules are labeled as follows: DPs: { 1: terms^#(mark(X)) -> c_25(terms^#(X)) , 2: terms^#(ok(X)) -> c_26(terms^#(X)) , 3: cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) , 4: cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) , 5: recip^#(mark(X)) -> c_29(recip^#(X)) , 6: recip^#(ok(X)) -> c_30(recip^#(X)) , 7: sqr^#(mark(X)) -> c_31(sqr^#(X)) , 8: sqr^#(ok(X)) -> c_32(sqr^#(X)) , 9: s^#(mark(X)) -> c_33(s^#(X)) , 10: s^#(ok(X)) -> c_34(s^#(X)) , 11: add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) , 12: add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) , 13: add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) , 14: dbl^#(mark(X)) -> c_38(dbl^#(X)) , 15: dbl^#(ok(X)) -> c_39(dbl^#(X)) , 16: first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) , 17: first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) , 18: first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) , 19: half^#(mark(X)) -> c_43(half^#(X)) , 20: half^#(ok(X)) -> c_44(half^#(X)) , 21: proper^#(0()) -> c_50() , 22: proper^#(nil()) -> c_54() , 23: top^#(mark(X)) -> c_56(top^#(proper(X))) , 24: top^#(ok(X)) -> c_57(top^#(active(X))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { terms^#(mark(X)) -> c_25(terms^#(X)) , terms^#(ok(X)) -> c_26(terms^#(X)) , cons^#(mark(X1), X2) -> c_27(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_28(cons^#(X1, X2)) , recip^#(mark(X)) -> c_29(recip^#(X)) , recip^#(ok(X)) -> c_30(recip^#(X)) , sqr^#(mark(X)) -> c_31(sqr^#(X)) , sqr^#(ok(X)) -> c_32(sqr^#(X)) , s^#(mark(X)) -> c_33(s^#(X)) , s^#(ok(X)) -> c_34(s^#(X)) , add^#(X1, mark(X2)) -> c_35(add^#(X1, X2)) , add^#(mark(X1), X2) -> c_36(add^#(X1, X2)) , add^#(ok(X1), ok(X2)) -> c_37(add^#(X1, X2)) , dbl^#(mark(X)) -> c_38(dbl^#(X)) , dbl^#(ok(X)) -> c_39(dbl^#(X)) , first^#(X1, mark(X2)) -> c_40(first^#(X1, X2)) , first^#(mark(X1), X2) -> c_41(first^#(X1, X2)) , first^#(ok(X1), ok(X2)) -> c_42(first^#(X1, X2)) , half^#(mark(X)) -> c_43(half^#(X)) , half^#(ok(X)) -> c_44(half^#(X)) , top^#(mark(X)) -> c_56(top^#(proper(X))) , top^#(ok(X)) -> c_57(top^#(active(X))) } Strict Trs: { active(terms(X)) -> terms(active(X)) , active(terms(N)) -> mark(cons(recip(sqr(N)), terms(s(N)))) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(recip(X)) -> recip(active(X)) , active(sqr(X)) -> sqr(active(X)) , active(sqr(s(X))) -> mark(s(add(sqr(X), dbl(X)))) , active(sqr(0())) -> mark(0()) , active(s(X)) -> s(active(X)) , active(add(X1, X2)) -> add(X1, active(X2)) , active(add(X1, X2)) -> add(active(X1), X2) , active(add(s(X), Y)) -> mark(s(add(X, Y))) , active(add(0(), X)) -> mark(X) , active(dbl(X)) -> dbl(active(X)) , active(dbl(s(X))) -> mark(s(s(dbl(X)))) , active(dbl(0())) -> mark(0()) , active(first(X1, X2)) -> first(X1, active(X2)) , active(first(X1, X2)) -> first(active(X1), X2) , active(first(s(X), cons(Y, Z))) -> mark(cons(Y, first(X, Z))) , active(first(0(), X)) -> mark(nil()) , active(half(X)) -> half(active(X)) , active(half(s(s(X)))) -> mark(s(half(X))) , active(half(s(0()))) -> mark(0()) , active(half(0())) -> mark(0()) , active(half(dbl(X))) -> mark(X) , terms(mark(X)) -> mark(terms(X)) , terms(ok(X)) -> ok(terms(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , recip(mark(X)) -> mark(recip(X)) , recip(ok(X)) -> ok(recip(X)) , sqr(mark(X)) -> mark(sqr(X)) , sqr(ok(X)) -> ok(sqr(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , add(X1, mark(X2)) -> mark(add(X1, X2)) , add(mark(X1), X2) -> mark(add(X1, X2)) , add(ok(X1), ok(X2)) -> ok(add(X1, X2)) , dbl(mark(X)) -> mark(dbl(X)) , dbl(ok(X)) -> ok(dbl(X)) , first(X1, mark(X2)) -> mark(first(X1, X2)) , first(mark(X1), X2) -> mark(first(X1, X2)) , first(ok(X1), ok(X2)) -> ok(first(X1, X2)) , half(mark(X)) -> mark(half(X)) , half(ok(X)) -> ok(half(X)) , proper(terms(X)) -> terms(proper(X)) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(recip(X)) -> recip(proper(X)) , proper(sqr(X)) -> sqr(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(0()) -> ok(0()) , proper(add(X1, X2)) -> add(proper(X1), proper(X2)) , proper(dbl(X)) -> dbl(proper(X)) , proper(first(X1, X2)) -> first(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(half(X)) -> half(proper(X)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Weak DPs: { proper^#(0()) -> c_50() , proper^#(nil()) -> c_54() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..