MAYBE We are left with following problem, upon which TcT provides the certificate MAYBE. Strict Trs: { active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(U11(X)) -> U11(active(X)) , active(U11(tt())) -> mark(tt()) , active(U21(X)) -> U21(active(X)) , active(U21(tt())) -> mark(tt()) , active(U31(X)) -> U31(active(X)) , active(U31(tt())) -> mark(tt()) , active(U41(X1, X2)) -> U41(active(X1), X2) , active(U41(tt(), V2)) -> mark(U42(isNatIList(V2))) , active(U42(X)) -> U42(active(X)) , active(U42(tt())) -> mark(tt()) , active(isNatIList(V)) -> mark(U31(isNatList(V))) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) , active(U51(X1, X2)) -> U51(active(X1), X2) , active(U51(tt(), V2)) -> mark(U52(isNatList(V2))) , active(U52(X)) -> U52(active(X)) , active(U52(tt())) -> mark(tt()) , active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) , active(isNatList(nil())) -> mark(tt()) , active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) , active(U61(tt(), L, N)) -> mark(U62(isNat(N), L)) , active(U62(X1, X2)) -> U62(active(X1), X2) , active(U62(tt(), L)) -> mark(s(length(L))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(V1))) -> mark(U21(isNat(V1))) , active(isNat(length(V1))) -> mark(U11(isNatList(V1))) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) , active(length(nil())) -> mark(0()) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , U11(mark(X)) -> mark(U11(X)) , U11(ok(X)) -> ok(U11(X)) , U21(mark(X)) -> mark(U21(X)) , U21(ok(X)) -> ok(U21(X)) , U31(mark(X)) -> mark(U31(X)) , U31(ok(X)) -> ok(U31(X)) , U41(mark(X1), X2) -> mark(U41(X1, X2)) , U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) , U42(mark(X)) -> mark(U42(X)) , U42(ok(X)) -> ok(U42(X)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , U51(mark(X1), X2) -> mark(U51(X1, X2)) , U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) , U52(mark(X)) -> mark(U52(X)) , U52(ok(X)) -> ok(U52(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) , U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) , U62(mark(X1), X2) -> mark(U62(X1, X2)) , U62(ok(X1), ok(X2)) -> ok(U62(X1, X2)) , 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)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(U11(X)) -> U11(proper(X)) , proper(tt()) -> ok(tt()) , proper(U21(X)) -> U21(proper(X)) , proper(U31(X)) -> U31(proper(X)) , proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) , proper(U42(X)) -> U42(proper(X)) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) , proper(U52(X)) -> U52(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) , proper(U62(X1, X2)) -> U62(proper(X1), proper(X2)) , proper(isNat(X)) -> isNat(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(nil()) -> ok(nil()) , 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^#(zeros()) -> c_1(cons^#(0(), zeros())) , active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) , active^#(U11(X)) -> c_3(U11^#(active(X))) , active^#(U11(tt())) -> c_4() , active^#(U21(X)) -> c_5(U21^#(active(X))) , active^#(U21(tt())) -> c_6() , active^#(U31(X)) -> c_7(U31^#(active(X))) , active^#(U31(tt())) -> c_8() , active^#(U41(X1, X2)) -> c_9(U41^#(active(X1), X2)) , active^#(U41(tt(), V2)) -> c_10(U42^#(isNatIList(V2))) , active^#(U42(X)) -> c_11(U42^#(active(X))) , active^#(U42(tt())) -> c_12() , active^#(isNatIList(V)) -> c_13(U31^#(isNatList(V))) , active^#(isNatIList(zeros())) -> c_14() , active^#(isNatIList(cons(V1, V2))) -> c_15(U41^#(isNat(V1), V2)) , active^#(U51(X1, X2)) -> c_16(U51^#(active(X1), X2)) , active^#(U51(tt(), V2)) -> c_17(U52^#(isNatList(V2))) , active^#(U52(X)) -> c_18(U52^#(active(X))) , active^#(U52(tt())) -> c_19() , active^#(isNatList(cons(V1, V2))) -> c_20(U51^#(isNat(V1), V2)) , active^#(isNatList(nil())) -> c_21() , active^#(U61(X1, X2, X3)) -> c_22(U61^#(active(X1), X2, X3)) , active^#(U61(tt(), L, N)) -> c_23(U62^#(isNat(N), L)) , active^#(U62(X1, X2)) -> c_24(U62^#(active(X1), X2)) , active^#(U62(tt(), L)) -> c_25(s^#(length(L))) , active^#(isNat(0())) -> c_26() , active^#(isNat(s(V1))) -> c_27(U21^#(isNat(V1))) , active^#(isNat(length(V1))) -> c_28(U11^#(isNatList(V1))) , active^#(s(X)) -> c_29(s^#(active(X))) , active^#(length(X)) -> c_30(length^#(active(X))) , active^#(length(cons(N, L))) -> c_31(U61^#(isNatList(L), L, N)) , active^#(length(nil())) -> c_32() , cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) , U11^#(mark(X)) -> c_35(U11^#(X)) , U11^#(ok(X)) -> c_36(U11^#(X)) , U21^#(mark(X)) -> c_37(U21^#(X)) , U21^#(ok(X)) -> c_38(U21^#(X)) , U31^#(mark(X)) -> c_39(U31^#(X)) , U31^#(ok(X)) -> c_40(U31^#(X)) , U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) , U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) , U42^#(mark(X)) -> c_43(U42^#(X)) , U42^#(ok(X)) -> c_44(U42^#(X)) , U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) , U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) , U52^#(mark(X)) -> c_48(U52^#(X)) , U52^#(ok(X)) -> c_49(U52^#(X)) , U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) , U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) , U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) , U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) , s^#(mark(X)) -> c_56(s^#(X)) , s^#(ok(X)) -> c_57(s^#(X)) , length^#(mark(X)) -> c_58(length^#(X)) , length^#(ok(X)) -> c_59(length^#(X)) , isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) , isNatList^#(ok(X)) -> c_50(isNatList^#(X)) , isNat^#(ok(X)) -> c_55(isNat^#(X)) , proper^#(zeros()) -> c_60() , proper^#(cons(X1, X2)) -> c_61(cons^#(proper(X1), proper(X2))) , proper^#(0()) -> c_62() , proper^#(U11(X)) -> c_63(U11^#(proper(X))) , proper^#(tt()) -> c_64() , proper^#(U21(X)) -> c_65(U21^#(proper(X))) , proper^#(U31(X)) -> c_66(U31^#(proper(X))) , proper^#(U41(X1, X2)) -> c_67(U41^#(proper(X1), proper(X2))) , proper^#(U42(X)) -> c_68(U42^#(proper(X))) , proper^#(isNatIList(X)) -> c_69(isNatIList^#(proper(X))) , proper^#(U51(X1, X2)) -> c_70(U51^#(proper(X1), proper(X2))) , proper^#(U52(X)) -> c_71(U52^#(proper(X))) , proper^#(isNatList(X)) -> c_72(isNatList^#(proper(X))) , proper^#(U61(X1, X2, X3)) -> c_73(U61^#(proper(X1), proper(X2), proper(X3))) , proper^#(U62(X1, X2)) -> c_74(U62^#(proper(X1), proper(X2))) , proper^#(isNat(X)) -> c_75(isNat^#(proper(X))) , proper^#(s(X)) -> c_76(s^#(proper(X))) , proper^#(length(X)) -> c_77(length^#(proper(X))) , proper^#(nil()) -> c_78() , top^#(mark(X)) -> c_79(top^#(proper(X))) , top^#(ok(X)) -> c_80(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^#(zeros()) -> c_1(cons^#(0(), zeros())) , active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) , active^#(U11(X)) -> c_3(U11^#(active(X))) , active^#(U11(tt())) -> c_4() , active^#(U21(X)) -> c_5(U21^#(active(X))) , active^#(U21(tt())) -> c_6() , active^#(U31(X)) -> c_7(U31^#(active(X))) , active^#(U31(tt())) -> c_8() , active^#(U41(X1, X2)) -> c_9(U41^#(active(X1), X2)) , active^#(U41(tt(), V2)) -> c_10(U42^#(isNatIList(V2))) , active^#(U42(X)) -> c_11(U42^#(active(X))) , active^#(U42(tt())) -> c_12() , active^#(isNatIList(V)) -> c_13(U31^#(isNatList(V))) , active^#(isNatIList(zeros())) -> c_14() , active^#(isNatIList(cons(V1, V2))) -> c_15(U41^#(isNat(V1), V2)) , active^#(U51(X1, X2)) -> c_16(U51^#(active(X1), X2)) , active^#(U51(tt(), V2)) -> c_17(U52^#(isNatList(V2))) , active^#(U52(X)) -> c_18(U52^#(active(X))) , active^#(U52(tt())) -> c_19() , active^#(isNatList(cons(V1, V2))) -> c_20(U51^#(isNat(V1), V2)) , active^#(isNatList(nil())) -> c_21() , active^#(U61(X1, X2, X3)) -> c_22(U61^#(active(X1), X2, X3)) , active^#(U61(tt(), L, N)) -> c_23(U62^#(isNat(N), L)) , active^#(U62(X1, X2)) -> c_24(U62^#(active(X1), X2)) , active^#(U62(tt(), L)) -> c_25(s^#(length(L))) , active^#(isNat(0())) -> c_26() , active^#(isNat(s(V1))) -> c_27(U21^#(isNat(V1))) , active^#(isNat(length(V1))) -> c_28(U11^#(isNatList(V1))) , active^#(s(X)) -> c_29(s^#(active(X))) , active^#(length(X)) -> c_30(length^#(active(X))) , active^#(length(cons(N, L))) -> c_31(U61^#(isNatList(L), L, N)) , active^#(length(nil())) -> c_32() , cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) , U11^#(mark(X)) -> c_35(U11^#(X)) , U11^#(ok(X)) -> c_36(U11^#(X)) , U21^#(mark(X)) -> c_37(U21^#(X)) , U21^#(ok(X)) -> c_38(U21^#(X)) , U31^#(mark(X)) -> c_39(U31^#(X)) , U31^#(ok(X)) -> c_40(U31^#(X)) , U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) , U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) , U42^#(mark(X)) -> c_43(U42^#(X)) , U42^#(ok(X)) -> c_44(U42^#(X)) , U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) , U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) , U52^#(mark(X)) -> c_48(U52^#(X)) , U52^#(ok(X)) -> c_49(U52^#(X)) , U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) , U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) , U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) , U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) , s^#(mark(X)) -> c_56(s^#(X)) , s^#(ok(X)) -> c_57(s^#(X)) , length^#(mark(X)) -> c_58(length^#(X)) , length^#(ok(X)) -> c_59(length^#(X)) , isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) , isNatList^#(ok(X)) -> c_50(isNatList^#(X)) , isNat^#(ok(X)) -> c_55(isNat^#(X)) , proper^#(zeros()) -> c_60() , proper^#(cons(X1, X2)) -> c_61(cons^#(proper(X1), proper(X2))) , proper^#(0()) -> c_62() , proper^#(U11(X)) -> c_63(U11^#(proper(X))) , proper^#(tt()) -> c_64() , proper^#(U21(X)) -> c_65(U21^#(proper(X))) , proper^#(U31(X)) -> c_66(U31^#(proper(X))) , proper^#(U41(X1, X2)) -> c_67(U41^#(proper(X1), proper(X2))) , proper^#(U42(X)) -> c_68(U42^#(proper(X))) , proper^#(isNatIList(X)) -> c_69(isNatIList^#(proper(X))) , proper^#(U51(X1, X2)) -> c_70(U51^#(proper(X1), proper(X2))) , proper^#(U52(X)) -> c_71(U52^#(proper(X))) , proper^#(isNatList(X)) -> c_72(isNatList^#(proper(X))) , proper^#(U61(X1, X2, X3)) -> c_73(U61^#(proper(X1), proper(X2), proper(X3))) , proper^#(U62(X1, X2)) -> c_74(U62^#(proper(X1), proper(X2))) , proper^#(isNat(X)) -> c_75(isNat^#(proper(X))) , proper^#(s(X)) -> c_76(s^#(proper(X))) , proper^#(length(X)) -> c_77(length^#(proper(X))) , proper^#(nil()) -> c_78() , top^#(mark(X)) -> c_79(top^#(proper(X))) , top^#(ok(X)) -> c_80(top^#(active(X))) } Strict Trs: { active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(U11(X)) -> U11(active(X)) , active(U11(tt())) -> mark(tt()) , active(U21(X)) -> U21(active(X)) , active(U21(tt())) -> mark(tt()) , active(U31(X)) -> U31(active(X)) , active(U31(tt())) -> mark(tt()) , active(U41(X1, X2)) -> U41(active(X1), X2) , active(U41(tt(), V2)) -> mark(U42(isNatIList(V2))) , active(U42(X)) -> U42(active(X)) , active(U42(tt())) -> mark(tt()) , active(isNatIList(V)) -> mark(U31(isNatList(V))) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) , active(U51(X1, X2)) -> U51(active(X1), X2) , active(U51(tt(), V2)) -> mark(U52(isNatList(V2))) , active(U52(X)) -> U52(active(X)) , active(U52(tt())) -> mark(tt()) , active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) , active(isNatList(nil())) -> mark(tt()) , active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) , active(U61(tt(), L, N)) -> mark(U62(isNat(N), L)) , active(U62(X1, X2)) -> U62(active(X1), X2) , active(U62(tt(), L)) -> mark(s(length(L))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(V1))) -> mark(U21(isNat(V1))) , active(isNat(length(V1))) -> mark(U11(isNatList(V1))) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) , active(length(nil())) -> mark(0()) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , U11(mark(X)) -> mark(U11(X)) , U11(ok(X)) -> ok(U11(X)) , U21(mark(X)) -> mark(U21(X)) , U21(ok(X)) -> ok(U21(X)) , U31(mark(X)) -> mark(U31(X)) , U31(ok(X)) -> ok(U31(X)) , U41(mark(X1), X2) -> mark(U41(X1, X2)) , U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) , U42(mark(X)) -> mark(U42(X)) , U42(ok(X)) -> ok(U42(X)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , U51(mark(X1), X2) -> mark(U51(X1, X2)) , U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) , U52(mark(X)) -> mark(U52(X)) , U52(ok(X)) -> ok(U52(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) , U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) , U62(mark(X1), X2) -> mark(U62(X1, X2)) , U62(ok(X1), ok(X2)) -> ok(U62(X1, X2)) , 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)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(U11(X)) -> U11(proper(X)) , proper(tt()) -> ok(tt()) , proper(U21(X)) -> U21(proper(X)) , proper(U31(X)) -> U31(proper(X)) , proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) , proper(U42(X)) -> U42(proper(X)) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) , proper(U52(X)) -> U52(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) , proper(U62(X1, X2)) -> U62(proper(X1), proper(X2)) , proper(isNat(X)) -> isNat(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(nil()) -> ok(nil()) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Obligation: runtime complexity Answer: MAYBE Consider the dependency graph: 1: active^#(zeros()) -> c_1(cons^#(0(), zeros())) 2: active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) :34 -->_1 cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) :33 3: active^#(U11(X)) -> c_3(U11^#(active(X))) -->_1 U11^#(ok(X)) -> c_36(U11^#(X)) :36 -->_1 U11^#(mark(X)) -> c_35(U11^#(X)) :35 4: active^#(U11(tt())) -> c_4() 5: active^#(U21(X)) -> c_5(U21^#(active(X))) -->_1 U21^#(ok(X)) -> c_38(U21^#(X)) :38 -->_1 U21^#(mark(X)) -> c_37(U21^#(X)) :37 6: active^#(U21(tt())) -> c_6() 7: active^#(U31(X)) -> c_7(U31^#(active(X))) -->_1 U31^#(ok(X)) -> c_40(U31^#(X)) :40 -->_1 U31^#(mark(X)) -> c_39(U31^#(X)) :39 8: active^#(U31(tt())) -> c_8() 9: active^#(U41(X1, X2)) -> c_9(U41^#(active(X1), X2)) -->_1 U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) :42 -->_1 U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) :41 10: active^#(U41(tt(), V2)) -> c_10(U42^#(isNatIList(V2))) -->_1 U42^#(ok(X)) -> c_44(U42^#(X)) :44 -->_1 U42^#(mark(X)) -> c_43(U42^#(X)) :43 11: active^#(U42(X)) -> c_11(U42^#(active(X))) -->_1 U42^#(ok(X)) -> c_44(U42^#(X)) :44 -->_1 U42^#(mark(X)) -> c_43(U42^#(X)) :43 12: active^#(U42(tt())) -> c_12() 13: active^#(isNatIList(V)) -> c_13(U31^#(isNatList(V))) -->_1 U31^#(ok(X)) -> c_40(U31^#(X)) :40 -->_1 U31^#(mark(X)) -> c_39(U31^#(X)) :39 14: active^#(isNatIList(zeros())) -> c_14() 15: active^#(isNatIList(cons(V1, V2))) -> c_15(U41^#(isNat(V1), V2)) -->_1 U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) :42 -->_1 U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) :41 16: active^#(U51(X1, X2)) -> c_16(U51^#(active(X1), X2)) -->_1 U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) :46 -->_1 U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) :45 17: active^#(U51(tt(), V2)) -> c_17(U52^#(isNatList(V2))) -->_1 U52^#(ok(X)) -> c_49(U52^#(X)) :48 -->_1 U52^#(mark(X)) -> c_48(U52^#(X)) :47 18: active^#(U52(X)) -> c_18(U52^#(active(X))) -->_1 U52^#(ok(X)) -> c_49(U52^#(X)) :48 -->_1 U52^#(mark(X)) -> c_48(U52^#(X)) :47 19: active^#(U52(tt())) -> c_19() 20: active^#(isNatList(cons(V1, V2))) -> c_20(U51^#(isNat(V1), V2)) -->_1 U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) :46 -->_1 U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) :45 21: active^#(isNatList(nil())) -> c_21() 22: active^#(U61(X1, X2, X3)) -> c_22(U61^#(active(X1), X2, X3)) -->_1 U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) :50 -->_1 U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) :49 23: active^#(U61(tt(), L, N)) -> c_23(U62^#(isNat(N), L)) -->_1 U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) :52 -->_1 U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) :51 24: active^#(U62(X1, X2)) -> c_24(U62^#(active(X1), X2)) -->_1 U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) :52 -->_1 U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) :51 25: active^#(U62(tt(), L)) -> c_25(s^#(length(L))) -->_1 s^#(ok(X)) -> c_57(s^#(X)) :54 -->_1 s^#(mark(X)) -> c_56(s^#(X)) :53 26: active^#(isNat(0())) -> c_26() 27: active^#(isNat(s(V1))) -> c_27(U21^#(isNat(V1))) -->_1 U21^#(ok(X)) -> c_38(U21^#(X)) :38 -->_1 U21^#(mark(X)) -> c_37(U21^#(X)) :37 28: active^#(isNat(length(V1))) -> c_28(U11^#(isNatList(V1))) -->_1 U11^#(ok(X)) -> c_36(U11^#(X)) :36 -->_1 U11^#(mark(X)) -> c_35(U11^#(X)) :35 29: active^#(s(X)) -> c_29(s^#(active(X))) -->_1 s^#(ok(X)) -> c_57(s^#(X)) :54 -->_1 s^#(mark(X)) -> c_56(s^#(X)) :53 30: active^#(length(X)) -> c_30(length^#(active(X))) -->_1 length^#(ok(X)) -> c_59(length^#(X)) :56 -->_1 length^#(mark(X)) -> c_58(length^#(X)) :55 31: active^#(length(cons(N, L))) -> c_31(U61^#(isNatList(L), L, N)) -->_1 U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) :50 -->_1 U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) :49 32: active^#(length(nil())) -> c_32() 33: cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) :34 -->_1 cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) :33 34: cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) -->_1 cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) :34 -->_1 cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) :33 35: U11^#(mark(X)) -> c_35(U11^#(X)) -->_1 U11^#(ok(X)) -> c_36(U11^#(X)) :36 -->_1 U11^#(mark(X)) -> c_35(U11^#(X)) :35 36: U11^#(ok(X)) -> c_36(U11^#(X)) -->_1 U11^#(ok(X)) -> c_36(U11^#(X)) :36 -->_1 U11^#(mark(X)) -> c_35(U11^#(X)) :35 37: U21^#(mark(X)) -> c_37(U21^#(X)) -->_1 U21^#(ok(X)) -> c_38(U21^#(X)) :38 -->_1 U21^#(mark(X)) -> c_37(U21^#(X)) :37 38: U21^#(ok(X)) -> c_38(U21^#(X)) -->_1 U21^#(ok(X)) -> c_38(U21^#(X)) :38 -->_1 U21^#(mark(X)) -> c_37(U21^#(X)) :37 39: U31^#(mark(X)) -> c_39(U31^#(X)) -->_1 U31^#(ok(X)) -> c_40(U31^#(X)) :40 -->_1 U31^#(mark(X)) -> c_39(U31^#(X)) :39 40: U31^#(ok(X)) -> c_40(U31^#(X)) -->_1 U31^#(ok(X)) -> c_40(U31^#(X)) :40 -->_1 U31^#(mark(X)) -> c_39(U31^#(X)) :39 41: U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) -->_1 U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) :42 -->_1 U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) :41 42: U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) -->_1 U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) :42 -->_1 U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) :41 43: U42^#(mark(X)) -> c_43(U42^#(X)) -->_1 U42^#(ok(X)) -> c_44(U42^#(X)) :44 -->_1 U42^#(mark(X)) -> c_43(U42^#(X)) :43 44: U42^#(ok(X)) -> c_44(U42^#(X)) -->_1 U42^#(ok(X)) -> c_44(U42^#(X)) :44 -->_1 U42^#(mark(X)) -> c_43(U42^#(X)) :43 45: U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) -->_1 U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) :46 -->_1 U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) :45 46: U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) -->_1 U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) :46 -->_1 U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) :45 47: U52^#(mark(X)) -> c_48(U52^#(X)) -->_1 U52^#(ok(X)) -> c_49(U52^#(X)) :48 -->_1 U52^#(mark(X)) -> c_48(U52^#(X)) :47 48: U52^#(ok(X)) -> c_49(U52^#(X)) -->_1 U52^#(ok(X)) -> c_49(U52^#(X)) :48 -->_1 U52^#(mark(X)) -> c_48(U52^#(X)) :47 49: U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) -->_1 U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) :50 -->_1 U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) :49 50: U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) -->_1 U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) :50 -->_1 U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) :49 51: U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) -->_1 U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) :52 -->_1 U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) :51 52: U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) -->_1 U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) :52 -->_1 U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) :51 53: s^#(mark(X)) -> c_56(s^#(X)) -->_1 s^#(ok(X)) -> c_57(s^#(X)) :54 -->_1 s^#(mark(X)) -> c_56(s^#(X)) :53 54: s^#(ok(X)) -> c_57(s^#(X)) -->_1 s^#(ok(X)) -> c_57(s^#(X)) :54 -->_1 s^#(mark(X)) -> c_56(s^#(X)) :53 55: length^#(mark(X)) -> c_58(length^#(X)) -->_1 length^#(ok(X)) -> c_59(length^#(X)) :56 -->_1 length^#(mark(X)) -> c_58(length^#(X)) :55 56: length^#(ok(X)) -> c_59(length^#(X)) -->_1 length^#(ok(X)) -> c_59(length^#(X)) :56 -->_1 length^#(mark(X)) -> c_58(length^#(X)) :55 57: isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) -->_1 isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) :57 58: isNatList^#(ok(X)) -> c_50(isNatList^#(X)) -->_1 isNatList^#(ok(X)) -> c_50(isNatList^#(X)) :58 59: isNat^#(ok(X)) -> c_55(isNat^#(X)) -->_1 isNat^#(ok(X)) -> c_55(isNat^#(X)) :59 60: proper^#(zeros()) -> c_60() 61: proper^#(cons(X1, X2)) -> c_61(cons^#(proper(X1), proper(X2))) -->_1 cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) :34 -->_1 cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) :33 62: proper^#(0()) -> c_62() 63: proper^#(U11(X)) -> c_63(U11^#(proper(X))) -->_1 U11^#(ok(X)) -> c_36(U11^#(X)) :36 -->_1 U11^#(mark(X)) -> c_35(U11^#(X)) :35 64: proper^#(tt()) -> c_64() 65: proper^#(U21(X)) -> c_65(U21^#(proper(X))) -->_1 U21^#(ok(X)) -> c_38(U21^#(X)) :38 -->_1 U21^#(mark(X)) -> c_37(U21^#(X)) :37 66: proper^#(U31(X)) -> c_66(U31^#(proper(X))) -->_1 U31^#(ok(X)) -> c_40(U31^#(X)) :40 -->_1 U31^#(mark(X)) -> c_39(U31^#(X)) :39 67: proper^#(U41(X1, X2)) -> c_67(U41^#(proper(X1), proper(X2))) -->_1 U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) :42 -->_1 U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) :41 68: proper^#(U42(X)) -> c_68(U42^#(proper(X))) -->_1 U42^#(ok(X)) -> c_44(U42^#(X)) :44 -->_1 U42^#(mark(X)) -> c_43(U42^#(X)) :43 69: proper^#(isNatIList(X)) -> c_69(isNatIList^#(proper(X))) -->_1 isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) :57 70: proper^#(U51(X1, X2)) -> c_70(U51^#(proper(X1), proper(X2))) -->_1 U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) :46 -->_1 U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) :45 71: proper^#(U52(X)) -> c_71(U52^#(proper(X))) -->_1 U52^#(ok(X)) -> c_49(U52^#(X)) :48 -->_1 U52^#(mark(X)) -> c_48(U52^#(X)) :47 72: proper^#(isNatList(X)) -> c_72(isNatList^#(proper(X))) -->_1 isNatList^#(ok(X)) -> c_50(isNatList^#(X)) :58 73: proper^#(U61(X1, X2, X3)) -> c_73(U61^#(proper(X1), proper(X2), proper(X3))) -->_1 U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) :50 -->_1 U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) :49 74: proper^#(U62(X1, X2)) -> c_74(U62^#(proper(X1), proper(X2))) -->_1 U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) :52 -->_1 U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) :51 75: proper^#(isNat(X)) -> c_75(isNat^#(proper(X))) -->_1 isNat^#(ok(X)) -> c_55(isNat^#(X)) :59 76: proper^#(s(X)) -> c_76(s^#(proper(X))) -->_1 s^#(ok(X)) -> c_57(s^#(X)) :54 -->_1 s^#(mark(X)) -> c_56(s^#(X)) :53 77: proper^#(length(X)) -> c_77(length^#(proper(X))) -->_1 length^#(ok(X)) -> c_59(length^#(X)) :56 -->_1 length^#(mark(X)) -> c_58(length^#(X)) :55 78: proper^#(nil()) -> c_78() 79: top^#(mark(X)) -> c_79(top^#(proper(X))) -->_1 top^#(ok(X)) -> c_80(top^#(active(X))) :80 -->_1 top^#(mark(X)) -> c_79(top^#(proper(X))) :79 80: top^#(ok(X)) -> c_80(top^#(active(X))) -->_1 top^#(ok(X)) -> c_80(top^#(active(X))) :80 -->_1 top^#(mark(X)) -> c_79(top^#(proper(X))) :79 Only the nodes {1,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,64,78,79,80} are reachable from nodes {1,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,62,64,78,79,80} 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_1(cons^#(0(), zeros())) , cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) , U11^#(mark(X)) -> c_35(U11^#(X)) , U11^#(ok(X)) -> c_36(U11^#(X)) , U21^#(mark(X)) -> c_37(U21^#(X)) , U21^#(ok(X)) -> c_38(U21^#(X)) , U31^#(mark(X)) -> c_39(U31^#(X)) , U31^#(ok(X)) -> c_40(U31^#(X)) , U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) , U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) , U42^#(mark(X)) -> c_43(U42^#(X)) , U42^#(ok(X)) -> c_44(U42^#(X)) , U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) , U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) , U52^#(mark(X)) -> c_48(U52^#(X)) , U52^#(ok(X)) -> c_49(U52^#(X)) , U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) , U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) , U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) , U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) , s^#(mark(X)) -> c_56(s^#(X)) , s^#(ok(X)) -> c_57(s^#(X)) , length^#(mark(X)) -> c_58(length^#(X)) , length^#(ok(X)) -> c_59(length^#(X)) , isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) , isNatList^#(ok(X)) -> c_50(isNatList^#(X)) , isNat^#(ok(X)) -> c_55(isNat^#(X)) , proper^#(zeros()) -> c_60() , proper^#(0()) -> c_62() , proper^#(tt()) -> c_64() , proper^#(nil()) -> c_78() , top^#(mark(X)) -> c_79(top^#(proper(X))) , top^#(ok(X)) -> c_80(top^#(active(X))) } Strict Trs: { active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(U11(X)) -> U11(active(X)) , active(U11(tt())) -> mark(tt()) , active(U21(X)) -> U21(active(X)) , active(U21(tt())) -> mark(tt()) , active(U31(X)) -> U31(active(X)) , active(U31(tt())) -> mark(tt()) , active(U41(X1, X2)) -> U41(active(X1), X2) , active(U41(tt(), V2)) -> mark(U42(isNatIList(V2))) , active(U42(X)) -> U42(active(X)) , active(U42(tt())) -> mark(tt()) , active(isNatIList(V)) -> mark(U31(isNatList(V))) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) , active(U51(X1, X2)) -> U51(active(X1), X2) , active(U51(tt(), V2)) -> mark(U52(isNatList(V2))) , active(U52(X)) -> U52(active(X)) , active(U52(tt())) -> mark(tt()) , active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) , active(isNatList(nil())) -> mark(tt()) , active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) , active(U61(tt(), L, N)) -> mark(U62(isNat(N), L)) , active(U62(X1, X2)) -> U62(active(X1), X2) , active(U62(tt(), L)) -> mark(s(length(L))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(V1))) -> mark(U21(isNat(V1))) , active(isNat(length(V1))) -> mark(U11(isNatList(V1))) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) , active(length(nil())) -> mark(0()) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , U11(mark(X)) -> mark(U11(X)) , U11(ok(X)) -> ok(U11(X)) , U21(mark(X)) -> mark(U21(X)) , U21(ok(X)) -> ok(U21(X)) , U31(mark(X)) -> mark(U31(X)) , U31(ok(X)) -> ok(U31(X)) , U41(mark(X1), X2) -> mark(U41(X1, X2)) , U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) , U42(mark(X)) -> mark(U42(X)) , U42(ok(X)) -> ok(U42(X)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , U51(mark(X1), X2) -> mark(U51(X1, X2)) , U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) , U52(mark(X)) -> mark(U52(X)) , U52(ok(X)) -> ok(U52(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) , U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) , U62(mark(X1), X2) -> mark(U62(X1, X2)) , U62(ok(X1), ok(X2)) -> ok(U62(X1, X2)) , 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)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(U11(X)) -> U11(proper(X)) , proper(tt()) -> ok(tt()) , proper(U21(X)) -> U21(proper(X)) , proper(U31(X)) -> U31(proper(X)) , proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) , proper(U42(X)) -> U42(proper(X)) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) , proper(U52(X)) -> U52(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) , proper(U62(X1, X2)) -> U62(proper(X1), proper(X2)) , proper(isNat(X)) -> isNat(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(nil()) -> ok(nil()) , 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,29,30,31,32} by applications of Pre({1,29,30,31,32}) = {}. Here rules are labeled as follows: DPs: { 1: active^#(zeros()) -> c_1(cons^#(0(), zeros())) , 2: cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) , 3: cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) , 4: U11^#(mark(X)) -> c_35(U11^#(X)) , 5: U11^#(ok(X)) -> c_36(U11^#(X)) , 6: U21^#(mark(X)) -> c_37(U21^#(X)) , 7: U21^#(ok(X)) -> c_38(U21^#(X)) , 8: U31^#(mark(X)) -> c_39(U31^#(X)) , 9: U31^#(ok(X)) -> c_40(U31^#(X)) , 10: U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) , 11: U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) , 12: U42^#(mark(X)) -> c_43(U42^#(X)) , 13: U42^#(ok(X)) -> c_44(U42^#(X)) , 14: U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) , 15: U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) , 16: U52^#(mark(X)) -> c_48(U52^#(X)) , 17: U52^#(ok(X)) -> c_49(U52^#(X)) , 18: U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) , 19: U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) , 20: U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) , 21: U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) , 22: s^#(mark(X)) -> c_56(s^#(X)) , 23: s^#(ok(X)) -> c_57(s^#(X)) , 24: length^#(mark(X)) -> c_58(length^#(X)) , 25: length^#(ok(X)) -> c_59(length^#(X)) , 26: isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) , 27: isNatList^#(ok(X)) -> c_50(isNatList^#(X)) , 28: isNat^#(ok(X)) -> c_55(isNat^#(X)) , 29: proper^#(zeros()) -> c_60() , 30: proper^#(0()) -> c_62() , 31: proper^#(tt()) -> c_64() , 32: proper^#(nil()) -> c_78() , 33: top^#(mark(X)) -> c_79(top^#(proper(X))) , 34: top^#(ok(X)) -> c_80(top^#(active(X))) } We are left with following problem, upon which TcT provides the certificate MAYBE. Strict DPs: { cons^#(mark(X1), X2) -> c_33(cons^#(X1, X2)) , cons^#(ok(X1), ok(X2)) -> c_34(cons^#(X1, X2)) , U11^#(mark(X)) -> c_35(U11^#(X)) , U11^#(ok(X)) -> c_36(U11^#(X)) , U21^#(mark(X)) -> c_37(U21^#(X)) , U21^#(ok(X)) -> c_38(U21^#(X)) , U31^#(mark(X)) -> c_39(U31^#(X)) , U31^#(ok(X)) -> c_40(U31^#(X)) , U41^#(mark(X1), X2) -> c_41(U41^#(X1, X2)) , U41^#(ok(X1), ok(X2)) -> c_42(U41^#(X1, X2)) , U42^#(mark(X)) -> c_43(U42^#(X)) , U42^#(ok(X)) -> c_44(U42^#(X)) , U51^#(mark(X1), X2) -> c_46(U51^#(X1, X2)) , U51^#(ok(X1), ok(X2)) -> c_47(U51^#(X1, X2)) , U52^#(mark(X)) -> c_48(U52^#(X)) , U52^#(ok(X)) -> c_49(U52^#(X)) , U61^#(mark(X1), X2, X3) -> c_51(U61^#(X1, X2, X3)) , U61^#(ok(X1), ok(X2), ok(X3)) -> c_52(U61^#(X1, X2, X3)) , U62^#(mark(X1), X2) -> c_53(U62^#(X1, X2)) , U62^#(ok(X1), ok(X2)) -> c_54(U62^#(X1, X2)) , s^#(mark(X)) -> c_56(s^#(X)) , s^#(ok(X)) -> c_57(s^#(X)) , length^#(mark(X)) -> c_58(length^#(X)) , length^#(ok(X)) -> c_59(length^#(X)) , isNatIList^#(ok(X)) -> c_45(isNatIList^#(X)) , isNatList^#(ok(X)) -> c_50(isNatList^#(X)) , isNat^#(ok(X)) -> c_55(isNat^#(X)) , top^#(mark(X)) -> c_79(top^#(proper(X))) , top^#(ok(X)) -> c_80(top^#(active(X))) } Strict Trs: { active(zeros()) -> mark(cons(0(), zeros())) , active(cons(X1, X2)) -> cons(active(X1), X2) , active(U11(X)) -> U11(active(X)) , active(U11(tt())) -> mark(tt()) , active(U21(X)) -> U21(active(X)) , active(U21(tt())) -> mark(tt()) , active(U31(X)) -> U31(active(X)) , active(U31(tt())) -> mark(tt()) , active(U41(X1, X2)) -> U41(active(X1), X2) , active(U41(tt(), V2)) -> mark(U42(isNatIList(V2))) , active(U42(X)) -> U42(active(X)) , active(U42(tt())) -> mark(tt()) , active(isNatIList(V)) -> mark(U31(isNatList(V))) , active(isNatIList(zeros())) -> mark(tt()) , active(isNatIList(cons(V1, V2))) -> mark(U41(isNat(V1), V2)) , active(U51(X1, X2)) -> U51(active(X1), X2) , active(U51(tt(), V2)) -> mark(U52(isNatList(V2))) , active(U52(X)) -> U52(active(X)) , active(U52(tt())) -> mark(tt()) , active(isNatList(cons(V1, V2))) -> mark(U51(isNat(V1), V2)) , active(isNatList(nil())) -> mark(tt()) , active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) , active(U61(tt(), L, N)) -> mark(U62(isNat(N), L)) , active(U62(X1, X2)) -> U62(active(X1), X2) , active(U62(tt(), L)) -> mark(s(length(L))) , active(isNat(0())) -> mark(tt()) , active(isNat(s(V1))) -> mark(U21(isNat(V1))) , active(isNat(length(V1))) -> mark(U11(isNatList(V1))) , active(s(X)) -> s(active(X)) , active(length(X)) -> length(active(X)) , active(length(cons(N, L))) -> mark(U61(isNatList(L), L, N)) , active(length(nil())) -> mark(0()) , cons(mark(X1), X2) -> mark(cons(X1, X2)) , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) , U11(mark(X)) -> mark(U11(X)) , U11(ok(X)) -> ok(U11(X)) , U21(mark(X)) -> mark(U21(X)) , U21(ok(X)) -> ok(U21(X)) , U31(mark(X)) -> mark(U31(X)) , U31(ok(X)) -> ok(U31(X)) , U41(mark(X1), X2) -> mark(U41(X1, X2)) , U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) , U42(mark(X)) -> mark(U42(X)) , U42(ok(X)) -> ok(U42(X)) , isNatIList(ok(X)) -> ok(isNatIList(X)) , U51(mark(X1), X2) -> mark(U51(X1, X2)) , U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) , U52(mark(X)) -> mark(U52(X)) , U52(ok(X)) -> ok(U52(X)) , isNatList(ok(X)) -> ok(isNatList(X)) , U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) , U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) , U62(mark(X1), X2) -> mark(U62(X1, X2)) , U62(ok(X1), ok(X2)) -> ok(U62(X1, X2)) , 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)) , proper(zeros()) -> ok(zeros()) , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) , proper(0()) -> ok(0()) , proper(U11(X)) -> U11(proper(X)) , proper(tt()) -> ok(tt()) , proper(U21(X)) -> U21(proper(X)) , proper(U31(X)) -> U31(proper(X)) , proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) , proper(U42(X)) -> U42(proper(X)) , proper(isNatIList(X)) -> isNatIList(proper(X)) , proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) , proper(U52(X)) -> U52(proper(X)) , proper(isNatList(X)) -> isNatList(proper(X)) , proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) , proper(U62(X1, X2)) -> U62(proper(X1), proper(X2)) , proper(isNat(X)) -> isNat(proper(X)) , proper(s(X)) -> s(proper(X)) , proper(length(X)) -> length(proper(X)) , proper(nil()) -> ok(nil()) , top(mark(X)) -> top(proper(X)) , top(ok(X)) -> top(active(X)) } Weak DPs: { active^#(zeros()) -> c_1(cons^#(0(), zeros())) , proper^#(zeros()) -> c_60() , proper^#(0()) -> c_62() , proper^#(tt()) -> c_64() , proper^#(nil()) -> c_78() } Obligation: runtime complexity Answer: MAYBE Empty strict component of the problem is NOT empty. Arrrr..