MAYBE 830.15/297.11 MAYBE 830.15/297.11 830.15/297.11 We are left with following problem, upon which TcT provides the 830.15/297.11 certificate MAYBE. 830.15/297.11 830.15/297.11 Strict Trs: 830.15/297.11 { active(zeros()) -> mark(cons(0(), zeros())) 830.15/297.11 , active(cons(X1, X2)) -> cons(active(X1), X2) 830.15/297.11 , active(U11(X1, X2)) -> U11(active(X1), X2) 830.15/297.11 , active(U11(tt(), L)) -> mark(s(length(L))) 830.15/297.11 , active(s(X)) -> s(active(X)) 830.15/297.11 , active(length(X)) -> length(active(X)) 830.15/297.11 , active(length(cons(N, L))) -> 830.15/297.11 mark(U11(and(isNatList(L), isNat(N)), L)) 830.15/297.11 , active(length(nil())) -> mark(0()) 830.15/297.11 , active(and(X1, X2)) -> and(active(X1), X2) 830.15/297.11 , active(and(tt(), X)) -> mark(X) 830.15/297.11 , active(isNat(0())) -> mark(tt()) 830.15/297.11 , active(isNat(s(V1))) -> mark(isNat(V1)) 830.15/297.11 , active(isNat(length(V1))) -> mark(isNatList(V1)) 830.15/297.11 , active(isNatList(cons(V1, V2))) -> 830.15/297.11 mark(and(isNat(V1), isNatList(V2))) 830.15/297.11 , active(isNatList(nil())) -> mark(tt()) 830.15/297.11 , active(isNatIList(V)) -> mark(isNatList(V)) 830.15/297.11 , active(isNatIList(zeros())) -> mark(tt()) 830.15/297.11 , active(isNatIList(cons(V1, V2))) -> 830.15/297.11 mark(and(isNat(V1), isNatIList(V2))) 830.15/297.11 , cons(mark(X1), X2) -> mark(cons(X1, X2)) 830.15/297.11 , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 830.15/297.11 , U11(mark(X1), X2) -> mark(U11(X1, X2)) 830.15/297.11 , U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 830.15/297.11 , s(mark(X)) -> mark(s(X)) 830.15/297.11 , s(ok(X)) -> ok(s(X)) 830.15/297.11 , length(mark(X)) -> mark(length(X)) 830.15/297.11 , length(ok(X)) -> ok(length(X)) 830.15/297.11 , and(mark(X1), X2) -> mark(and(X1, X2)) 830.15/297.11 , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 830.15/297.11 , isNat(ok(X)) -> ok(isNat(X)) 830.15/297.11 , isNatList(ok(X)) -> ok(isNatList(X)) 830.15/297.11 , isNatIList(ok(X)) -> ok(isNatIList(X)) 830.15/297.11 , proper(zeros()) -> ok(zeros()) 830.15/297.11 , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 830.15/297.11 , proper(0()) -> ok(0()) 830.15/297.11 , proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 830.15/297.11 , proper(tt()) -> ok(tt()) 830.15/297.11 , proper(s(X)) -> s(proper(X)) 830.15/297.11 , proper(length(X)) -> length(proper(X)) 830.15/297.11 , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 830.15/297.11 , proper(isNat(X)) -> isNat(proper(X)) 830.15/297.11 , proper(isNatList(X)) -> isNatList(proper(X)) 830.15/297.11 , proper(isNatIList(X)) -> isNatIList(proper(X)) 830.15/297.11 , proper(nil()) -> ok(nil()) 830.15/297.11 , top(mark(X)) -> top(proper(X)) 830.15/297.11 , top(ok(X)) -> top(active(X)) } 830.15/297.11 Obligation: 830.15/297.11 runtime complexity 830.15/297.11 Answer: 830.15/297.11 MAYBE 830.15/297.11 830.15/297.11 None of the processors succeeded. 830.15/297.11 830.15/297.11 Details of failed attempt(s): 830.15/297.11 ----------------------------- 830.15/297.11 1) 'With Problem ... (timeout of 297 seconds)' failed due to the 830.15/297.11 following reason: 830.15/297.11 830.15/297.11 Computation stopped due to timeout after 297.0 seconds. 830.15/297.11 830.15/297.11 2) 'Best' failed due to the following reason: 830.15/297.11 830.15/297.11 None of the processors succeeded. 830.15/297.11 830.15/297.11 Details of failed attempt(s): 830.15/297.11 ----------------------------- 830.15/297.11 1) 'With Problem ... (timeout of 148 seconds) (timeout of 297 830.15/297.11 seconds)' failed due to the following reason: 830.15/297.11 830.15/297.11 Computation stopped due to timeout after 148.0 seconds. 830.15/297.11 830.15/297.11 2) 'Best' failed due to the following reason: 830.15/297.11 830.15/297.11 None of the processors succeeded. 830.15/297.11 830.15/297.11 Details of failed attempt(s): 830.15/297.11 ----------------------------- 830.15/297.11 1) 'Polynomial Path Order (PS) (timeout of 297 seconds)' failed due 830.15/297.11 to the following reason: 830.15/297.11 830.15/297.11 The processor is inapplicable, reason: 830.15/297.11 Processor only applicable for innermost runtime complexity analysis 830.15/297.11 830.15/297.11 2) 'bsearch-popstar (timeout of 297 seconds)' failed due to the 830.15/297.11 following reason: 830.15/297.11 830.15/297.11 The processor is inapplicable, reason: 830.15/297.11 Processor only applicable for innermost runtime complexity analysis 830.15/297.11 830.15/297.11 830.15/297.11 3) 'Fastest (timeout of 24 seconds) (timeout of 297 seconds)' 830.15/297.11 failed due to the following reason: 830.15/297.11 830.15/297.11 None of the processors succeeded. 830.15/297.11 830.15/297.11 Details of failed attempt(s): 830.15/297.11 ----------------------------- 830.15/297.11 1) 'Bounds with minimal-enrichment and initial automaton 'match'' 830.15/297.11 failed due to the following reason: 830.15/297.11 830.15/297.11 match-boundness of the problem could not be verified. 830.15/297.11 830.15/297.11 2) 'Bounds with perSymbol-enrichment and initial automaton 'match'' 830.15/297.11 failed due to the following reason: 830.15/297.11 830.15/297.11 match-boundness of the problem could not be verified. 830.15/297.11 830.15/297.11 830.15/297.11 830.15/297.11 3) 'Weak Dependency Pairs (timeout of 297 seconds)' failed due to 830.15/297.11 the following reason: 830.15/297.11 830.15/297.11 We add the following weak dependency pairs: 830.15/297.11 830.15/297.11 Strict DPs: 830.15/297.11 { active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.11 , active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) 830.15/297.11 , active^#(U11(X1, X2)) -> c_3(U11^#(active(X1), X2)) 830.15/297.11 , active^#(U11(tt(), L)) -> c_4(s^#(length(L))) 830.15/297.11 , active^#(s(X)) -> c_5(s^#(active(X))) 830.15/297.11 , active^#(length(X)) -> c_6(length^#(active(X))) 830.15/297.11 , active^#(length(cons(N, L))) -> 830.15/297.11 c_7(U11^#(and(isNatList(L), isNat(N)), L)) 830.15/297.11 , active^#(length(nil())) -> c_8() 830.15/297.11 , active^#(and(X1, X2)) -> c_9(and^#(active(X1), X2)) 830.15/297.11 , active^#(and(tt(), X)) -> c_10(X) 830.15/297.11 , active^#(isNat(0())) -> c_11() 830.15/297.11 , active^#(isNat(s(V1))) -> c_12(isNat^#(V1)) 830.15/297.11 , active^#(isNat(length(V1))) -> c_13(isNatList^#(V1)) 830.15/297.11 , active^#(isNatList(cons(V1, V2))) -> 830.15/297.11 c_14(and^#(isNat(V1), isNatList(V2))) 830.15/297.11 , active^#(isNatList(nil())) -> c_15() 830.15/297.11 , active^#(isNatIList(V)) -> c_16(isNatList^#(V)) 830.15/297.11 , active^#(isNatIList(zeros())) -> c_17() 830.15/297.11 , active^#(isNatIList(cons(V1, V2))) -> 830.15/297.11 c_18(and^#(isNat(V1), isNatIList(V2))) 830.15/297.11 , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.11 , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.11 , U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.11 , U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.11 , s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.11 , s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.11 , length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.11 , length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.11 , and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.11 , and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.11 , isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.11 , isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.11 , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.11 , proper^#(zeros()) -> c_32() 830.15/297.11 , proper^#(cons(X1, X2)) -> c_33(cons^#(proper(X1), proper(X2))) 830.15/297.11 , proper^#(0()) -> c_34() 830.15/297.11 , proper^#(U11(X1, X2)) -> c_35(U11^#(proper(X1), proper(X2))) 830.15/297.11 , proper^#(tt()) -> c_36() 830.15/297.11 , proper^#(s(X)) -> c_37(s^#(proper(X))) 830.15/297.11 , proper^#(length(X)) -> c_38(length^#(proper(X))) 830.15/297.11 , proper^#(and(X1, X2)) -> c_39(and^#(proper(X1), proper(X2))) 830.15/297.11 , proper^#(isNat(X)) -> c_40(isNat^#(proper(X))) 830.15/297.11 , proper^#(isNatList(X)) -> c_41(isNatList^#(proper(X))) 830.15/297.11 , proper^#(isNatIList(X)) -> c_42(isNatIList^#(proper(X))) 830.15/297.11 , proper^#(nil()) -> c_43() 830.15/297.11 , top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.11 , top^#(ok(X)) -> c_45(top^#(active(X))) } 830.15/297.11 830.15/297.11 and mark the set of starting terms. 830.15/297.11 830.15/297.11 We are left with following problem, upon which TcT provides the 830.15/297.11 certificate MAYBE. 830.15/297.11 830.15/297.11 Strict DPs: 830.15/297.11 { active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.11 , active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) 830.15/297.11 , active^#(U11(X1, X2)) -> c_3(U11^#(active(X1), X2)) 830.15/297.11 , active^#(U11(tt(), L)) -> c_4(s^#(length(L))) 830.15/297.11 , active^#(s(X)) -> c_5(s^#(active(X))) 830.15/297.11 , active^#(length(X)) -> c_6(length^#(active(X))) 830.15/297.11 , active^#(length(cons(N, L))) -> 830.15/297.11 c_7(U11^#(and(isNatList(L), isNat(N)), L)) 830.15/297.11 , active^#(length(nil())) -> c_8() 830.15/297.11 , active^#(and(X1, X2)) -> c_9(and^#(active(X1), X2)) 830.15/297.11 , active^#(and(tt(), X)) -> c_10(X) 830.15/297.11 , active^#(isNat(0())) -> c_11() 830.15/297.11 , active^#(isNat(s(V1))) -> c_12(isNat^#(V1)) 830.15/297.11 , active^#(isNat(length(V1))) -> c_13(isNatList^#(V1)) 830.15/297.11 , active^#(isNatList(cons(V1, V2))) -> 830.15/297.11 c_14(and^#(isNat(V1), isNatList(V2))) 830.15/297.11 , active^#(isNatList(nil())) -> c_15() 830.15/297.11 , active^#(isNatIList(V)) -> c_16(isNatList^#(V)) 830.15/297.11 , active^#(isNatIList(zeros())) -> c_17() 830.15/297.11 , active^#(isNatIList(cons(V1, V2))) -> 830.15/297.11 c_18(and^#(isNat(V1), isNatIList(V2))) 830.15/297.11 , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.11 , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.11 , U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.11 , U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.11 , s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.11 , s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.11 , length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.11 , length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.12 , and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.12 , and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.12 , isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.12 , isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.12 , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.12 , proper^#(zeros()) -> c_32() 830.15/297.12 , proper^#(cons(X1, X2)) -> c_33(cons^#(proper(X1), proper(X2))) 830.15/297.12 , proper^#(0()) -> c_34() 830.15/297.12 , proper^#(U11(X1, X2)) -> c_35(U11^#(proper(X1), proper(X2))) 830.15/297.12 , proper^#(tt()) -> c_36() 830.15/297.12 , proper^#(s(X)) -> c_37(s^#(proper(X))) 830.15/297.12 , proper^#(length(X)) -> c_38(length^#(proper(X))) 830.15/297.12 , proper^#(and(X1, X2)) -> c_39(and^#(proper(X1), proper(X2))) 830.15/297.12 , proper^#(isNat(X)) -> c_40(isNat^#(proper(X))) 830.15/297.12 , proper^#(isNatList(X)) -> c_41(isNatList^#(proper(X))) 830.15/297.12 , proper^#(isNatIList(X)) -> c_42(isNatIList^#(proper(X))) 830.15/297.12 , proper^#(nil()) -> c_43() 830.15/297.12 , top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.12 , top^#(ok(X)) -> c_45(top^#(active(X))) } 830.15/297.12 Strict Trs: 830.15/297.12 { active(zeros()) -> mark(cons(0(), zeros())) 830.15/297.12 , active(cons(X1, X2)) -> cons(active(X1), X2) 830.15/297.12 , active(U11(X1, X2)) -> U11(active(X1), X2) 830.15/297.12 , active(U11(tt(), L)) -> mark(s(length(L))) 830.15/297.12 , active(s(X)) -> s(active(X)) 830.15/297.12 , active(length(X)) -> length(active(X)) 830.15/297.12 , active(length(cons(N, L))) -> 830.15/297.12 mark(U11(and(isNatList(L), isNat(N)), L)) 830.15/297.12 , active(length(nil())) -> mark(0()) 830.15/297.12 , active(and(X1, X2)) -> and(active(X1), X2) 830.15/297.12 , active(and(tt(), X)) -> mark(X) 830.15/297.12 , active(isNat(0())) -> mark(tt()) 830.15/297.12 , active(isNat(s(V1))) -> mark(isNat(V1)) 830.15/297.12 , active(isNat(length(V1))) -> mark(isNatList(V1)) 830.15/297.12 , active(isNatList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatList(V2))) 830.15/297.12 , active(isNatList(nil())) -> mark(tt()) 830.15/297.12 , active(isNatIList(V)) -> mark(isNatList(V)) 830.15/297.12 , active(isNatIList(zeros())) -> mark(tt()) 830.15/297.12 , active(isNatIList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatIList(V2))) 830.15/297.12 , cons(mark(X1), X2) -> mark(cons(X1, X2)) 830.15/297.12 , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 830.15/297.12 , U11(mark(X1), X2) -> mark(U11(X1, X2)) 830.15/297.12 , U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 830.15/297.12 , s(mark(X)) -> mark(s(X)) 830.15/297.12 , s(ok(X)) -> ok(s(X)) 830.15/297.12 , length(mark(X)) -> mark(length(X)) 830.15/297.12 , length(ok(X)) -> ok(length(X)) 830.15/297.12 , and(mark(X1), X2) -> mark(and(X1, X2)) 830.15/297.12 , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 830.15/297.12 , isNat(ok(X)) -> ok(isNat(X)) 830.15/297.12 , isNatList(ok(X)) -> ok(isNatList(X)) 830.15/297.12 , isNatIList(ok(X)) -> ok(isNatIList(X)) 830.15/297.12 , proper(zeros()) -> ok(zeros()) 830.15/297.12 , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 830.15/297.12 , proper(0()) -> ok(0()) 830.15/297.12 , proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 830.15/297.12 , proper(tt()) -> ok(tt()) 830.15/297.12 , proper(s(X)) -> s(proper(X)) 830.15/297.12 , proper(length(X)) -> length(proper(X)) 830.15/297.12 , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 830.15/297.12 , proper(isNat(X)) -> isNat(proper(X)) 830.15/297.12 , proper(isNatList(X)) -> isNatList(proper(X)) 830.15/297.12 , proper(isNatIList(X)) -> isNatIList(proper(X)) 830.15/297.12 , proper(nil()) -> ok(nil()) 830.15/297.12 , top(mark(X)) -> top(proper(X)) 830.15/297.12 , top(ok(X)) -> top(active(X)) } 830.15/297.12 Obligation: 830.15/297.12 runtime complexity 830.15/297.12 Answer: 830.15/297.12 MAYBE 830.15/297.12 830.15/297.12 Consider the dependency graph: 830.15/297.12 830.15/297.12 1: active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.12 830.15/297.12 2: active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) 830.15/297.12 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 830.15/297.12 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 830.15/297.12 830.15/297.12 3: active^#(U11(X1, X2)) -> c_3(U11^#(active(X1), X2)) 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 830.15/297.12 4: active^#(U11(tt(), L)) -> c_4(s^#(length(L))) 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 830.15/297.12 5: active^#(s(X)) -> c_5(s^#(active(X))) 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 830.15/297.12 6: active^#(length(X)) -> c_6(length^#(active(X))) 830.15/297.12 -->_1 length^#(ok(X)) -> c_26(length^#(X)) :26 830.15/297.12 -->_1 length^#(mark(X)) -> c_25(length^#(X)) :25 830.15/297.12 830.15/297.12 7: active^#(length(cons(N, L))) -> 830.15/297.12 c_7(U11^#(and(isNatList(L), isNat(N)), L)) 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 830.15/297.12 8: active^#(length(nil())) -> c_8() 830.15/297.12 830.15/297.12 9: active^#(and(X1, X2)) -> c_9(and^#(active(X1), X2)) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 10: active^#(and(tt(), X)) -> c_10(X) 830.15/297.12 -->_1 top^#(ok(X)) -> c_45(top^#(active(X))) :45 830.15/297.12 -->_1 top^#(mark(X)) -> c_44(top^#(proper(X))) :44 830.15/297.12 -->_1 proper^#(isNatIList(X)) -> c_42(isNatIList^#(proper(X))) :42 830.15/297.12 -->_1 proper^#(isNatList(X)) -> c_41(isNatList^#(proper(X))) :41 830.15/297.12 -->_1 proper^#(isNat(X)) -> c_40(isNat^#(proper(X))) :40 830.15/297.12 -->_1 proper^#(and(X1, X2)) -> 830.15/297.12 c_39(and^#(proper(X1), proper(X2))) :39 830.15/297.12 -->_1 proper^#(length(X)) -> c_38(length^#(proper(X))) :38 830.15/297.12 -->_1 proper^#(s(X)) -> c_37(s^#(proper(X))) :37 830.15/297.12 -->_1 proper^#(U11(X1, X2)) -> 830.15/297.12 c_35(U11^#(proper(X1), proper(X2))) :35 830.15/297.12 -->_1 proper^#(cons(X1, X2)) -> 830.15/297.12 c_33(cons^#(proper(X1), proper(X2))) :33 830.15/297.12 -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :31 830.15/297.12 -->_1 isNatList^#(ok(X)) -> c_30(isNatList^#(X)) :30 830.15/297.12 -->_1 isNat^#(ok(X)) -> c_29(isNat^#(X)) :29 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 -->_1 length^#(ok(X)) -> c_26(length^#(X)) :26 830.15/297.12 -->_1 length^#(mark(X)) -> c_25(length^#(X)) :25 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 830.15/297.12 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 830.15/297.12 -->_1 active^#(isNatIList(cons(V1, V2))) -> 830.15/297.12 c_18(and^#(isNat(V1), isNatIList(V2))) :18 830.15/297.12 -->_1 active^#(isNatIList(V)) -> c_16(isNatList^#(V)) :16 830.15/297.12 -->_1 active^#(isNatList(cons(V1, V2))) -> 830.15/297.12 c_14(and^#(isNat(V1), isNatList(V2))) :14 830.15/297.12 -->_1 active^#(isNat(length(V1))) -> c_13(isNatList^#(V1)) :13 830.15/297.12 -->_1 active^#(isNat(s(V1))) -> c_12(isNat^#(V1)) :12 830.15/297.12 -->_1 proper^#(nil()) -> c_43() :43 830.15/297.12 -->_1 proper^#(tt()) -> c_36() :36 830.15/297.12 -->_1 proper^#(0()) -> c_34() :34 830.15/297.12 -->_1 proper^#(zeros()) -> c_32() :32 830.15/297.12 -->_1 active^#(isNatIList(zeros())) -> c_17() :17 830.15/297.12 -->_1 active^#(isNatList(nil())) -> c_15() :15 830.15/297.12 -->_1 active^#(isNat(0())) -> c_11() :11 830.15/297.12 -->_1 active^#(and(tt(), X)) -> c_10(X) :10 830.15/297.12 -->_1 active^#(and(X1, X2)) -> c_9(and^#(active(X1), X2)) :9 830.15/297.12 -->_1 active^#(length(nil())) -> c_8() :8 830.15/297.12 -->_1 active^#(length(cons(N, L))) -> 830.15/297.12 c_7(U11^#(and(isNatList(L), isNat(N)), L)) :7 830.15/297.12 -->_1 active^#(length(X)) -> c_6(length^#(active(X))) :6 830.15/297.12 -->_1 active^#(s(X)) -> c_5(s^#(active(X))) :5 830.15/297.12 -->_1 active^#(U11(tt(), L)) -> c_4(s^#(length(L))) :4 830.15/297.12 -->_1 active^#(U11(X1, X2)) -> c_3(U11^#(active(X1), X2)) :3 830.15/297.12 -->_1 active^#(cons(X1, X2)) -> c_2(cons^#(active(X1), X2)) :2 830.15/297.12 -->_1 active^#(zeros()) -> c_1(cons^#(0(), zeros())) :1 830.15/297.12 830.15/297.12 11: active^#(isNat(0())) -> c_11() 830.15/297.12 830.15/297.12 12: active^#(isNat(s(V1))) -> c_12(isNat^#(V1)) 830.15/297.12 -->_1 isNat^#(ok(X)) -> c_29(isNat^#(X)) :29 830.15/297.12 830.15/297.12 13: active^#(isNat(length(V1))) -> c_13(isNatList^#(V1)) 830.15/297.12 -->_1 isNatList^#(ok(X)) -> c_30(isNatList^#(X)) :30 830.15/297.12 830.15/297.12 14: active^#(isNatList(cons(V1, V2))) -> 830.15/297.12 c_14(and^#(isNat(V1), isNatList(V2))) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 15: active^#(isNatList(nil())) -> c_15() 830.15/297.12 830.15/297.12 16: active^#(isNatIList(V)) -> c_16(isNatList^#(V)) 830.15/297.12 -->_1 isNatList^#(ok(X)) -> c_30(isNatList^#(X)) :30 830.15/297.12 830.15/297.12 17: active^#(isNatIList(zeros())) -> c_17() 830.15/297.12 830.15/297.12 18: active^#(isNatIList(cons(V1, V2))) -> 830.15/297.12 c_18(and^#(isNat(V1), isNatIList(V2))) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 19: cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.12 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 830.15/297.12 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 830.15/297.12 830.15/297.12 20: cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.12 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 830.15/297.12 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 830.15/297.12 830.15/297.12 21: U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 830.15/297.12 22: U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 830.15/297.12 23: s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 830.15/297.12 24: s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 830.15/297.12 25: length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.12 -->_1 length^#(ok(X)) -> c_26(length^#(X)) :26 830.15/297.12 -->_1 length^#(mark(X)) -> c_25(length^#(X)) :25 830.15/297.12 830.15/297.12 26: length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.12 -->_1 length^#(ok(X)) -> c_26(length^#(X)) :26 830.15/297.12 -->_1 length^#(mark(X)) -> c_25(length^#(X)) :25 830.15/297.12 830.15/297.12 27: and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 28: and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 29: isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.12 -->_1 isNat^#(ok(X)) -> c_29(isNat^#(X)) :29 830.15/297.12 830.15/297.12 30: isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.12 -->_1 isNatList^#(ok(X)) -> c_30(isNatList^#(X)) :30 830.15/297.12 830.15/297.12 31: isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.12 -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :31 830.15/297.12 830.15/297.12 32: proper^#(zeros()) -> c_32() 830.15/297.12 830.15/297.12 33: proper^#(cons(X1, X2)) -> c_33(cons^#(proper(X1), proper(X2))) 830.15/297.12 -->_1 cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) :20 830.15/297.12 -->_1 cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) :19 830.15/297.12 830.15/297.12 34: proper^#(0()) -> c_34() 830.15/297.12 830.15/297.12 35: proper^#(U11(X1, X2)) -> c_35(U11^#(proper(X1), proper(X2))) 830.15/297.12 -->_1 U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) :22 830.15/297.12 -->_1 U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) :21 830.15/297.12 830.15/297.12 36: proper^#(tt()) -> c_36() 830.15/297.12 830.15/297.12 37: proper^#(s(X)) -> c_37(s^#(proper(X))) 830.15/297.12 -->_1 s^#(ok(X)) -> c_24(s^#(X)) :24 830.15/297.12 -->_1 s^#(mark(X)) -> c_23(s^#(X)) :23 830.15/297.12 830.15/297.12 38: proper^#(length(X)) -> c_38(length^#(proper(X))) 830.15/297.12 -->_1 length^#(ok(X)) -> c_26(length^#(X)) :26 830.15/297.12 -->_1 length^#(mark(X)) -> c_25(length^#(X)) :25 830.15/297.12 830.15/297.12 39: proper^#(and(X1, X2)) -> c_39(and^#(proper(X1), proper(X2))) 830.15/297.12 -->_1 and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) :28 830.15/297.12 -->_1 and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) :27 830.15/297.12 830.15/297.12 40: proper^#(isNat(X)) -> c_40(isNat^#(proper(X))) 830.15/297.12 -->_1 isNat^#(ok(X)) -> c_29(isNat^#(X)) :29 830.15/297.12 830.15/297.12 41: proper^#(isNatList(X)) -> c_41(isNatList^#(proper(X))) 830.15/297.12 -->_1 isNatList^#(ok(X)) -> c_30(isNatList^#(X)) :30 830.15/297.12 830.15/297.12 42: proper^#(isNatIList(X)) -> c_42(isNatIList^#(proper(X))) 830.15/297.12 -->_1 isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) :31 830.15/297.12 830.15/297.12 43: proper^#(nil()) -> c_43() 830.15/297.12 830.15/297.12 44: top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.12 -->_1 top^#(ok(X)) -> c_45(top^#(active(X))) :45 830.15/297.12 -->_1 top^#(mark(X)) -> c_44(top^#(proper(X))) :44 830.15/297.12 830.15/297.12 45: top^#(ok(X)) -> c_45(top^#(active(X))) 830.15/297.12 -->_1 top^#(ok(X)) -> c_45(top^#(active(X))) :45 830.15/297.12 -->_1 top^#(mark(X)) -> c_44(top^#(proper(X))) :44 830.15/297.12 830.15/297.12 830.15/297.12 Only the nodes 830.15/297.12 {1,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,43,44,45} are 830.15/297.12 reachable from nodes 830.15/297.12 {1,19,20,21,22,23,24,25,26,27,28,29,30,31,32,34,36,43,44,45} that 830.15/297.12 start derivation from marked basic terms. The nodes not reachable 830.15/297.12 are removed from the problem. 830.15/297.12 830.15/297.12 We are left with following problem, upon which TcT provides the 830.15/297.12 certificate MAYBE. 830.15/297.12 830.15/297.12 Strict DPs: 830.15/297.12 { active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.12 , cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.12 , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.12 , U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.12 , U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.12 , s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.12 , s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.12 , length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.12 , length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.12 , and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.12 , and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.12 , isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.12 , isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.12 , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.12 , proper^#(zeros()) -> c_32() 830.15/297.12 , proper^#(0()) -> c_34() 830.15/297.12 , proper^#(tt()) -> c_36() 830.15/297.12 , proper^#(nil()) -> c_43() 830.15/297.12 , top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.12 , top^#(ok(X)) -> c_45(top^#(active(X))) } 830.15/297.12 Strict Trs: 830.15/297.12 { active(zeros()) -> mark(cons(0(), zeros())) 830.15/297.12 , active(cons(X1, X2)) -> cons(active(X1), X2) 830.15/297.12 , active(U11(X1, X2)) -> U11(active(X1), X2) 830.15/297.12 , active(U11(tt(), L)) -> mark(s(length(L))) 830.15/297.12 , active(s(X)) -> s(active(X)) 830.15/297.12 , active(length(X)) -> length(active(X)) 830.15/297.12 , active(length(cons(N, L))) -> 830.15/297.12 mark(U11(and(isNatList(L), isNat(N)), L)) 830.15/297.12 , active(length(nil())) -> mark(0()) 830.15/297.12 , active(and(X1, X2)) -> and(active(X1), X2) 830.15/297.12 , active(and(tt(), X)) -> mark(X) 830.15/297.12 , active(isNat(0())) -> mark(tt()) 830.15/297.12 , active(isNat(s(V1))) -> mark(isNat(V1)) 830.15/297.12 , active(isNat(length(V1))) -> mark(isNatList(V1)) 830.15/297.12 , active(isNatList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatList(V2))) 830.15/297.12 , active(isNatList(nil())) -> mark(tt()) 830.15/297.12 , active(isNatIList(V)) -> mark(isNatList(V)) 830.15/297.12 , active(isNatIList(zeros())) -> mark(tt()) 830.15/297.12 , active(isNatIList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatIList(V2))) 830.15/297.12 , cons(mark(X1), X2) -> mark(cons(X1, X2)) 830.15/297.12 , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 830.15/297.12 , U11(mark(X1), X2) -> mark(U11(X1, X2)) 830.15/297.12 , U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 830.15/297.12 , s(mark(X)) -> mark(s(X)) 830.15/297.12 , s(ok(X)) -> ok(s(X)) 830.15/297.12 , length(mark(X)) -> mark(length(X)) 830.15/297.12 , length(ok(X)) -> ok(length(X)) 830.15/297.12 , and(mark(X1), X2) -> mark(and(X1, X2)) 830.15/297.12 , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 830.15/297.12 , isNat(ok(X)) -> ok(isNat(X)) 830.15/297.12 , isNatList(ok(X)) -> ok(isNatList(X)) 830.15/297.12 , isNatIList(ok(X)) -> ok(isNatIList(X)) 830.15/297.12 , proper(zeros()) -> ok(zeros()) 830.15/297.12 , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 830.15/297.12 , proper(0()) -> ok(0()) 830.15/297.12 , proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 830.15/297.12 , proper(tt()) -> ok(tt()) 830.15/297.12 , proper(s(X)) -> s(proper(X)) 830.15/297.12 , proper(length(X)) -> length(proper(X)) 830.15/297.12 , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 830.15/297.12 , proper(isNat(X)) -> isNat(proper(X)) 830.15/297.12 , proper(isNatList(X)) -> isNatList(proper(X)) 830.15/297.12 , proper(isNatIList(X)) -> isNatIList(proper(X)) 830.15/297.12 , proper(nil()) -> ok(nil()) 830.15/297.12 , top(mark(X)) -> top(proper(X)) 830.15/297.12 , top(ok(X)) -> top(active(X)) } 830.15/297.12 Obligation: 830.15/297.12 runtime complexity 830.15/297.12 Answer: 830.15/297.12 MAYBE 830.15/297.12 830.15/297.12 We estimate the number of application of {1,15,16,17,18} by 830.15/297.12 applications of Pre({1,15,16,17,18}) = {}. Here rules are labeled 830.15/297.12 as follows: 830.15/297.12 830.15/297.12 DPs: 830.15/297.12 { 1: active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.12 , 2: cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.12 , 3: cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.12 , 4: U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.12 , 5: U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.12 , 6: s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.12 , 7: s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.12 , 8: length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.12 , 9: length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.12 , 10: and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.12 , 11: and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.12 , 12: isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.12 , 13: isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.12 , 14: isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.12 , 15: proper^#(zeros()) -> c_32() 830.15/297.12 , 16: proper^#(0()) -> c_34() 830.15/297.12 , 17: proper^#(tt()) -> c_36() 830.15/297.12 , 18: proper^#(nil()) -> c_43() 830.15/297.12 , 19: top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.12 , 20: top^#(ok(X)) -> c_45(top^#(active(X))) } 830.15/297.12 830.15/297.12 We are left with following problem, upon which TcT provides the 830.15/297.12 certificate MAYBE. 830.15/297.12 830.15/297.12 Strict DPs: 830.15/297.12 { cons^#(mark(X1), X2) -> c_19(cons^#(X1, X2)) 830.15/297.12 , cons^#(ok(X1), ok(X2)) -> c_20(cons^#(X1, X2)) 830.15/297.12 , U11^#(mark(X1), X2) -> c_21(U11^#(X1, X2)) 830.15/297.12 , U11^#(ok(X1), ok(X2)) -> c_22(U11^#(X1, X2)) 830.15/297.12 , s^#(mark(X)) -> c_23(s^#(X)) 830.15/297.12 , s^#(ok(X)) -> c_24(s^#(X)) 830.15/297.12 , length^#(mark(X)) -> c_25(length^#(X)) 830.15/297.12 , length^#(ok(X)) -> c_26(length^#(X)) 830.15/297.12 , and^#(mark(X1), X2) -> c_27(and^#(X1, X2)) 830.15/297.12 , and^#(ok(X1), ok(X2)) -> c_28(and^#(X1, X2)) 830.15/297.12 , isNat^#(ok(X)) -> c_29(isNat^#(X)) 830.15/297.12 , isNatList^#(ok(X)) -> c_30(isNatList^#(X)) 830.15/297.12 , isNatIList^#(ok(X)) -> c_31(isNatIList^#(X)) 830.15/297.12 , top^#(mark(X)) -> c_44(top^#(proper(X))) 830.15/297.12 , top^#(ok(X)) -> c_45(top^#(active(X))) } 830.15/297.12 Strict Trs: 830.15/297.12 { active(zeros()) -> mark(cons(0(), zeros())) 830.15/297.12 , active(cons(X1, X2)) -> cons(active(X1), X2) 830.15/297.12 , active(U11(X1, X2)) -> U11(active(X1), X2) 830.15/297.12 , active(U11(tt(), L)) -> mark(s(length(L))) 830.15/297.12 , active(s(X)) -> s(active(X)) 830.15/297.12 , active(length(X)) -> length(active(X)) 830.15/297.12 , active(length(cons(N, L))) -> 830.15/297.12 mark(U11(and(isNatList(L), isNat(N)), L)) 830.15/297.12 , active(length(nil())) -> mark(0()) 830.15/297.12 , active(and(X1, X2)) -> and(active(X1), X2) 830.15/297.12 , active(and(tt(), X)) -> mark(X) 830.15/297.12 , active(isNat(0())) -> mark(tt()) 830.15/297.12 , active(isNat(s(V1))) -> mark(isNat(V1)) 830.15/297.12 , active(isNat(length(V1))) -> mark(isNatList(V1)) 830.15/297.12 , active(isNatList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatList(V2))) 830.15/297.12 , active(isNatList(nil())) -> mark(tt()) 830.15/297.12 , active(isNatIList(V)) -> mark(isNatList(V)) 830.15/297.12 , active(isNatIList(zeros())) -> mark(tt()) 830.15/297.12 , active(isNatIList(cons(V1, V2))) -> 830.15/297.12 mark(and(isNat(V1), isNatIList(V2))) 830.15/297.12 , cons(mark(X1), X2) -> mark(cons(X1, X2)) 830.15/297.12 , cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) 830.15/297.12 , U11(mark(X1), X2) -> mark(U11(X1, X2)) 830.15/297.12 , U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) 830.15/297.12 , s(mark(X)) -> mark(s(X)) 830.15/297.12 , s(ok(X)) -> ok(s(X)) 830.15/297.12 , length(mark(X)) -> mark(length(X)) 830.15/297.12 , length(ok(X)) -> ok(length(X)) 830.15/297.12 , and(mark(X1), X2) -> mark(and(X1, X2)) 830.15/297.12 , and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 830.15/297.12 , isNat(ok(X)) -> ok(isNat(X)) 830.15/297.12 , isNatList(ok(X)) -> ok(isNatList(X)) 830.15/297.12 , isNatIList(ok(X)) -> ok(isNatIList(X)) 830.15/297.12 , proper(zeros()) -> ok(zeros()) 830.15/297.12 , proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) 830.15/297.12 , proper(0()) -> ok(0()) 830.15/297.12 , proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) 830.15/297.12 , proper(tt()) -> ok(tt()) 830.15/297.12 , proper(s(X)) -> s(proper(X)) 830.15/297.12 , proper(length(X)) -> length(proper(X)) 830.15/297.12 , proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 830.15/297.12 , proper(isNat(X)) -> isNat(proper(X)) 830.15/297.12 , proper(isNatList(X)) -> isNatList(proper(X)) 830.15/297.12 , proper(isNatIList(X)) -> isNatIList(proper(X)) 830.15/297.12 , proper(nil()) -> ok(nil()) 830.15/297.12 , top(mark(X)) -> top(proper(X)) 830.15/297.12 , top(ok(X)) -> top(active(X)) } 830.15/297.12 Weak DPs: 830.15/297.12 { active^#(zeros()) -> c_1(cons^#(0(), zeros())) 830.15/297.12 , proper^#(zeros()) -> c_32() 830.15/297.12 , proper^#(0()) -> c_34() 830.15/297.12 , proper^#(tt()) -> c_36() 830.15/297.12 , proper^#(nil()) -> c_43() } 830.15/297.12 Obligation: 830.15/297.12 runtime complexity 830.15/297.12 Answer: 830.15/297.12 MAYBE 830.15/297.12 830.15/297.12 Empty strict component of the problem is NOT empty. 830.15/297.12 830.15/297.12 830.15/297.12 Arrrr.. 830.32/297.29 EOF