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