MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { active(and(X1, X2)) -> and(X1, active(X2)) , active(and(X1, X2)) -> and(active(X1), X2) , active(and(tt(), T)) -> mark(T) , active(isNatIList(IL)) -> mark(isNatList(IL)) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNatList(cons(N, L))) -> mark(and(isNat(N), isNatList(L))) , active(isNatList(nil())) -> mark(tt()) , active(isNatList(take(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(N))) -> mark(isNat(N)) , active(isNat(length(L))) -> mark(isNatList(L)) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(uLength(and(isNat(N), isNatList(L)), L)) , active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(0(), IL)) -> mark(uTake1(isNatIList(IL))) , active(take(s(M), cons(N, IL))) -> mark(uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active(uTake1(X)) -> uTake1(active(X)) , active(uTake1(tt())) -> mark(nil()) , active(uTake2(X1, X2, X3, X4)) -> uTake2(active(X1), X2, X3, X4) , active(uTake2(tt(), M, N, IL)) -> mark(cons(N, take(M, IL))) , active(uLength(X1, X2)) -> uLength(active(X1), X2) , active(uLength(tt(), L)) -> mark(s(length(L))) , and(X1, mark(X2)) -> mark(and(X1, X2)) , and(mark(X1), X2) -> mark(and(X1, X2)) , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , isNat(ok(X)) -> ok(isNat(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , length(mark(X)) -> mark(length(X)) , length(ok(X)) -> ok(length(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , 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)) , uTake1(mark(X)) -> mark(uTake1(X)) , uTake1(ok(X)) -> ok(uTake1(X)) , uTake2(mark(X1), X2, X3, X4) -> mark(uTake2(X1, X2, X3, X4)) , uTake2(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(uTake2(X1, X2, X3, X4)) , uLength(mark(X1), X2) -> mark(uLength(X1, X2)) , uLength(ok(X1), ok(X2)) -> ok(uLength(X1, X2)) , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) , proper(tt()) -> ok(tt()) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(isNat(X)) -> isNat(proper(X)) , proper(0()) -> ok(0()) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(uTake1(X)) -> uTake1(proper(X)) , proper(uTake2(X1, X2, X3, X4)) -> uTake2(proper(X1), proper(X2), proper(X3), proper(X4)) , proper(uLength(X1, X2)) -> uLength(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^#(and(X1, X2)) -> c_1(and^#(X1, active(X2))) , active^#(and(X1, X2)) -> c_2(and^#(active(X1), X2)) , active^#(and(tt(), T)) -> c_3(T) , active^#(isNatIList(IL)) -> c_4(isNatList^#(IL)) , active^#(isNatIList(zeros())) -> c_5() , active^#(isNatIList(cons(N, IL))) -> c_6(and^#(isNat(N), isNatIList(IL))) , active^#(isNatList(cons(N, L))) -> c_7(and^#(isNat(N), isNatList(L))) , active^#(isNatList(nil())) -> c_8() , active^#(isNatList(take(N, IL))) -> c_9(and^#(isNat(N), isNatIList(IL))) , active^#(isNat(0())) -> c_10() , active^#(isNat(s(N))) -> c_11(isNat^#(N)) , active^#(isNat(length(L))) -> c_12(isNatList^#(L)) , active^#(s(X)) -> c_13(s^#(active(X))) , active^#(length(X)) -> c_14(length^#(active(X))) , active^#(length(cons(N, L))) -> c_15(uLength^#(and(isNat(N), isNatList(L)), L)) , active^#(zeros()) -> c_16(cons^#(0(), zeros())) , active^#(cons(X1, X2)) -> c_17(cons^#(active(X1), X2)) , active^#(take(X1, X2)) -> c_18(take^#(X1, active(X2))) , active^#(take(X1, X2)) -> c_19(take^#(active(X1), X2)) , active^#(take(0(), IL)) -> c_20(uTake1^#(isNatIList(IL))) , active^#(take(s(M), cons(N, IL))) -> c_21(uTake2^#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active^#(uTake1(X)) -> c_22(uTake1^#(active(X))) , active^#(uTake1(tt())) -> c_23() , active^#(uTake2(X1, X2, X3, X4)) -> c_24(uTake2^#(active(X1), X2, X3, X4)) , active^#(uTake2(tt(), M, N, IL)) -> c_25(cons^#(N, take(M, IL))) , active^#(uLength(X1, X2)) -> c_26(uLength^#(active(X1), X2)) , active^#(uLength(tt(), L)) -> c_27(s^#(length(L))) , and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) , and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) , and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) , isNatList^#(ok(X)) -> c_32(isNatList^#(X)) , isNat^#(ok(X)) -> c_33(isNat^#(X)) , s^#(mark(X)) -> c_34(s^#(X)) , s^#(ok(X)) -> c_35(s^#(X)) , length^#(mark(X)) -> c_36(length^#(X)) , length^#(ok(X)) -> c_37(length^#(X)) , uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) , uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) , cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) , take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) , uTake1^#(mark(X)) -> c_43(uTake1^#(X)) , uTake1^#(ok(X)) -> c_44(uTake1^#(X)) , uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) , uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) , proper^#(and(X1, X2)) -> c_49(and^#(proper(X1), proper(X2))) , proper^#(tt()) -> c_50() , proper^#(isNatIList(X)) -> c_51(isNatIList^#(proper(X))) , proper^#(isNatList(X)) -> c_52(isNatList^#(proper(X))) , proper^#(isNat(X)) -> c_53(isNat^#(proper(X))) , proper^#(0()) -> c_54() , proper^#(s(X)) -> c_55(s^#(proper(X))) , proper^#(length(X)) -> c_56(length^#(proper(X))) , proper^#(zeros()) -> c_57() , proper^#(cons(X1, X2)) -> c_58(cons^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_59() , proper^#(take(X1, X2)) -> c_60(take^#(proper(X1), proper(X2))) , proper^#(uTake1(X)) -> c_61(uTake1^#(proper(X))) , proper^#(uTake2(X1, X2, X3, X4)) -> c_62(uTake2^#(proper(X1), proper(X2), proper(X3), proper(X4))) , proper^#(uLength(X1, X2)) -> c_63(uLength^#(proper(X1), proper(X2))) , top^#(mark(X)) -> c_64(top^#(proper(X))) , top^#(ok(X)) -> c_65(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^#(and(X1, X2)) -> c_1(and^#(X1, active(X2))) , active^#(and(X1, X2)) -> c_2(and^#(active(X1), X2)) , active^#(and(tt(), T)) -> c_3(T) , active^#(isNatIList(IL)) -> c_4(isNatList^#(IL)) , active^#(isNatIList(zeros())) -> c_5() , active^#(isNatIList(cons(N, IL))) -> c_6(and^#(isNat(N), isNatIList(IL))) , active^#(isNatList(cons(N, L))) -> c_7(and^#(isNat(N), isNatList(L))) , active^#(isNatList(nil())) -> c_8() , active^#(isNatList(take(N, IL))) -> c_9(and^#(isNat(N), isNatIList(IL))) , active^#(isNat(0())) -> c_10() , active^#(isNat(s(N))) -> c_11(isNat^#(N)) , active^#(isNat(length(L))) -> c_12(isNatList^#(L)) , active^#(s(X)) -> c_13(s^#(active(X))) , active^#(length(X)) -> c_14(length^#(active(X))) , active^#(length(cons(N, L))) -> c_15(uLength^#(and(isNat(N), isNatList(L)), L)) , active^#(zeros()) -> c_16(cons^#(0(), zeros())) , active^#(cons(X1, X2)) -> c_17(cons^#(active(X1), X2)) , active^#(take(X1, X2)) -> c_18(take^#(X1, active(X2))) , active^#(take(X1, X2)) -> c_19(take^#(active(X1), X2)) , active^#(take(0(), IL)) -> c_20(uTake1^#(isNatIList(IL))) , active^#(take(s(M), cons(N, IL))) -> c_21(uTake2^#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active^#(uTake1(X)) -> c_22(uTake1^#(active(X))) , active^#(uTake1(tt())) -> c_23() , active^#(uTake2(X1, X2, X3, X4)) -> c_24(uTake2^#(active(X1), X2, X3, X4)) , active^#(uTake2(tt(), M, N, IL)) -> c_25(cons^#(N, take(M, IL))) , active^#(uLength(X1, X2)) -> c_26(uLength^#(active(X1), X2)) , active^#(uLength(tt(), L)) -> c_27(s^#(length(L))) , and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) , and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) , and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) , isNatList^#(ok(X)) -> c_32(isNatList^#(X)) , isNat^#(ok(X)) -> c_33(isNat^#(X)) , s^#(mark(X)) -> c_34(s^#(X)) , s^#(ok(X)) -> c_35(s^#(X)) , length^#(mark(X)) -> c_36(length^#(X)) , length^#(ok(X)) -> c_37(length^#(X)) , uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) , uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) , cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) , take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) , uTake1^#(mark(X)) -> c_43(uTake1^#(X)) , uTake1^#(ok(X)) -> c_44(uTake1^#(X)) , uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) , uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) , proper^#(and(X1, X2)) -> c_49(and^#(proper(X1), proper(X2))) , proper^#(tt()) -> c_50() , proper^#(isNatIList(X)) -> c_51(isNatIList^#(proper(X))) , proper^#(isNatList(X)) -> c_52(isNatList^#(proper(X))) , proper^#(isNat(X)) -> c_53(isNat^#(proper(X))) , proper^#(0()) -> c_54() , proper^#(s(X)) -> c_55(s^#(proper(X))) , proper^#(length(X)) -> c_56(length^#(proper(X))) , proper^#(zeros()) -> c_57() , proper^#(cons(X1, X2)) -> c_58(cons^#(proper(X1), proper(X2))) , proper^#(nil()) -> c_59() , proper^#(take(X1, X2)) -> c_60(take^#(proper(X1), proper(X2))) , proper^#(uTake1(X)) -> c_61(uTake1^#(proper(X))) , proper^#(uTake2(X1, X2, X3, X4)) -> c_62(uTake2^#(proper(X1), proper(X2), proper(X3), proper(X4))) , proper^#(uLength(X1, X2)) -> c_63(uLength^#(proper(X1), proper(X2))) , top^#(mark(X)) -> c_64(top^#(proper(X))) , top^#(ok(X)) -> c_65(top^#(active(X))) } Strict Trs: { active(and(X1, X2)) -> and(X1, active(X2)) , active(and(X1, X2)) -> and(active(X1), X2) , active(and(tt(), T)) -> mark(T) , active(isNatIList(IL)) -> mark(isNatList(IL)) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNatList(cons(N, L))) -> mark(and(isNat(N), isNatList(L))) , active(isNatList(nil())) -> mark(tt()) , active(isNatList(take(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(N))) -> mark(isNat(N)) , active(isNat(length(L))) -> mark(isNatList(L)) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(uLength(and(isNat(N), isNatList(L)), L)) , active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(0(), IL)) -> mark(uTake1(isNatIList(IL))) , active(take(s(M), cons(N, IL))) -> mark(uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active(uTake1(X)) -> uTake1(active(X)) , active(uTake1(tt())) -> mark(nil()) , active(uTake2(X1, X2, X3, X4)) -> uTake2(active(X1), X2, X3, X4) , active(uTake2(tt(), M, N, IL)) -> mark(cons(N, take(M, IL))) , active(uLength(X1, X2)) -> uLength(active(X1), X2) , active(uLength(tt(), L)) -> mark(s(length(L))) , and(X1, mark(X2)) -> mark(and(X1, X2)) , and(mark(X1), X2) -> mark(and(X1, X2)) , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , isNat(ok(X)) -> ok(isNat(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , length(mark(X)) -> mark(length(X)) , length(ok(X)) -> ok(length(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , 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)) , uTake1(mark(X)) -> mark(uTake1(X)) , uTake1(ok(X)) -> ok(uTake1(X)) , uTake2(mark(X1), X2, X3, X4) -> mark(uTake2(X1, X2, X3, X4)) , uTake2(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(uTake2(X1, X2, X3, X4)) , uLength(mark(X1), X2) -> mark(uLength(X1, X2)) , uLength(ok(X1), ok(X2)) -> ok(uLength(X1, X2)) , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) , proper(tt()) -> ok(tt()) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(isNat(X)) -> isNat(proper(X)) , proper(0()) -> ok(0()) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(uTake1(X)) -> uTake1(proper(X)) , proper(uTake2(X1, X2, X3, X4)) -> uTake2(proper(X1), proper(X2), proper(X3), proper(X4)) , proper(uLength(X1, X2)) -> uLength(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^#(and(X1, X2)) -> c_1(and^#(X1, active(X2))) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 2: active^#(and(X1, X2)) -> c_2(and^#(active(X1), X2)) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 3: active^#(and(tt(), T)) -> c_3(T) -->_1 top^#(ok(X)) -> c_65(top^#(active(X))) :65 -->_1 top^#(mark(X)) -> c_64(top^#(proper(X))) :64 -->_1 proper^#(uLength(X1, X2)) -> c_63(uLength^#(proper(X1), proper(X2))) :63 -->_1 proper^#(uTake2(X1, X2, X3, X4)) -> c_62(uTake2^#(proper(X1), proper(X2), proper(X3), proper(X4))) :62 -->_1 proper^#(uTake1(X)) -> c_61(uTake1^#(proper(X))) :61 -->_1 proper^#(take(X1, X2)) -> c_60(take^#(proper(X1), proper(X2))) :60 -->_1 proper^#(cons(X1, X2)) -> c_58(cons^#(proper(X1), proper(X2))) :58 -->_1 proper^#(length(X)) -> c_56(length^#(proper(X))) :56 -->_1 proper^#(s(X)) -> c_55(s^#(proper(X))) :55 -->_1 proper^#(isNat(X)) -> c_53(isNat^#(proper(X))) :53 -->_1 proper^#(isNatList(X)) -> c_52(isNatList^#(proper(X))) :52 -->_1 proper^#(isNatIList(X)) -> c_51(isNatIList^#(proper(X))) :51 -->_1 proper^#(and(X1, X2)) -> c_49(and^#(proper(X1), proper(X2))) :49 -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :48 -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 -->_1 length^#(ok(X)) -> c_37(length^#(X)) :36 -->_1 length^#(mark(X)) -> c_36(length^#(X)) :35 -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 -->_1 isNat^#(ok(X)) -> c_33(isNat^#(X)) :32 -->_1 isNatList^#(ok(X)) -> c_32(isNatList^#(X)) :31 -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 -->_1 active^#(uLength(tt(), L)) -> c_27(s^#(length(L))) :27 -->_1 active^#(uLength(X1, X2)) -> c_26(uLength^#(active(X1), X2)) :26 -->_1 active^#(uTake2(tt(), M, N, IL)) -> c_25(cons^#(N, take(M, IL))) :25 -->_1 active^#(uTake2(X1, X2, X3, X4)) -> c_24(uTake2^#(active(X1), X2, X3, X4)) :24 -->_1 active^#(uTake1(X)) -> c_22(uTake1^#(active(X))) :22 -->_1 active^#(take(s(M), cons(N, IL))) -> c_21(uTake2^#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) :21 -->_1 active^#(take(0(), IL)) -> c_20(uTake1^#(isNatIList(IL))) :20 -->_1 active^#(take(X1, X2)) -> c_19(take^#(active(X1), X2)) :19 -->_1 active^#(take(X1, X2)) -> c_18(take^#(X1, active(X2))) :18 -->_1 active^#(cons(X1, X2)) -> c_17(cons^#(active(X1), X2)) :17 -->_1 active^#(length(cons(N, L))) -> c_15(uLength^#(and(isNat(N), isNatList(L)), L)) :15 -->_1 active^#(length(X)) -> c_14(length^#(active(X))) :14 -->_1 active^#(s(X)) -> c_13(s^#(active(X))) :13 -->_1 active^#(isNat(length(L))) -> c_12(isNatList^#(L)) :12 -->_1 active^#(isNat(s(N))) -> c_11(isNat^#(N)) :11 -->_1 active^#(isNatList(take(N, IL))) -> c_9(and^#(isNat(N), isNatIList(IL))) :9 -->_1 active^#(isNatList(cons(N, L))) -> c_7(and^#(isNat(N), isNatList(L))) :7 -->_1 active^#(isNatIList(cons(N, IL))) -> c_6(and^#(isNat(N), isNatIList(IL))) :6 -->_1 active^#(isNatIList(IL)) -> c_4(isNatList^#(IL)) :4 -->_1 proper^#(nil()) -> c_59() :59 -->_1 proper^#(zeros()) -> c_57() :57 -->_1 proper^#(0()) -> c_54() :54 -->_1 proper^#(tt()) -> c_50() :50 -->_1 active^#(uTake1(tt())) -> c_23() :23 -->_1 active^#(zeros()) -> c_16(cons^#(0(), zeros())) :16 -->_1 active^#(isNat(0())) -> c_10() :10 -->_1 active^#(isNatList(nil())) -> c_8() :8 -->_1 active^#(isNatIList(zeros())) -> c_5() :5 -->_1 active^#(and(tt(), T)) -> c_3(T) :3 -->_1 active^#(and(X1, X2)) -> c_2(and^#(active(X1), X2)) :2 -->_1 active^#(and(X1, X2)) -> c_1(and^#(X1, active(X2))) :1 4: active^#(isNatIList(IL)) -> c_4(isNatList^#(IL)) -->_1 isNatList^#(ok(X)) -> c_32(isNatList^#(X)) :31 5: active^#(isNatIList(zeros())) -> c_5() 6: active^#(isNatIList(cons(N, IL))) -> c_6(and^#(isNat(N), isNatIList(IL))) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 7: active^#(isNatList(cons(N, L))) -> c_7(and^#(isNat(N), isNatList(L))) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 8: active^#(isNatList(nil())) -> c_8() 9: active^#(isNatList(take(N, IL))) -> c_9(and^#(isNat(N), isNatIList(IL))) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 10: active^#(isNat(0())) -> c_10() 11: active^#(isNat(s(N))) -> c_11(isNat^#(N)) -->_1 isNat^#(ok(X)) -> c_33(isNat^#(X)) :32 12: active^#(isNat(length(L))) -> c_12(isNatList^#(L)) -->_1 isNatList^#(ok(X)) -> c_32(isNatList^#(X)) :31 13: active^#(s(X)) -> c_13(s^#(active(X))) -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 14: active^#(length(X)) -> c_14(length^#(active(X))) -->_1 length^#(ok(X)) -> c_37(length^#(X)) :36 -->_1 length^#(mark(X)) -> c_36(length^#(X)) :35 15: active^#(length(cons(N, L))) -> c_15(uLength^#(and(isNat(N), isNatList(L)), L)) -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 16: active^#(zeros()) -> c_16(cons^#(0(), zeros())) 17: active^#(cons(X1, X2)) -> c_17(cons^#(active(X1), X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 18: active^#(take(X1, X2)) -> c_18(take^#(X1, active(X2))) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 19: active^#(take(X1, X2)) -> c_19(take^#(active(X1), X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 20: active^#(take(0(), IL)) -> c_20(uTake1^#(isNatIList(IL))) -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 21: active^#(take(s(M), cons(N, IL))) -> c_21(uTake2^#(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 22: active^#(uTake1(X)) -> c_22(uTake1^#(active(X))) -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 23: active^#(uTake1(tt())) -> c_23() 24: active^#(uTake2(X1, X2, X3, X4)) -> c_24(uTake2^#(active(X1), X2, X3, X4)) -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 25: active^#(uTake2(tt(), M, N, IL)) -> c_25(cons^#(N, take(M, IL))) -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 26: active^#(uLength(X1, X2)) -> c_26(uLength^#(active(X1), X2)) -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 27: active^#(uLength(tt(), L)) -> c_27(s^#(length(L))) -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 28: and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 29: and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 30: and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 31: isNatList^#(ok(X)) -> c_32(isNatList^#(X)) -->_1 isNatList^#(ok(X)) -> c_32(isNatList^#(X)) :31 32: isNat^#(ok(X)) -> c_33(isNat^#(X)) -->_1 isNat^#(ok(X)) -> c_33(isNat^#(X)) :32 33: s^#(mark(X)) -> c_34(s^#(X)) -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 34: s^#(ok(X)) -> c_35(s^#(X)) -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 35: length^#(mark(X)) -> c_36(length^#(X)) -->_1 length^#(ok(X)) -> c_37(length^#(X)) :36 -->_1 length^#(mark(X)) -> c_36(length^#(X)) :35 36: length^#(ok(X)) -> c_37(length^#(X)) -->_1 length^#(ok(X)) -> c_37(length^#(X)) :36 -->_1 length^#(mark(X)) -> c_36(length^#(X)) :35 37: uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 38: uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 39: cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 40: cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 41: take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 42: take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 43: take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 44: uTake1^#(mark(X)) -> c_43(uTake1^#(X)) -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 45: uTake1^#(ok(X)) -> c_44(uTake1^#(X)) -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 46: uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 47: uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 48: isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :48 49: proper^#(and(X1, X2)) -> c_49(and^#(proper(X1), proper(X2))) -->_1 and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) :30 -->_1 and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) :29 -->_1 and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) :28 50: proper^#(tt()) -> c_50() 51: proper^#(isNatIList(X)) -> c_51(isNatIList^#(proper(X))) -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :48 52: proper^#(isNatList(X)) -> c_52(isNatList^#(proper(X))) -->_1 isNatList^#(ok(X)) -> c_32(isNatList^#(X)) :31 53: proper^#(isNat(X)) -> c_53(isNat^#(proper(X))) -->_1 isNat^#(ok(X)) -> c_33(isNat^#(X)) :32 54: proper^#(0()) -> c_54() 55: proper^#(s(X)) -> c_55(s^#(proper(X))) -->_1 s^#(ok(X)) -> c_35(s^#(X)) :34 -->_1 s^#(mark(X)) -> c_34(s^#(X)) :33 56: proper^#(length(X)) -> c_56(length^#(proper(X))) -->_1 length^#(ok(X)) -> c_37(length^#(X)) :36 -->_1 length^#(mark(X)) -> c_36(length^#(X)) :35 57: proper^#(zeros()) -> c_57() 58: proper^#(cons(X1, X2)) -> c_58(cons^#(proper(X1), proper(X2))) -->_1 cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) :40 -->_1 cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) :39 59: proper^#(nil()) -> c_59() 60: proper^#(take(X1, X2)) -> c_60(take^#(proper(X1), proper(X2))) -->_1 take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) :43 -->_1 take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) :42 -->_1 take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) :41 61: proper^#(uTake1(X)) -> c_61(uTake1^#(proper(X))) -->_1 uTake1^#(ok(X)) -> c_44(uTake1^#(X)) :45 -->_1 uTake1^#(mark(X)) -> c_43(uTake1^#(X)) :44 62: proper^#(uTake2(X1, X2, X3, X4)) -> c_62(uTake2^#(proper(X1), proper(X2), proper(X3), proper(X4))) -->_1 uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) :47 -->_1 uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) :46 63: proper^#(uLength(X1, X2)) -> c_63(uLength^#(proper(X1), proper(X2))) -->_1 uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) :38 -->_1 uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) :37 64: top^#(mark(X)) -> c_64(top^#(proper(X))) -->_1 top^#(ok(X)) -> c_65(top^#(active(X))) :65 -->_1 top^#(mark(X)) -> c_64(top^#(proper(X))) :64 65: top^#(ok(X)) -> c_65(top^#(active(X))) -->_1 top^#(ok(X)) -> c_65(top^#(active(X))) :65 -->_1 top^#(mark(X)) -> c_64(top^#(proper(X))) :64 Only the nodes {16,28,30,29,31,32,33,34,35,36,37,38,39,40,41,43,42,44,45,46,47,48,50,54,57,59,64,65} are reachable from nodes {16,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,50,54,57,59,64,65} 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: { active^#(zeros()) -> c_16(cons^#(0(), zeros())) , and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) , and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) , and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) , isNatList^#(ok(X)) -> c_32(isNatList^#(X)) , isNat^#(ok(X)) -> c_33(isNat^#(X)) , s^#(mark(X)) -> c_34(s^#(X)) , s^#(ok(X)) -> c_35(s^#(X)) , length^#(mark(X)) -> c_36(length^#(X)) , length^#(ok(X)) -> c_37(length^#(X)) , uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) , uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) , cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) , take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) , uTake1^#(mark(X)) -> c_43(uTake1^#(X)) , uTake1^#(ok(X)) -> c_44(uTake1^#(X)) , uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) , uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) , proper^#(tt()) -> c_50() , proper^#(0()) -> c_54() , proper^#(zeros()) -> c_57() , proper^#(nil()) -> c_59() , top^#(mark(X)) -> c_64(top^#(proper(X))) , top^#(ok(X)) -> c_65(top^#(active(X))) } Strict Trs: { active(and(X1, X2)) -> and(X1, active(X2)) , active(and(X1, X2)) -> and(active(X1), X2) , active(and(tt(), T)) -> mark(T) , active(isNatIList(IL)) -> mark(isNatList(IL)) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNatList(cons(N, L))) -> mark(and(isNat(N), isNatList(L))) , active(isNatList(nil())) -> mark(tt()) , active(isNatList(take(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(N))) -> mark(isNat(N)) , active(isNat(length(L))) -> mark(isNatList(L)) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(uLength(and(isNat(N), isNatList(L)), L)) , active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(0(), IL)) -> mark(uTake1(isNatIList(IL))) , active(take(s(M), cons(N, IL))) -> mark(uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active(uTake1(X)) -> uTake1(active(X)) , active(uTake1(tt())) -> mark(nil()) , active(uTake2(X1, X2, X3, X4)) -> uTake2(active(X1), X2, X3, X4) , active(uTake2(tt(), M, N, IL)) -> mark(cons(N, take(M, IL))) , active(uLength(X1, X2)) -> uLength(active(X1), X2) , active(uLength(tt(), L)) -> mark(s(length(L))) , and(X1, mark(X2)) -> mark(and(X1, X2)) , and(mark(X1), X2) -> mark(and(X1, X2)) , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , isNat(ok(X)) -> ok(isNat(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , length(mark(X)) -> mark(length(X)) , length(ok(X)) -> ok(length(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , 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)) , uTake1(mark(X)) -> mark(uTake1(X)) , uTake1(ok(X)) -> ok(uTake1(X)) , uTake2(mark(X1), X2, X3, X4) -> mark(uTake2(X1, X2, X3, X4)) , uTake2(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(uTake2(X1, X2, X3, X4)) , uLength(mark(X1), X2) -> mark(uLength(X1, X2)) , uLength(ok(X1), ok(X2)) -> ok(uLength(X1, X2)) , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) , proper(tt()) -> ok(tt()) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(isNat(X)) -> isNat(proper(X)) , proper(0()) -> ok(0()) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(uTake1(X)) -> uTake1(proper(X)) , proper(uTake2(X1, X2, X3, X4)) -> uTake2(proper(X1), proper(X2), proper(X3), proper(X4)) , proper(uLength(X1, X2)) -> uLength(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 {1,23,24,25,26} by applications of Pre({1,23,24,25,26}) = {}. Here rules are labeled as follows: DPs: { 1: active^#(zeros()) -> c_16(cons^#(0(), zeros())) , 2: and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) , 3: and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) , 4: and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) , 5: isNatList^#(ok(X)) -> c_32(isNatList^#(X)) , 6: isNat^#(ok(X)) -> c_33(isNat^#(X)) , 7: s^#(mark(X)) -> c_34(s^#(X)) , 8: s^#(ok(X)) -> c_35(s^#(X)) , 9: length^#(mark(X)) -> c_36(length^#(X)) , 10: length^#(ok(X)) -> c_37(length^#(X)) , 11: uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) , 12: uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) , 13: cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) , 14: cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) , 15: take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) , 16: take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) , 17: take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) , 18: uTake1^#(mark(X)) -> c_43(uTake1^#(X)) , 19: uTake1^#(ok(X)) -> c_44(uTake1^#(X)) , 20: uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) , 21: uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) , 22: isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) , 23: proper^#(tt()) -> c_50() , 24: proper^#(0()) -> c_54() , 25: proper^#(zeros()) -> c_57() , 26: proper^#(nil()) -> c_59() , 27: top^#(mark(X)) -> c_64(top^#(proper(X))) , 28: top^#(ok(X)) -> c_65(top^#(active(X))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { and^#(X1, mark(X2)) -> c_28(and^#(X1, X2)) , and^#(mark(X1), X2) -> c_29(and^#(X1, X2)) , and^#(ok(X1), ok(X2)) -> c_30(and^#(X1, X2)) , isNatList^#(ok(X)) -> c_32(isNatList^#(X)) , isNat^#(ok(X)) -> c_33(isNat^#(X)) , s^#(mark(X)) -> c_34(s^#(X)) , s^#(ok(X)) -> c_35(s^#(X)) , length^#(mark(X)) -> c_36(length^#(X)) , length^#(ok(X)) -> c_37(length^#(X)) , uLength^#(mark(X1), X2) -> c_47(uLength^#(X1, X2)) , uLength^#(ok(X1), ok(X2)) -> c_48(uLength^#(X1, X2)) , cons^#(mark(X1), X2) -> c_38(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_39(cons^#(X1, X2)) , take^#(X1, mark(X2)) -> c_40(take^#(X1, X2)) , take^#(mark(X1), X2) -> c_41(take^#(X1, X2)) , take^#(ok(X1), ok(X2)) -> c_42(take^#(X1, X2)) , uTake1^#(mark(X)) -> c_43(uTake1^#(X)) , uTake1^#(ok(X)) -> c_44(uTake1^#(X)) , uTake2^#(mark(X1), X2, X3, X4) -> c_45(uTake2^#(X1, X2, X3, X4)) , uTake2^#(ok(X1), ok(X2), ok(X3), ok(X4)) -> c_46(uTake2^#(X1, X2, X3, X4)) , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) , top^#(mark(X)) -> c_64(top^#(proper(X))) , top^#(ok(X)) -> c_65(top^#(active(X))) } Strict Trs: { active(and(X1, X2)) -> and(X1, active(X2)) , active(and(X1, X2)) -> and(active(X1), X2) , active(and(tt(), T)) -> mark(T) , active(isNatIList(IL)) -> mark(isNatList(IL)) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNatList(cons(N, L))) -> mark(and(isNat(N), isNatList(L))) , active(isNatList(nil())) -> mark(tt()) , active(isNatList(take(N, IL))) -> mark(and(isNat(N), isNatIList(IL))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(N))) -> mark(isNat(N)) , active(isNat(length(L))) -> mark(isNatList(L)) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(uLength(and(isNat(N), isNatList(L)), L)) , active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(take(X1, X2)) -> take(X1, active(X2)) , active(take(X1, X2)) -> take(active(X1), X2) , active(take(0(), IL)) -> mark(uTake1(isNatIList(IL))) , active(take(s(M), cons(N, IL))) -> mark(uTake2(and(isNat(M), and(isNat(N), isNatIList(IL))), M, N, IL)) , active(uTake1(X)) -> uTake1(active(X)) , active(uTake1(tt())) -> mark(nil()) , active(uTake2(X1, X2, X3, X4)) -> uTake2(active(X1), X2, X3, X4) , active(uTake2(tt(), M, N, IL)) -> mark(cons(N, take(M, IL))) , active(uLength(X1, X2)) -> uLength(active(X1), X2) , active(uLength(tt(), L)) -> mark(s(length(L))) , and(X1, mark(X2)) -> mark(and(X1, X2)) , and(mark(X1), X2) -> mark(and(X1, X2)) , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , isNat(ok(X)) -> ok(isNat(X)) , s(mark(X)) -> mark(s(X)) , s(ok(X)) -> ok(s(X)) , length(mark(X)) -> mark(length(X)) , length(ok(X)) -> ok(length(X)) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , 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)) , uTake1(mark(X)) -> mark(uTake1(X)) , uTake1(ok(X)) -> ok(uTake1(X)) , uTake2(mark(X1), X2, X3, X4) -> mark(uTake2(X1, X2, X3, X4)) , uTake2(ok(X1), ok(X2), ok(X3), ok(X4)) -> ok(uTake2(X1, X2, X3, X4)) , uLength(mark(X1), X2) -> mark(uLength(X1, X2)) , uLength(ok(X1), ok(X2)) -> ok(uLength(X1, X2)) , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) , proper(tt()) -> ok(tt()) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(isNat(X)) -> isNat(proper(X)) , proper(0()) -> ok(0()) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(nil()) -> ok(nil()) , proper(take(X1, X2)) -> take(proper(X1), proper(X2)) , proper(uTake1(X)) -> uTake1(proper(X)) , proper(uTake2(X1, X2, X3, X4)) -> uTake2(proper(X1), proper(X2), proper(X3), proper(X4)) , proper(uLength(X1, X2)) -> uLength(proper(X1), proper(X2)) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Weak DPs: { active^#(zeros()) -> c_16(cons^#(0(), zeros())) , proper^#(tt()) -> c_50() , proper^#(0()) -> c_54() , proper^#(zeros()) -> c_57() , proper^#(nil()) -> c_59() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..