/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), ?) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 9 ms] (4) typed CpxTrs (5) OrderProof [LOWER BOUND(ID), 0 ms] (6) typed CpxTrs (7) RewriteLemmaProof [LOWER BOUND(ID), 451 ms] (8) BEST (9) proven lower bound (10) LowerBoundPropagationProof [FINISHED, 0 ms] (11) BOUNDS(n^1, INF) (12) typed CpxTrs (13) RewriteLemmaProof [LOWER BOUND(ID), 143 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 116 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 94 ms] (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 110 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 117 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 169 ms] (26) typed CpxTrs (27) RewriteLemmaProof [LOWER BOUND(ID), 133 ms] (28) typed CpxTrs (29) RewriteLemmaProof [LOWER BOUND(ID), 163 ms] (30) typed CpxTrs (31) RewriteLemmaProof [LOWER BOUND(ID), 173 ms] (32) typed CpxTrs (33) RewriteLemmaProof [LOWER BOUND(ID), 123 ms] (34) typed CpxTrs (35) RewriteLemmaProof [LOWER BOUND(ID), 112 ms] (36) typed CpxTrs (37) RewriteLemmaProof [LOWER BOUND(ID), 211 ms] (38) typed CpxTrs (39) RewriteLemmaProof [LOWER BOUND(ID), 182 ms] (40) typed CpxTrs (41) RewriteLemmaProof [LOWER BOUND(ID), 192 ms] (42) typed CpxTrs (43) RewriteLemmaProof [LOWER BOUND(ID), 141 ms] (44) typed CpxTrs (45) RewriteLemmaProof [LOWER BOUND(ID), 82 ms] (46) typed CpxTrs (47) RewriteLemmaProof [LOWER BOUND(ID), 209 ms] (48) typed CpxTrs (49) RewriteLemmaProof [LOWER BOUND(ID), 242 ms] (50) typed CpxTrs (51) RewriteLemmaProof [LOWER BOUND(ID), 190 ms] (52) typed CpxTrs (53) RewriteLemmaProof [LOWER BOUND(ID), 95 ms] (54) typed CpxTrs (55) RewriteLemmaProof [LOWER BOUND(ID), 102 ms] (56) typed CpxTrs (57) RewriteLemmaProof [LOWER BOUND(ID), 184 ms] (58) typed CpxTrs (59) RewriteLemmaProof [LOWER BOUND(ID), 189 ms] (60) typed CpxTrs (61) RewriteLemmaProof [LOWER BOUND(ID), 164 ms] (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 249 ms] (64) typed CpxTrs (65) RewriteLemmaProof [LOWER BOUND(ID), 179 ms] (66) typed CpxTrs (67) RewriteLemmaProof [LOWER BOUND(ID), 125 ms] (68) typed CpxTrs (69) RewriteLemmaProof [LOWER BOUND(ID), 99 ms] (70) typed CpxTrs (71) RewriteLemmaProof [LOWER BOUND(ID), 272 ms] (72) typed CpxTrs (73) RewriteLemmaProof [LOWER BOUND(ID), 242 ms] (74) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: active(zeros) -> mark(cons(0, zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0)) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0)) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0) active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0) -> ok(0) proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) S is empty. Rewrite Strategy: FULL ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: active, cons, U12, isNatIListKind, U13, isNatList, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: cons < active U12 < active isNatIListKind < active U13 < active isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top cons < proper U12 < proper isNatIListKind < proper U13 < proper isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (6) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: cons, active, U12, isNatIListKind, U13, isNatList, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: cons < active U12 < active isNatIListKind < active U13 < active isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top cons < proper U12 < proper isNatIListKind < proper U13 < proper isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) Induction Base: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n5_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (8) Complex Obligation (BEST) ---------------------------------------- (9) Obligation: Proved the lower bound n^1 for the following obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: cons, active, U12, isNatIListKind, U13, isNatList, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: cons < active U12 < active isNatIListKind < active U13 < active isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top cons < proper U12 < proper isNatIListKind < proper U13 < proper isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (10) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (11) BOUNDS(n^1, INF) ---------------------------------------- (12) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U12, active, isNatIListKind, U13, isNatList, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U12 < active isNatIListKind < active U13 < active isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U12 < proper isNatIListKind < proper U13 < proper isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (13) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) Induction Base: U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n3100_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (14) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: isNatIListKind, active, U13, isNatList, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: isNatIListKind < active U13 < active isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top isNatIListKind < proper U13 < proper isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) Induction Base: U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n6515_0, 1)))) ->_R^Omega(1) mark(U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (16) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: isNatList, active, U22, isNatKind, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: isNatList < active U22 < active isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top isNatList < proper U22 < proper isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) Induction Base: U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n7669_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (18) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: isNatKind, active, U23, isNat, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: isNatKind < active U23 < active isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top isNatKind < proper U23 < proper isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) Induction Base: U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n11606_0, 1)))) ->_R^Omega(1) mark(U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (20) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: isNat, active, U32, U33, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: isNat < active U32 < active U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top isNat < proper U32 < proper U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) Induction Base: U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n13019_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (22) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U33, active, U42, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U33 < active U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U33 < proper U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) Induction Base: U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n17448_0, 1)))) ->_R^Omega(1) mark(U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (24) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U42, active, U43, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U42 < active U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U42 < proper U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) Induction Base: U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n19087_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (26) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U43, active, U44, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U43 < active U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U43 < proper U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (27) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) Induction Base: U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n27233_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (28) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U44, active, U45, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U44 < active U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U44 < proper U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (29) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) Induction Base: U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n35988_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (30) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U45, active, U46, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U45 < active U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U45 < proper U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (31) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) Induction Base: U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n45352_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (32) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U46, active, isNatIList, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U46 < active isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U46 < proper isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (33) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) Induction Base: U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n51507_0, 1)))) ->_R^Omega(1) mark(U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (34) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: isNatIList, active, U52, U82, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: isNatIList < active U52 < active U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top isNatIList < proper U52 < proper U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (35) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) Induction Base: U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n54056_0, 1)))) ->_R^Omega(1) mark(U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (36) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U82, active, U83, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U82 < active U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U82 < proper U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (37) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) Induction Base: U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n56644_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (38) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U83, active, U84, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U83 < active U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U83 < proper U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (39) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) Induction Base: U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n67709_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (40) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U84, active, U85, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U84 < active U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U84 < proper U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (41) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) Induction Base: U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n79383_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (42) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U85, active, U86, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U85 < active U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U85 < proper U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (43) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) Induction Base: U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n91666_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (44) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U86, active, U92, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U86 < active U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U86 < proper U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (45) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) Induction Base: U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n99755_0, 1)))) ->_R^Omega(1) mark(U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (46) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U92, active, U93, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U92 < active U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U92 < proper U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (47) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) Induction Base: U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n103191_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (48) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U93, active, U94, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U93 < active U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U93 < proper U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (49) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) Induction Base: U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n116860_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (50) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U94, active, s, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U94 < active s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U94 < proper s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (51) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) Induction Base: U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n131138_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (52) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: s, active, length, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: s < active length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top s < proper length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (53) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) Induction Base: s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n140549_0, 1)))) ->_R^Omega(1) mark(s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (54) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: length, active, U11, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: length < active U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top length < proper U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (55) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) Induction Base: length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n144634_0, 1)))) ->_R^Omega(1) mark(length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (56) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U11, active, U21, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U11 < active U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U11 < proper U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (57) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) Induction Base: U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n148820_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (58) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U21, active, U31, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U21 < active U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U21 < proper U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (59) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) Induction Base: U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n158953_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (60) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U31, active, U41, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U31 < active U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U31 < proper U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (61) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) Induction Base: U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n169392_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (62) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U41, active, U51, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U41 < active U51 < active U61 < active U71 < active U81 < active U91 < active active < top U41 < proper U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (63) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) Induction Base: U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n180137_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (64) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U51, active, U61, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U51 < active U61 < active U71 < active U81 < active U91 < active active < top U51 < proper U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (65) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) Induction Base: U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) Induction Step: U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n197502_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) ->_R^Omega(1) mark(U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (66) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U61, active, U71, U81, U91, proper, top They will be analysed ascendingly in the following order: U61 < active U71 < active U81 < active U91 < active active < top U61 < proper U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (67) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0))) -> *4_0, rt in Omega(n208957_0) Induction Base: U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n208957_0, 1)))) ->_R^Omega(1) mark(U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (68) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0))) -> *4_0, rt in Omega(n208957_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U71, active, U81, U91, proper, top They will be analysed ascendingly in the following order: U71 < active U81 < active U91 < active active < top U71 < proper U81 < proper U91 < proper proper < top ---------------------------------------- (69) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n214043_0))) -> *4_0, rt in Omega(n214043_0) Induction Base: U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0))) Induction Step: U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n214043_0, 1)))) ->_R^Omega(1) mark(U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n214043_0)))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (70) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0))) -> *4_0, rt in Omega(n208957_0) U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n214043_0))) -> *4_0, rt in Omega(n214043_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U81, active, U91, proper, top They will be analysed ascendingly in the following order: U81 < active U91 < active active < top U81 < proper U91 < proper proper < top ---------------------------------------- (71) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n219230_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n219230_0) Induction Base: U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n219230_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n219230_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (72) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0))) -> *4_0, rt in Omega(n208957_0) U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n214043_0))) -> *4_0, rt in Omega(n214043_0) U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n219230_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n219230_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: U91, active, proper, top They will be analysed ascendingly in the following order: U91 < active active < top U91 < proper proper < top ---------------------------------------- (73) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n238296_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n238296_0) Induction Base: U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) Induction Step: U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n238296_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) ->_R^Omega(1) mark(U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n238296_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c))) ->_IH mark(*4_0) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (74) Obligation: TRS: Rules: active(zeros) -> mark(cons(0', zeros)) active(U11(tt, V1)) -> mark(U12(isNatIListKind(V1), V1)) active(U12(tt, V1)) -> mark(U13(isNatList(V1))) active(U13(tt)) -> mark(tt) active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) active(U22(tt, V1)) -> mark(U23(isNat(V1))) active(U23(tt)) -> mark(tt) active(U31(tt, V)) -> mark(U32(isNatIListKind(V), V)) active(U32(tt, V)) -> mark(U33(isNatList(V))) active(U33(tt)) -> mark(tt) active(U41(tt, V1, V2)) -> mark(U42(isNatKind(V1), V1, V2)) active(U42(tt, V1, V2)) -> mark(U43(isNatIListKind(V2), V1, V2)) active(U43(tt, V1, V2)) -> mark(U44(isNatIListKind(V2), V1, V2)) active(U44(tt, V1, V2)) -> mark(U45(isNat(V1), V2)) active(U45(tt, V2)) -> mark(U46(isNatIList(V2))) active(U46(tt)) -> mark(tt) active(U51(tt, V2)) -> mark(U52(isNatIListKind(V2))) active(U52(tt)) -> mark(tt) active(U61(tt)) -> mark(tt) active(U71(tt)) -> mark(tt) active(U81(tt, V1, V2)) -> mark(U82(isNatKind(V1), V1, V2)) active(U82(tt, V1, V2)) -> mark(U83(isNatIListKind(V2), V1, V2)) active(U83(tt, V1, V2)) -> mark(U84(isNatIListKind(V2), V1, V2)) active(U84(tt, V1, V2)) -> mark(U85(isNat(V1), V2)) active(U85(tt, V2)) -> mark(U86(isNatList(V2))) active(U86(tt)) -> mark(tt) active(U91(tt, L, N)) -> mark(U92(isNatIListKind(L), L, N)) active(U92(tt, L, N)) -> mark(U93(isNat(N), L, N)) active(U93(tt, L, N)) -> mark(U94(isNatKind(N), L)) active(U94(tt, L)) -> mark(s(length(L))) active(isNat(0')) -> mark(tt) active(isNat(length(V1))) -> mark(U11(isNatIListKind(V1), V1)) active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) active(isNatIList(V)) -> mark(U31(isNatIListKind(V), V)) active(isNatIList(zeros)) -> mark(tt) active(isNatIList(cons(V1, V2))) -> mark(U41(isNatKind(V1), V1, V2)) active(isNatIListKind(nil)) -> mark(tt) active(isNatIListKind(zeros)) -> mark(tt) active(isNatIListKind(cons(V1, V2))) -> mark(U51(isNatKind(V1), V2)) active(isNatKind(0')) -> mark(tt) active(isNatKind(length(V1))) -> mark(U61(isNatIListKind(V1))) active(isNatKind(s(V1))) -> mark(U71(isNatKind(V1))) active(isNatList(nil)) -> mark(tt) active(isNatList(cons(V1, V2))) -> mark(U81(isNatKind(V1), V1, V2)) active(length(nil)) -> mark(0') active(length(cons(N, L))) -> mark(U91(isNatList(L), L, N)) active(cons(X1, X2)) -> cons(active(X1), X2) active(U11(X1, X2)) -> U11(active(X1), X2) active(U12(X1, X2)) -> U12(active(X1), X2) active(U13(X)) -> U13(active(X)) active(U21(X1, X2)) -> U21(active(X1), X2) active(U22(X1, X2)) -> U22(active(X1), X2) active(U23(X)) -> U23(active(X)) active(U31(X1, X2)) -> U31(active(X1), X2) active(U32(X1, X2)) -> U32(active(X1), X2) active(U33(X)) -> U33(active(X)) active(U41(X1, X2, X3)) -> U41(active(X1), X2, X3) active(U42(X1, X2, X3)) -> U42(active(X1), X2, X3) active(U43(X1, X2, X3)) -> U43(active(X1), X2, X3) active(U44(X1, X2, X3)) -> U44(active(X1), X2, X3) active(U45(X1, X2)) -> U45(active(X1), X2) active(U46(X)) -> U46(active(X)) active(U51(X1, X2)) -> U51(active(X1), X2) active(U52(X)) -> U52(active(X)) active(U61(X)) -> U61(active(X)) active(U71(X)) -> U71(active(X)) active(U81(X1, X2, X3)) -> U81(active(X1), X2, X3) active(U82(X1, X2, X3)) -> U82(active(X1), X2, X3) active(U83(X1, X2, X3)) -> U83(active(X1), X2, X3) active(U84(X1, X2, X3)) -> U84(active(X1), X2, X3) active(U85(X1, X2)) -> U85(active(X1), X2) active(U86(X)) -> U86(active(X)) active(U91(X1, X2, X3)) -> U91(active(X1), X2, X3) active(U92(X1, X2, X3)) -> U92(active(X1), X2, X3) active(U93(X1, X2, X3)) -> U93(active(X1), X2, X3) active(U94(X1, X2)) -> U94(active(X1), X2) active(s(X)) -> s(active(X)) active(length(X)) -> length(active(X)) cons(mark(X1), X2) -> mark(cons(X1, X2)) U11(mark(X1), X2) -> mark(U11(X1, X2)) U12(mark(X1), X2) -> mark(U12(X1, X2)) U13(mark(X)) -> mark(U13(X)) U21(mark(X1), X2) -> mark(U21(X1, X2)) U22(mark(X1), X2) -> mark(U22(X1, X2)) U23(mark(X)) -> mark(U23(X)) U31(mark(X1), X2) -> mark(U31(X1, X2)) U32(mark(X1), X2) -> mark(U32(X1, X2)) U33(mark(X)) -> mark(U33(X)) U41(mark(X1), X2, X3) -> mark(U41(X1, X2, X3)) U42(mark(X1), X2, X3) -> mark(U42(X1, X2, X3)) U43(mark(X1), X2, X3) -> mark(U43(X1, X2, X3)) U44(mark(X1), X2, X3) -> mark(U44(X1, X2, X3)) U45(mark(X1), X2) -> mark(U45(X1, X2)) U46(mark(X)) -> mark(U46(X)) U51(mark(X1), X2) -> mark(U51(X1, X2)) U52(mark(X)) -> mark(U52(X)) U61(mark(X)) -> mark(U61(X)) U71(mark(X)) -> mark(U71(X)) U81(mark(X1), X2, X3) -> mark(U81(X1, X2, X3)) U82(mark(X1), X2, X3) -> mark(U82(X1, X2, X3)) U83(mark(X1), X2, X3) -> mark(U83(X1, X2, X3)) U84(mark(X1), X2, X3) -> mark(U84(X1, X2, X3)) U85(mark(X1), X2) -> mark(U85(X1, X2)) U86(mark(X)) -> mark(U86(X)) U91(mark(X1), X2, X3) -> mark(U91(X1, X2, X3)) U92(mark(X1), X2, X3) -> mark(U92(X1, X2, X3)) U93(mark(X1), X2, X3) -> mark(U93(X1, X2, X3)) U94(mark(X1), X2) -> mark(U94(X1, X2)) s(mark(X)) -> mark(s(X)) length(mark(X)) -> mark(length(X)) proper(zeros) -> ok(zeros) proper(cons(X1, X2)) -> cons(proper(X1), proper(X2)) proper(0') -> ok(0') proper(U11(X1, X2)) -> U11(proper(X1), proper(X2)) proper(tt) -> ok(tt) proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) proper(isNatIListKind(X)) -> isNatIListKind(proper(X)) proper(U13(X)) -> U13(proper(X)) proper(isNatList(X)) -> isNatList(proper(X)) proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) proper(isNatKind(X)) -> isNatKind(proper(X)) proper(U23(X)) -> U23(proper(X)) proper(isNat(X)) -> isNat(proper(X)) proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) proper(U33(X)) -> U33(proper(X)) proper(U41(X1, X2, X3)) -> U41(proper(X1), proper(X2), proper(X3)) proper(U42(X1, X2, X3)) -> U42(proper(X1), proper(X2), proper(X3)) proper(U43(X1, X2, X3)) -> U43(proper(X1), proper(X2), proper(X3)) proper(U44(X1, X2, X3)) -> U44(proper(X1), proper(X2), proper(X3)) proper(U45(X1, X2)) -> U45(proper(X1), proper(X2)) proper(U46(X)) -> U46(proper(X)) proper(isNatIList(X)) -> isNatIList(proper(X)) proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) proper(U52(X)) -> U52(proper(X)) proper(U61(X)) -> U61(proper(X)) proper(U71(X)) -> U71(proper(X)) proper(U81(X1, X2, X3)) -> U81(proper(X1), proper(X2), proper(X3)) proper(U82(X1, X2, X3)) -> U82(proper(X1), proper(X2), proper(X3)) proper(U83(X1, X2, X3)) -> U83(proper(X1), proper(X2), proper(X3)) proper(U84(X1, X2, X3)) -> U84(proper(X1), proper(X2), proper(X3)) proper(U85(X1, X2)) -> U85(proper(X1), proper(X2)) proper(U86(X)) -> U86(proper(X)) proper(U91(X1, X2, X3)) -> U91(proper(X1), proper(X2), proper(X3)) proper(U92(X1, X2, X3)) -> U92(proper(X1), proper(X2), proper(X3)) proper(U93(X1, X2, X3)) -> U93(proper(X1), proper(X2), proper(X3)) proper(U94(X1, X2)) -> U94(proper(X1), proper(X2)) proper(s(X)) -> s(proper(X)) proper(length(X)) -> length(proper(X)) proper(nil) -> ok(nil) cons(ok(X1), ok(X2)) -> ok(cons(X1, X2)) U11(ok(X1), ok(X2)) -> ok(U11(X1, X2)) U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) isNatIListKind(ok(X)) -> ok(isNatIListKind(X)) U13(ok(X)) -> ok(U13(X)) isNatList(ok(X)) -> ok(isNatList(X)) U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) isNatKind(ok(X)) -> ok(isNatKind(X)) U23(ok(X)) -> ok(U23(X)) isNat(ok(X)) -> ok(isNat(X)) U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) U33(ok(X)) -> ok(U33(X)) U41(ok(X1), ok(X2), ok(X3)) -> ok(U41(X1, X2, X3)) U42(ok(X1), ok(X2), ok(X3)) -> ok(U42(X1, X2, X3)) U43(ok(X1), ok(X2), ok(X3)) -> ok(U43(X1, X2, X3)) U44(ok(X1), ok(X2), ok(X3)) -> ok(U44(X1, X2, X3)) U45(ok(X1), ok(X2)) -> ok(U45(X1, X2)) U46(ok(X)) -> ok(U46(X)) isNatIList(ok(X)) -> ok(isNatIList(X)) U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) U52(ok(X)) -> ok(U52(X)) U61(ok(X)) -> ok(U61(X)) U71(ok(X)) -> ok(U71(X)) U81(ok(X1), ok(X2), ok(X3)) -> ok(U81(X1, X2, X3)) U82(ok(X1), ok(X2), ok(X3)) -> ok(U82(X1, X2, X3)) U83(ok(X1), ok(X2), ok(X3)) -> ok(U83(X1, X2, X3)) U84(ok(X1), ok(X2), ok(X3)) -> ok(U84(X1, X2, X3)) U85(ok(X1), ok(X2)) -> ok(U85(X1, X2)) U86(ok(X)) -> ok(U86(X)) U91(ok(X1), ok(X2), ok(X3)) -> ok(U91(X1, X2, X3)) U92(ok(X1), ok(X2), ok(X3)) -> ok(U92(X1, X2, X3)) U93(ok(X1), ok(X2), ok(X3)) -> ok(U93(X1, X2, X3)) U94(ok(X1), ok(X2)) -> ok(U94(X1, X2)) s(ok(X)) -> ok(s(X)) length(ok(X)) -> ok(length(X)) top(mark(X)) -> top(proper(X)) top(ok(X)) -> top(active(X)) Types: active :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok zeros :: zeros:0':mark:tt:nil:ok mark :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok cons :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok 0' :: zeros:0':mark:tt:nil:ok U11 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok tt :: zeros:0':mark:tt:nil:ok U12 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIListKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U13 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U21 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U22 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatKind :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U23 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNat :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U31 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U32 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U33 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U41 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U42 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U43 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U44 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U45 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U46 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok isNatIList :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U51 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U52 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U61 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U71 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U81 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U82 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U83 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U84 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U85 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U86 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U91 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U92 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U93 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok U94 :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok s :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok length :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok nil :: zeros:0':mark:tt:nil:ok proper :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok ok :: zeros:0':mark:tt:nil:ok -> zeros:0':mark:tt:nil:ok top :: zeros:0':mark:tt:nil:ok -> top hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok hole_top2_0 :: top gen_zeros:0':mark:tt:nil:ok3_0 :: Nat -> zeros:0':mark:tt:nil:ok Lemmas: cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n5_0) U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3100_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n3100_0) U13(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n6515_0))) -> *4_0, rt in Omega(n6515_0) U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n7669_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n7669_0) U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n11606_0))) -> *4_0, rt in Omega(n11606_0) U32(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n13019_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n13019_0) U33(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n17448_0))) -> *4_0, rt in Omega(n17448_0) U42(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n19087_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n19087_0) U43(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n27233_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n27233_0) U44(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n35988_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n35988_0) U45(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n45352_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n45352_0) U46(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n51507_0))) -> *4_0, rt in Omega(n51507_0) U52(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n54056_0))) -> *4_0, rt in Omega(n54056_0) U82(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n56644_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n56644_0) U83(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n67709_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n67709_0) U84(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n79383_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n79383_0) U85(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n91666_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n91666_0) U86(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n99755_0))) -> *4_0, rt in Omega(n99755_0) U92(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n103191_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n103191_0) U93(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n116860_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n116860_0) U94(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n131138_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n131138_0) s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n140549_0))) -> *4_0, rt in Omega(n140549_0) length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n144634_0))) -> *4_0, rt in Omega(n144634_0) U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n148820_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n148820_0) U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n158953_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n158953_0) U31(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n169392_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n169392_0) U41(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n180137_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n180137_0) U51(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n197502_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) -> *4_0, rt in Omega(n197502_0) U61(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n208957_0))) -> *4_0, rt in Omega(n208957_0) U71(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n214043_0))) -> *4_0, rt in Omega(n214043_0) U81(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n219230_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n219230_0) U91(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n238296_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c)) -> *4_0, rt in Omega(n238296_0) Generator Equations: gen_zeros:0':mark:tt:nil:ok3_0(0) <=> zeros gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) <=> mark(gen_zeros:0':mark:tt:nil:ok3_0(x)) The following defined symbols remain to be analysed: active, proper, top They will be analysed ascendingly in the following order: active < top proper < top