30.41/8.90 WORST_CASE(Omega(n^1), O(n^1)) 30.41/8.92 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 30.41/8.92 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 30.41/8.92 30.41/8.92 30.41/8.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 30.41/8.92 30.41/8.92 (0) CpxTRS 30.41/8.92 (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] 30.41/8.92 (2) CpxTRS 30.41/8.92 (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] 30.41/8.92 (4) CpxTRS 30.41/8.92 (5) CpxTrsMatchBoundsTAProof [FINISHED, 475 ms] 30.41/8.92 (6) BOUNDS(1, n^1) 30.41/8.92 (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 30.41/8.92 (8) CpxTRS 30.41/8.92 (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 30.41/8.92 (10) typed CpxTrs 30.41/8.92 (11) OrderProof [LOWER BOUND(ID), 0 ms] 30.41/8.92 (12) typed CpxTrs 30.41/8.92 (13) RewriteLemmaProof [LOWER BOUND(ID), 512 ms] 30.41/8.92 (14) BEST 30.41/8.92 (15) proven lower bound 30.41/8.92 (16) LowerBoundPropagationProof [FINISHED, 0 ms] 30.41/8.92 (17) BOUNDS(n^1, INF) 30.41/8.92 (18) typed CpxTrs 30.41/8.92 (19) RewriteLemmaProof [LOWER BOUND(ID), 99 ms] 30.41/8.92 (20) typed CpxTrs 30.41/8.92 (21) RewriteLemmaProof [LOWER BOUND(ID), 150 ms] 30.41/8.92 (22) typed CpxTrs 30.41/8.92 (23) RewriteLemmaProof [LOWER BOUND(ID), 92 ms] 30.41/8.92 (24) typed CpxTrs 30.41/8.92 (25) RewriteLemmaProof [LOWER BOUND(ID), 78 ms] 30.41/8.92 (26) typed CpxTrs 30.41/8.92 (27) RewriteLemmaProof [LOWER BOUND(ID), 121 ms] 30.41/8.92 (28) typed CpxTrs 30.41/8.92 (29) RewriteLemmaProof [LOWER BOUND(ID), 172 ms] 30.41/8.92 (30) typed CpxTrs 30.41/8.92 (31) RewriteLemmaProof [LOWER BOUND(ID), 104 ms] 30.41/8.92 (32) typed CpxTrs 30.41/8.92 (33) RewriteLemmaProof [LOWER BOUND(ID), 152 ms] 30.41/8.92 (34) typed CpxTrs 30.41/8.92 (35) RewriteLemmaProof [LOWER BOUND(ID), 181 ms] 30.41/8.92 (36) typed CpxTrs 30.41/8.92 (37) RewriteLemmaProof [LOWER BOUND(ID), 83 ms] 30.41/8.92 (38) typed CpxTrs 30.41/8.92 (39) RewriteLemmaProof [LOWER BOUND(ID), 63 ms] 30.41/8.92 (40) typed CpxTrs 30.41/8.92 (41) RewriteLemmaProof [LOWER BOUND(ID), 106 ms] 30.41/8.92 (42) typed CpxTrs 30.41/8.92 30.41/8.92 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (0) 30.41/8.92 Obligation: 30.41/8.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 30.41/8.92 30.41/8.92 30.41/8.92 The TRS R consists of the following rules: 30.41/8.92 30.41/8.92 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.41/8.92 active(__(X, nil)) -> mark(X) 30.41/8.92 active(__(nil, X)) -> mark(X) 30.41/8.92 active(U11(tt)) -> mark(tt) 30.41/8.92 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.41/8.92 active(U22(tt)) -> mark(tt) 30.41/8.92 active(U31(tt)) -> mark(tt) 30.41/8.92 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.41/8.92 active(U42(tt)) -> mark(tt) 30.41/8.92 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.41/8.92 active(U52(tt)) -> mark(tt) 30.41/8.92 active(U61(tt)) -> mark(tt) 30.41/8.92 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.41/8.92 active(U72(tt)) -> mark(tt) 30.41/8.92 active(U81(tt)) -> mark(tt) 30.41/8.92 active(isList(V)) -> mark(U11(isNeList(V))) 30.41/8.92 active(isList(nil)) -> mark(tt) 30.41/8.92 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.41/8.92 active(isNeList(V)) -> mark(U31(isQid(V))) 30.41/8.92 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.41/8.92 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.41/8.92 active(isNePal(V)) -> mark(U61(isQid(V))) 30.41/8.92 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.41/8.92 active(isPal(V)) -> mark(U81(isNePal(V))) 30.41/8.92 active(isPal(nil)) -> mark(tt) 30.41/8.92 active(isQid(a)) -> mark(tt) 30.41/8.92 active(isQid(e)) -> mark(tt) 30.41/8.92 active(isQid(i)) -> mark(tt) 30.41/8.92 active(isQid(o)) -> mark(tt) 30.41/8.92 active(isQid(u)) -> mark(tt) 30.41/8.92 active(__(X1, X2)) -> __(active(X1), X2) 30.41/8.92 active(__(X1, X2)) -> __(X1, active(X2)) 30.41/8.92 active(U11(X)) -> U11(active(X)) 30.41/8.92 active(U21(X1, X2)) -> U21(active(X1), X2) 30.41/8.92 active(U22(X)) -> U22(active(X)) 30.41/8.92 active(U31(X)) -> U31(active(X)) 30.41/8.92 active(U41(X1, X2)) -> U41(active(X1), X2) 30.41/8.92 active(U42(X)) -> U42(active(X)) 30.41/8.92 active(U51(X1, X2)) -> U51(active(X1), X2) 30.41/8.92 active(U52(X)) -> U52(active(X)) 30.41/8.92 active(U61(X)) -> U61(active(X)) 30.41/8.92 active(U71(X1, X2)) -> U71(active(X1), X2) 30.41/8.92 active(U72(X)) -> U72(active(X)) 30.41/8.92 active(U81(X)) -> U81(active(X)) 30.41/8.92 __(mark(X1), X2) -> mark(__(X1, X2)) 30.41/8.92 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.41/8.92 U11(mark(X)) -> mark(U11(X)) 30.41/8.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.41/8.92 U22(mark(X)) -> mark(U22(X)) 30.41/8.92 U31(mark(X)) -> mark(U31(X)) 30.41/8.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.41/8.92 U42(mark(X)) -> mark(U42(X)) 30.41/8.92 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.41/8.92 U52(mark(X)) -> mark(U52(X)) 30.41/8.92 U61(mark(X)) -> mark(U61(X)) 30.41/8.92 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.41/8.92 U72(mark(X)) -> mark(U72(X)) 30.41/8.92 U81(mark(X)) -> mark(U81(X)) 30.41/8.92 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.41/8.92 proper(nil) -> ok(nil) 30.41/8.92 proper(U11(X)) -> U11(proper(X)) 30.41/8.92 proper(tt) -> ok(tt) 30.41/8.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.41/8.92 proper(U22(X)) -> U22(proper(X)) 30.41/8.92 proper(isList(X)) -> isList(proper(X)) 30.41/8.92 proper(U31(X)) -> U31(proper(X)) 30.41/8.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.41/8.92 proper(U42(X)) -> U42(proper(X)) 30.41/8.92 proper(isNeList(X)) -> isNeList(proper(X)) 30.41/8.92 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.41/8.92 proper(U52(X)) -> U52(proper(X)) 30.41/8.92 proper(U61(X)) -> U61(proper(X)) 30.41/8.92 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.41/8.92 proper(U72(X)) -> U72(proper(X)) 30.41/8.92 proper(isPal(X)) -> isPal(proper(X)) 30.41/8.92 proper(U81(X)) -> U81(proper(X)) 30.41/8.92 proper(isQid(X)) -> isQid(proper(X)) 30.41/8.92 proper(isNePal(X)) -> isNePal(proper(X)) 30.41/8.92 proper(a) -> ok(a) 30.41/8.92 proper(e) -> ok(e) 30.41/8.92 proper(i) -> ok(i) 30.41/8.92 proper(o) -> ok(o) 30.41/8.92 proper(u) -> ok(u) 30.41/8.92 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.41/8.92 U11(ok(X)) -> ok(U11(X)) 30.41/8.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.41/8.92 U22(ok(X)) -> ok(U22(X)) 30.41/8.92 isList(ok(X)) -> ok(isList(X)) 30.41/8.92 U31(ok(X)) -> ok(U31(X)) 30.41/8.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.41/8.92 U42(ok(X)) -> ok(U42(X)) 30.41/8.92 isNeList(ok(X)) -> ok(isNeList(X)) 30.41/8.92 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.41/8.92 U52(ok(X)) -> ok(U52(X)) 30.41/8.92 U61(ok(X)) -> ok(U61(X)) 30.41/8.92 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.41/8.92 U72(ok(X)) -> ok(U72(X)) 30.41/8.92 isPal(ok(X)) -> ok(isPal(X)) 30.41/8.92 U81(ok(X)) -> ok(U81(X)) 30.41/8.92 isQid(ok(X)) -> ok(isQid(X)) 30.41/8.92 isNePal(ok(X)) -> ok(isNePal(X)) 30.41/8.92 top(mark(X)) -> top(proper(X)) 30.41/8.92 top(ok(X)) -> top(active(X)) 30.41/8.92 30.41/8.92 S is empty. 30.41/8.92 Rewrite Strategy: FULL 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) 30.41/8.92 The following defined symbols can occur below the 0th argument of top: proper, active 30.41/8.92 The following defined symbols can occur below the 0th argument of proper: proper, active 30.41/8.92 The following defined symbols can occur below the 0th argument of active: proper, active 30.41/8.92 30.41/8.92 Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: 30.41/8.92 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.41/8.92 active(__(X, nil)) -> mark(X) 30.41/8.92 active(__(nil, X)) -> mark(X) 30.41/8.92 active(U11(tt)) -> mark(tt) 30.41/8.92 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.41/8.92 active(U22(tt)) -> mark(tt) 30.41/8.92 active(U31(tt)) -> mark(tt) 30.41/8.92 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.41/8.92 active(U42(tt)) -> mark(tt) 30.41/8.92 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.41/8.92 active(U52(tt)) -> mark(tt) 30.41/8.92 active(U61(tt)) -> mark(tt) 30.41/8.92 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.41/8.92 active(U72(tt)) -> mark(tt) 30.41/8.92 active(U81(tt)) -> mark(tt) 30.41/8.92 active(isList(V)) -> mark(U11(isNeList(V))) 30.41/8.92 active(isList(nil)) -> mark(tt) 30.41/8.92 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.41/8.92 active(isNeList(V)) -> mark(U31(isQid(V))) 30.41/8.92 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.41/8.92 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.41/8.92 active(isNePal(V)) -> mark(U61(isQid(V))) 30.41/8.92 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.41/8.92 active(isPal(V)) -> mark(U81(isNePal(V))) 30.41/8.92 active(isPal(nil)) -> mark(tt) 30.41/8.92 active(isQid(a)) -> mark(tt) 30.41/8.92 active(isQid(e)) -> mark(tt) 30.41/8.92 active(isQid(i)) -> mark(tt) 30.41/8.92 active(isQid(o)) -> mark(tt) 30.41/8.92 active(isQid(u)) -> mark(tt) 30.41/8.92 active(__(X1, X2)) -> __(active(X1), X2) 30.41/8.92 active(__(X1, X2)) -> __(X1, active(X2)) 30.41/8.92 active(U11(X)) -> U11(active(X)) 30.41/8.92 active(U21(X1, X2)) -> U21(active(X1), X2) 30.41/8.92 active(U22(X)) -> U22(active(X)) 30.41/8.92 active(U31(X)) -> U31(active(X)) 30.41/8.92 active(U41(X1, X2)) -> U41(active(X1), X2) 30.41/8.92 active(U42(X)) -> U42(active(X)) 30.41/8.92 active(U51(X1, X2)) -> U51(active(X1), X2) 30.41/8.92 active(U52(X)) -> U52(active(X)) 30.41/8.92 active(U61(X)) -> U61(active(X)) 30.41/8.92 active(U71(X1, X2)) -> U71(active(X1), X2) 30.41/8.92 active(U72(X)) -> U72(active(X)) 30.41/8.92 active(U81(X)) -> U81(active(X)) 30.41/8.92 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.41/8.92 proper(U11(X)) -> U11(proper(X)) 30.41/8.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.41/8.92 proper(U22(X)) -> U22(proper(X)) 30.41/8.92 proper(isList(X)) -> isList(proper(X)) 30.41/8.92 proper(U31(X)) -> U31(proper(X)) 30.41/8.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.41/8.92 proper(U42(X)) -> U42(proper(X)) 30.41/8.92 proper(isNeList(X)) -> isNeList(proper(X)) 30.41/8.92 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.41/8.92 proper(U52(X)) -> U52(proper(X)) 30.41/8.92 proper(U61(X)) -> U61(proper(X)) 30.41/8.92 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.41/8.92 proper(U72(X)) -> U72(proper(X)) 30.41/8.92 proper(isPal(X)) -> isPal(proper(X)) 30.41/8.92 proper(U81(X)) -> U81(proper(X)) 30.41/8.92 proper(isQid(X)) -> isQid(proper(X)) 30.41/8.92 proper(isNePal(X)) -> isNePal(proper(X)) 30.41/8.92 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (2) 30.41/8.92 Obligation: 30.41/8.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 30.41/8.92 30.41/8.92 30.41/8.92 The TRS R consists of the following rules: 30.41/8.92 30.41/8.92 __(mark(X1), X2) -> mark(__(X1, X2)) 30.41/8.92 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.41/8.92 U11(mark(X)) -> mark(U11(X)) 30.41/8.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.41/8.92 U22(mark(X)) -> mark(U22(X)) 30.41/8.92 U31(mark(X)) -> mark(U31(X)) 30.41/8.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.41/8.92 U42(mark(X)) -> mark(U42(X)) 30.41/8.92 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.41/8.92 U52(mark(X)) -> mark(U52(X)) 30.41/8.92 U61(mark(X)) -> mark(U61(X)) 30.41/8.92 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.41/8.92 U72(mark(X)) -> mark(U72(X)) 30.41/8.92 U81(mark(X)) -> mark(U81(X)) 30.41/8.92 proper(nil) -> ok(nil) 30.41/8.92 proper(tt) -> ok(tt) 30.41/8.92 proper(a) -> ok(a) 30.41/8.92 proper(e) -> ok(e) 30.41/8.92 proper(i) -> ok(i) 30.41/8.92 proper(o) -> ok(o) 30.41/8.92 proper(u) -> ok(u) 30.41/8.92 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.41/8.92 U11(ok(X)) -> ok(U11(X)) 30.41/8.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.41/8.92 U22(ok(X)) -> ok(U22(X)) 30.41/8.92 isList(ok(X)) -> ok(isList(X)) 30.41/8.92 U31(ok(X)) -> ok(U31(X)) 30.41/8.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.41/8.92 U42(ok(X)) -> ok(U42(X)) 30.41/8.92 isNeList(ok(X)) -> ok(isNeList(X)) 30.41/8.92 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.41/8.92 U52(ok(X)) -> ok(U52(X)) 30.41/8.92 U61(ok(X)) -> ok(U61(X)) 30.41/8.92 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.41/8.92 U72(ok(X)) -> ok(U72(X)) 30.41/8.92 isPal(ok(X)) -> ok(isPal(X)) 30.41/8.92 U81(ok(X)) -> ok(U81(X)) 30.41/8.92 isQid(ok(X)) -> ok(isQid(X)) 30.41/8.92 isNePal(ok(X)) -> ok(isNePal(X)) 30.41/8.92 top(mark(X)) -> top(proper(X)) 30.41/8.92 top(ok(X)) -> top(active(X)) 30.41/8.92 30.41/8.92 S is empty. 30.41/8.92 Rewrite Strategy: FULL 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (3) RelTrsToTrsProof (UPPER BOUND(ID)) 30.41/8.92 transformed relative TRS to TRS 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (4) 30.41/8.92 Obligation: 30.41/8.92 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 30.41/8.92 30.41/8.92 30.41/8.92 The TRS R consists of the following rules: 30.41/8.92 30.41/8.92 __(mark(X1), X2) -> mark(__(X1, X2)) 30.41/8.92 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.41/8.92 U11(mark(X)) -> mark(U11(X)) 30.41/8.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.41/8.92 U22(mark(X)) -> mark(U22(X)) 30.41/8.92 U31(mark(X)) -> mark(U31(X)) 30.41/8.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.41/8.92 U42(mark(X)) -> mark(U42(X)) 30.41/8.92 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.41/8.92 U52(mark(X)) -> mark(U52(X)) 30.41/8.92 U61(mark(X)) -> mark(U61(X)) 30.41/8.92 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.41/8.92 U72(mark(X)) -> mark(U72(X)) 30.41/8.92 U81(mark(X)) -> mark(U81(X)) 30.41/8.92 proper(nil) -> ok(nil) 30.41/8.92 proper(tt) -> ok(tt) 30.41/8.92 proper(a) -> ok(a) 30.41/8.92 proper(e) -> ok(e) 30.41/8.92 proper(i) -> ok(i) 30.41/8.92 proper(o) -> ok(o) 30.41/8.92 proper(u) -> ok(u) 30.41/8.92 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.41/8.92 U11(ok(X)) -> ok(U11(X)) 30.41/8.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.41/8.92 U22(ok(X)) -> ok(U22(X)) 30.41/8.92 isList(ok(X)) -> ok(isList(X)) 30.41/8.92 U31(ok(X)) -> ok(U31(X)) 30.41/8.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.41/8.92 U42(ok(X)) -> ok(U42(X)) 30.41/8.92 isNeList(ok(X)) -> ok(isNeList(X)) 30.41/8.92 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.41/8.92 U52(ok(X)) -> ok(U52(X)) 30.41/8.92 U61(ok(X)) -> ok(U61(X)) 30.41/8.92 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.41/8.92 U72(ok(X)) -> ok(U72(X)) 30.41/8.92 isPal(ok(X)) -> ok(isPal(X)) 30.41/8.92 U81(ok(X)) -> ok(U81(X)) 30.41/8.92 isQid(ok(X)) -> ok(isQid(X)) 30.41/8.92 isNePal(ok(X)) -> ok(isNePal(X)) 30.41/8.92 top(mark(X)) -> top(proper(X)) 30.41/8.92 top(ok(X)) -> top(active(X)) 30.41/8.92 30.41/8.92 S is empty. 30.41/8.92 Rewrite Strategy: FULL 30.41/8.92 ---------------------------------------- 30.41/8.92 30.41/8.92 (5) CpxTrsMatchBoundsTAProof (FINISHED) 30.41/8.92 A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 2. 30.41/8.92 30.41/8.92 The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: 30.41/8.92 final states : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 30.41/8.92 transitions: 30.41/8.92 mark0(0) -> 0 30.41/8.92 nil0() -> 0 30.41/8.92 ok0(0) -> 0 30.41/8.92 tt0() -> 0 30.41/8.92 a0() -> 0 30.41/8.92 e0() -> 0 30.41/8.92 i0() -> 0 30.41/8.92 o0() -> 0 30.41/8.92 u0() -> 0 30.41/8.92 active0(0) -> 0 30.41/8.92 __0(0, 0) -> 1 30.41/8.92 U110(0) -> 2 30.41/8.92 U210(0, 0) -> 3 30.41/8.92 U220(0) -> 4 30.41/8.92 U310(0) -> 5 30.41/8.92 U410(0, 0) -> 6 30.41/8.92 U420(0) -> 7 30.41/8.92 U510(0, 0) -> 8 30.41/8.92 U520(0) -> 9 30.41/8.92 U610(0) -> 10 30.41/8.92 U710(0, 0) -> 11 30.41/8.92 U720(0) -> 12 30.41/8.92 U810(0) -> 13 30.41/8.92 proper0(0) -> 14 30.41/8.92 isList0(0) -> 15 30.41/8.92 isNeList0(0) -> 16 30.41/8.92 isPal0(0) -> 17 30.41/8.92 isQid0(0) -> 18 30.41/8.92 isNePal0(0) -> 19 30.41/8.92 top0(0) -> 20 30.41/8.92 __1(0, 0) -> 21 30.41/8.92 mark1(21) -> 1 30.41/8.92 U111(0) -> 22 30.41/8.92 mark1(22) -> 2 30.41/8.92 U211(0, 0) -> 23 30.41/8.92 mark1(23) -> 3 30.41/8.92 U221(0) -> 24 30.41/8.92 mark1(24) -> 4 30.41/8.92 U311(0) -> 25 30.41/8.92 mark1(25) -> 5 30.41/8.92 U411(0, 0) -> 26 30.41/8.92 mark1(26) -> 6 30.41/8.92 U421(0) -> 27 30.41/8.92 mark1(27) -> 7 30.41/8.92 U511(0, 0) -> 28 30.41/8.92 mark1(28) -> 8 30.41/8.92 U521(0) -> 29 30.41/8.92 mark1(29) -> 9 30.41/8.92 U611(0) -> 30 30.41/8.92 mark1(30) -> 10 30.41/8.93 U711(0, 0) -> 31 30.41/8.93 mark1(31) -> 11 30.41/8.93 U721(0) -> 32 30.41/8.93 mark1(32) -> 12 30.41/8.93 U811(0) -> 33 30.41/8.93 mark1(33) -> 13 30.41/8.93 nil1() -> 34 30.41/8.93 ok1(34) -> 14 30.41/8.93 tt1() -> 35 30.41/8.93 ok1(35) -> 14 30.41/8.93 a1() -> 36 30.41/8.93 ok1(36) -> 14 30.41/8.93 e1() -> 37 30.41/8.93 ok1(37) -> 14 30.41/8.93 i1() -> 38 30.41/8.93 ok1(38) -> 14 30.41/8.93 o1() -> 39 30.41/8.93 ok1(39) -> 14 30.41/8.93 u1() -> 40 30.41/8.93 ok1(40) -> 14 30.41/8.93 __1(0, 0) -> 41 30.41/8.93 ok1(41) -> 1 30.41/8.93 U111(0) -> 42 30.41/8.93 ok1(42) -> 2 30.41/8.93 U211(0, 0) -> 43 30.41/8.93 ok1(43) -> 3 30.41/8.93 U221(0) -> 44 30.41/8.93 ok1(44) -> 4 30.41/8.93 isList1(0) -> 45 30.41/8.93 ok1(45) -> 15 30.41/8.93 U311(0) -> 46 30.41/8.93 ok1(46) -> 5 30.41/8.93 U411(0, 0) -> 47 30.41/8.93 ok1(47) -> 6 30.41/8.93 U421(0) -> 48 30.41/8.93 ok1(48) -> 7 30.41/8.93 isNeList1(0) -> 49 30.41/8.93 ok1(49) -> 16 30.41/8.93 U511(0, 0) -> 50 30.41/8.93 ok1(50) -> 8 30.41/8.93 U521(0) -> 51 30.41/8.93 ok1(51) -> 9 30.41/8.93 U611(0) -> 52 30.41/8.93 ok1(52) -> 10 30.41/8.93 U711(0, 0) -> 53 30.41/8.93 ok1(53) -> 11 30.41/8.93 U721(0) -> 54 30.41/8.93 ok1(54) -> 12 30.41/8.93 isPal1(0) -> 55 30.41/8.93 ok1(55) -> 17 30.41/8.93 U811(0) -> 56 30.41/8.93 ok1(56) -> 13 30.41/8.93 isQid1(0) -> 57 30.41/8.93 ok1(57) -> 18 30.41/8.93 isNePal1(0) -> 58 30.41/8.93 ok1(58) -> 19 30.41/8.93 proper1(0) -> 59 30.41/8.93 top1(59) -> 20 30.41/8.93 active1(0) -> 60 30.41/8.93 top1(60) -> 20 30.41/8.93 mark1(21) -> 21 30.41/8.93 mark1(21) -> 41 30.41/8.93 mark1(22) -> 22 30.41/8.93 mark1(22) -> 42 30.41/8.93 mark1(23) -> 23 30.41/8.93 mark1(23) -> 43 30.41/8.93 mark1(24) -> 24 30.41/8.93 mark1(24) -> 44 30.41/8.93 mark1(25) -> 25 30.41/8.93 mark1(25) -> 46 30.41/8.93 mark1(26) -> 26 30.41/8.93 mark1(26) -> 47 30.41/8.93 mark1(27) -> 27 30.41/8.93 mark1(27) -> 48 30.41/8.93 mark1(28) -> 28 30.41/8.93 mark1(28) -> 50 30.41/8.93 mark1(29) -> 29 30.41/8.93 mark1(29) -> 51 30.41/8.93 mark1(30) -> 30 30.41/8.93 mark1(30) -> 52 30.41/8.93 mark1(31) -> 31 30.41/8.93 mark1(31) -> 53 30.41/8.93 mark1(32) -> 32 30.41/8.93 mark1(32) -> 54 30.41/8.93 mark1(33) -> 33 30.41/8.93 mark1(33) -> 56 30.41/8.93 ok1(34) -> 59 30.41/8.93 ok1(35) -> 59 30.41/8.93 ok1(36) -> 59 30.41/8.93 ok1(37) -> 59 30.41/8.93 ok1(38) -> 59 30.41/8.93 ok1(39) -> 59 30.41/8.93 ok1(40) -> 59 30.41/8.93 ok1(41) -> 21 30.41/8.93 ok1(41) -> 41 30.41/8.93 ok1(42) -> 22 30.41/8.93 ok1(42) -> 42 30.41/8.93 ok1(43) -> 23 30.41/8.93 ok1(43) -> 43 30.41/8.93 ok1(44) -> 24 30.41/8.93 ok1(44) -> 44 30.41/8.93 ok1(45) -> 45 30.41/8.93 ok1(46) -> 25 30.41/8.93 ok1(46) -> 46 30.41/8.93 ok1(47) -> 26 30.41/8.93 ok1(47) -> 47 30.41/8.93 ok1(48) -> 27 30.41/8.93 ok1(48) -> 48 30.41/8.93 ok1(49) -> 49 30.41/8.93 ok1(50) -> 28 30.41/8.93 ok1(50) -> 50 30.41/8.93 ok1(51) -> 29 30.41/8.93 ok1(51) -> 51 30.41/8.93 ok1(52) -> 30 30.41/8.93 ok1(52) -> 52 30.41/8.93 ok1(53) -> 31 30.41/8.93 ok1(53) -> 53 30.41/8.93 ok1(54) -> 32 30.41/8.93 ok1(54) -> 54 30.41/8.93 ok1(55) -> 55 30.41/8.93 ok1(56) -> 33 30.41/8.93 ok1(56) -> 56 30.41/8.93 ok1(57) -> 57 30.41/8.93 ok1(58) -> 58 30.41/8.93 active2(34) -> 61 30.41/8.93 top2(61) -> 20 30.41/8.93 active2(35) -> 61 30.41/8.93 active2(36) -> 61 30.41/8.93 active2(37) -> 61 30.41/8.93 active2(38) -> 61 30.41/8.93 active2(39) -> 61 30.41/8.93 active2(40) -> 61 30.41/8.93 30.41/8.93 ---------------------------------------- 30.41/8.93 30.41/8.93 (6) 30.41/8.93 BOUNDS(1, n^1) 30.41/8.93 30.41/8.93 ---------------------------------------- 30.41/8.93 30.41/8.93 (7) RenamingProof (BOTH BOUNDS(ID, ID)) 30.41/8.93 Renamed function symbols to avoid clashes with predefined symbol. 30.41/8.93 ---------------------------------------- 30.41/8.93 30.41/8.93 (8) 30.41/8.93 Obligation: 30.41/8.93 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 30.41/8.93 30.41/8.93 30.41/8.93 The TRS R consists of the following rules: 30.41/8.93 30.41/8.93 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.41/8.93 active(__(X, nil)) -> mark(X) 30.41/8.93 active(__(nil, X)) -> mark(X) 30.41/8.93 active(U11(tt)) -> mark(tt) 30.41/8.93 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.41/8.93 active(U22(tt)) -> mark(tt) 30.41/8.93 active(U31(tt)) -> mark(tt) 30.41/8.93 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.41/8.93 active(U42(tt)) -> mark(tt) 30.41/8.93 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.41/8.93 active(U52(tt)) -> mark(tt) 30.41/8.93 active(U61(tt)) -> mark(tt) 30.41/8.93 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.41/8.93 active(U72(tt)) -> mark(tt) 30.41/8.93 active(U81(tt)) -> mark(tt) 30.41/8.93 active(isList(V)) -> mark(U11(isNeList(V))) 30.41/8.93 active(isList(nil)) -> mark(tt) 30.41/8.93 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.41/8.93 active(isNeList(V)) -> mark(U31(isQid(V))) 30.41/8.93 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.41/8.93 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.41/8.93 active(isNePal(V)) -> mark(U61(isQid(V))) 30.41/8.93 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.41/8.93 active(isPal(V)) -> mark(U81(isNePal(V))) 30.41/8.93 active(isPal(nil)) -> mark(tt) 30.41/8.93 active(isQid(a)) -> mark(tt) 30.41/8.93 active(isQid(e)) -> mark(tt) 30.41/8.93 active(isQid(i)) -> mark(tt) 30.41/8.93 active(isQid(o)) -> mark(tt) 30.41/8.93 active(isQid(u)) -> mark(tt) 30.41/8.93 active(__(X1, X2)) -> __(active(X1), X2) 30.41/8.93 active(__(X1, X2)) -> __(X1, active(X2)) 30.41/8.93 active(U11(X)) -> U11(active(X)) 30.41/8.93 active(U21(X1, X2)) -> U21(active(X1), X2) 30.41/8.93 active(U22(X)) -> U22(active(X)) 30.41/8.93 active(U31(X)) -> U31(active(X)) 30.41/8.93 active(U41(X1, X2)) -> U41(active(X1), X2) 30.41/8.93 active(U42(X)) -> U42(active(X)) 30.41/8.93 active(U51(X1, X2)) -> U51(active(X1), X2) 30.41/8.93 active(U52(X)) -> U52(active(X)) 30.41/8.93 active(U61(X)) -> U61(active(X)) 30.41/8.93 active(U71(X1, X2)) -> U71(active(X1), X2) 30.41/8.93 active(U72(X)) -> U72(active(X)) 30.41/8.93 active(U81(X)) -> U81(active(X)) 30.41/8.93 __(mark(X1), X2) -> mark(__(X1, X2)) 30.41/8.93 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.41/8.93 U11(mark(X)) -> mark(U11(X)) 30.41/8.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.41/8.93 U22(mark(X)) -> mark(U22(X)) 30.41/8.93 U31(mark(X)) -> mark(U31(X)) 30.41/8.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.41/8.93 U42(mark(X)) -> mark(U42(X)) 30.41/8.93 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.41/8.93 U52(mark(X)) -> mark(U52(X)) 30.41/8.93 U61(mark(X)) -> mark(U61(X)) 30.41/8.93 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.41/8.93 U72(mark(X)) -> mark(U72(X)) 30.41/8.93 U81(mark(X)) -> mark(U81(X)) 30.41/8.93 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.41/8.93 proper(nil) -> ok(nil) 30.41/8.93 proper(U11(X)) -> U11(proper(X)) 30.41/8.93 proper(tt) -> ok(tt) 30.41/8.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.41/8.93 proper(U22(X)) -> U22(proper(X)) 30.41/8.93 proper(isList(X)) -> isList(proper(X)) 30.41/8.93 proper(U31(X)) -> U31(proper(X)) 30.41/8.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.41/8.93 proper(U42(X)) -> U42(proper(X)) 30.41/8.93 proper(isNeList(X)) -> isNeList(proper(X)) 30.41/8.93 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.41/8.93 proper(U52(X)) -> U52(proper(X)) 30.41/8.93 proper(U61(X)) -> U61(proper(X)) 30.41/8.93 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.41/8.93 proper(U72(X)) -> U72(proper(X)) 30.41/8.93 proper(isPal(X)) -> isPal(proper(X)) 30.41/8.93 proper(U81(X)) -> U81(proper(X)) 30.41/8.93 proper(isQid(X)) -> isQid(proper(X)) 30.41/8.93 proper(isNePal(X)) -> isNePal(proper(X)) 30.41/8.93 proper(a) -> ok(a) 30.41/8.93 proper(e) -> ok(e) 30.41/8.93 proper(i) -> ok(i) 30.41/8.93 proper(o) -> ok(o) 30.41/8.93 proper(u) -> ok(u) 30.41/8.93 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.41/8.93 U11(ok(X)) -> ok(U11(X)) 30.41/8.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.41/8.93 U22(ok(X)) -> ok(U22(X)) 30.41/8.93 isList(ok(X)) -> ok(isList(X)) 30.41/8.93 U31(ok(X)) -> ok(U31(X)) 30.41/8.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.41/8.93 U42(ok(X)) -> ok(U42(X)) 30.41/8.93 isNeList(ok(X)) -> ok(isNeList(X)) 30.41/8.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.41/8.93 U52(ok(X)) -> ok(U52(X)) 30.41/8.93 U61(ok(X)) -> ok(U61(X)) 30.41/8.93 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.41/8.93 U72(ok(X)) -> ok(U72(X)) 30.41/8.93 isPal(ok(X)) -> ok(isPal(X)) 30.41/8.93 U81(ok(X)) -> ok(U81(X)) 30.41/8.93 isQid(ok(X)) -> ok(isQid(X)) 30.41/8.93 isNePal(ok(X)) -> ok(isNePal(X)) 30.41/8.93 top(mark(X)) -> top(proper(X)) 30.41/8.93 top(ok(X)) -> top(active(X)) 30.41/8.93 30.41/8.93 S is empty. 30.41/8.93 Rewrite Strategy: FULL 30.41/8.93 ---------------------------------------- 30.41/8.93 30.41/8.93 (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 30.41/8.93 Infered types. 30.41/8.93 ---------------------------------------- 30.41/8.93 30.41/8.93 (10) 30.41/8.93 Obligation: 30.41/8.93 TRS: 30.41/8.93 Rules: 30.41/8.93 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.41/8.93 active(__(X, nil)) -> mark(X) 30.41/8.93 active(__(nil, X)) -> mark(X) 30.41/8.93 active(U11(tt)) -> mark(tt) 30.41/8.93 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.41/8.93 active(U22(tt)) -> mark(tt) 30.41/8.93 active(U31(tt)) -> mark(tt) 30.41/8.93 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.41/8.93 active(U42(tt)) -> mark(tt) 30.41/8.93 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.41/8.93 active(U52(tt)) -> mark(tt) 30.41/8.93 active(U61(tt)) -> mark(tt) 30.41/8.93 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.41/8.93 active(U72(tt)) -> mark(tt) 30.41/8.93 active(U81(tt)) -> mark(tt) 30.41/8.93 active(isList(V)) -> mark(U11(isNeList(V))) 30.41/8.93 active(isList(nil)) -> mark(tt) 30.41/8.93 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.41/8.93 active(isNeList(V)) -> mark(U31(isQid(V))) 30.41/8.93 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.41/8.93 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.41/8.93 active(isNePal(V)) -> mark(U61(isQid(V))) 30.41/8.93 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.41/8.93 active(isPal(V)) -> mark(U81(isNePal(V))) 30.41/8.93 active(isPal(nil)) -> mark(tt) 30.41/8.93 active(isQid(a)) -> mark(tt) 30.41/8.93 active(isQid(e)) -> mark(tt) 30.41/8.93 active(isQid(i)) -> mark(tt) 30.41/8.93 active(isQid(o)) -> mark(tt) 30.41/8.93 active(isQid(u)) -> mark(tt) 30.41/8.93 active(__(X1, X2)) -> __(active(X1), X2) 30.41/8.93 active(__(X1, X2)) -> __(X1, active(X2)) 30.41/8.93 active(U11(X)) -> U11(active(X)) 30.41/8.93 active(U21(X1, X2)) -> U21(active(X1), X2) 30.41/8.93 active(U22(X)) -> U22(active(X)) 30.41/8.93 active(U31(X)) -> U31(active(X)) 30.41/8.93 active(U41(X1, X2)) -> U41(active(X1), X2) 30.41/8.93 active(U42(X)) -> U42(active(X)) 30.41/8.93 active(U51(X1, X2)) -> U51(active(X1), X2) 30.41/8.93 active(U52(X)) -> U52(active(X)) 30.41/8.93 active(U61(X)) -> U61(active(X)) 30.41/8.93 active(U71(X1, X2)) -> U71(active(X1), X2) 30.41/8.93 active(U72(X)) -> U72(active(X)) 30.41/8.93 active(U81(X)) -> U81(active(X)) 30.41/8.93 __(mark(X1), X2) -> mark(__(X1, X2)) 30.41/8.93 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.41/8.93 U11(mark(X)) -> mark(U11(X)) 30.41/8.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.41/8.93 U22(mark(X)) -> mark(U22(X)) 30.41/8.93 U31(mark(X)) -> mark(U31(X)) 30.41/8.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.41/8.93 U42(mark(X)) -> mark(U42(X)) 30.41/8.93 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.41/8.93 U52(mark(X)) -> mark(U52(X)) 30.41/8.93 U61(mark(X)) -> mark(U61(X)) 30.41/8.93 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.41/8.93 U72(mark(X)) -> mark(U72(X)) 30.41/8.93 U81(mark(X)) -> mark(U81(X)) 30.41/8.93 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.41/8.93 proper(nil) -> ok(nil) 30.41/8.93 proper(U11(X)) -> U11(proper(X)) 30.41/8.93 proper(tt) -> ok(tt) 30.41/8.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.41/8.93 proper(U22(X)) -> U22(proper(X)) 30.41/8.93 proper(isList(X)) -> isList(proper(X)) 30.41/8.93 proper(U31(X)) -> U31(proper(X)) 30.41/8.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.41/8.93 proper(U42(X)) -> U42(proper(X)) 30.41/8.93 proper(isNeList(X)) -> isNeList(proper(X)) 30.41/8.93 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.41/8.93 proper(U52(X)) -> U52(proper(X)) 30.41/8.93 proper(U61(X)) -> U61(proper(X)) 30.41/8.93 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.41/8.93 proper(U72(X)) -> U72(proper(X)) 30.41/8.93 proper(isPal(X)) -> isPal(proper(X)) 30.41/8.93 proper(U81(X)) -> U81(proper(X)) 30.41/8.93 proper(isQid(X)) -> isQid(proper(X)) 30.41/8.93 proper(isNePal(X)) -> isNePal(proper(X)) 30.41/8.93 proper(a) -> ok(a) 30.41/8.93 proper(e) -> ok(e) 30.41/8.93 proper(i) -> ok(i) 30.41/8.93 proper(o) -> ok(o) 30.41/8.93 proper(u) -> ok(u) 30.41/8.93 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.41/8.93 U11(ok(X)) -> ok(U11(X)) 30.41/8.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.41/8.93 U22(ok(X)) -> ok(U22(X)) 30.41/8.93 isList(ok(X)) -> ok(isList(X)) 30.41/8.93 U31(ok(X)) -> ok(U31(X)) 30.41/8.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.41/8.93 U42(ok(X)) -> ok(U42(X)) 30.41/8.93 isNeList(ok(X)) -> ok(isNeList(X)) 30.41/8.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.41/8.93 U52(ok(X)) -> ok(U52(X)) 30.41/8.93 U61(ok(X)) -> ok(U61(X)) 30.41/8.93 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.41/8.93 U72(ok(X)) -> ok(U72(X)) 30.41/8.93 isPal(ok(X)) -> ok(isPal(X)) 30.41/8.93 U81(ok(X)) -> ok(U81(X)) 30.41/8.93 isQid(ok(X)) -> ok(isQid(X)) 30.41/8.93 isNePal(ok(X)) -> ok(isNePal(X)) 30.41/8.93 top(mark(X)) -> top(proper(X)) 30.41/8.93 top(ok(X)) -> top(active(X)) 30.41/8.93 30.41/8.93 Types: 30.41/8.93 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 nil :: mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 tt :: mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.41/8.93 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.93 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 hole_top2_0 :: top 30.63/8.93 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 30.63/8.93 ---------------------------------------- 30.63/8.93 30.63/8.93 (11) OrderProof (LOWER BOUND(ID)) 30.63/8.93 Heuristically decided to analyse the following defined symbols: 30.63/8.93 active, __, U22, isList, U42, isNeList, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.93 30.63/8.93 They will be analysed ascendingly in the following order: 30.63/8.93 __ < active 30.63/8.93 U22 < active 30.63/8.93 isList < active 30.63/8.93 U42 < active 30.63/8.93 isNeList < active 30.63/8.93 U52 < active 30.63/8.93 U72 < active 30.63/8.93 isPal < active 30.63/8.93 U11 < active 30.63/8.93 U21 < active 30.63/8.93 U31 < active 30.63/8.93 isQid < active 30.63/8.93 U41 < active 30.63/8.93 U51 < active 30.63/8.93 U61 < active 30.63/8.93 U71 < active 30.63/8.93 U81 < active 30.63/8.93 isNePal < active 30.63/8.93 active < top 30.63/8.93 __ < proper 30.63/8.93 U22 < proper 30.63/8.93 isList < proper 30.63/8.93 U42 < proper 30.63/8.93 isNeList < proper 30.63/8.93 U52 < proper 30.63/8.93 U72 < proper 30.63/8.93 isPal < proper 30.63/8.93 U11 < proper 30.63/8.93 U21 < proper 30.63/8.93 U31 < proper 30.63/8.93 isQid < proper 30.63/8.93 U41 < proper 30.63/8.93 U51 < proper 30.63/8.93 U61 < proper 30.63/8.93 U71 < proper 30.63/8.93 U81 < proper 30.63/8.93 isNePal < proper 30.63/8.93 proper < top 30.63/8.93 30.63/8.93 ---------------------------------------- 30.63/8.93 30.63/8.93 (12) 30.63/8.93 Obligation: 30.63/8.93 TRS: 30.63/8.93 Rules: 30.63/8.93 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.93 active(__(X, nil)) -> mark(X) 30.63/8.93 active(__(nil, X)) -> mark(X) 30.63/8.93 active(U11(tt)) -> mark(tt) 30.63/8.93 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.93 active(U22(tt)) -> mark(tt) 30.63/8.93 active(U31(tt)) -> mark(tt) 30.63/8.93 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.93 active(U42(tt)) -> mark(tt) 30.63/8.93 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.93 active(U52(tt)) -> mark(tt) 30.63/8.93 active(U61(tt)) -> mark(tt) 30.63/8.93 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.93 active(U72(tt)) -> mark(tt) 30.63/8.93 active(U81(tt)) -> mark(tt) 30.63/8.93 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.93 active(isList(nil)) -> mark(tt) 30.63/8.93 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.93 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.93 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.93 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.93 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.93 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.93 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.93 active(isPal(nil)) -> mark(tt) 30.63/8.93 active(isQid(a)) -> mark(tt) 30.63/8.93 active(isQid(e)) -> mark(tt) 30.63/8.93 active(isQid(i)) -> mark(tt) 30.63/8.93 active(isQid(o)) -> mark(tt) 30.63/8.93 active(isQid(u)) -> mark(tt) 30.63/8.93 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.93 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.93 active(U11(X)) -> U11(active(X)) 30.63/8.93 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.93 active(U22(X)) -> U22(active(X)) 30.63/8.93 active(U31(X)) -> U31(active(X)) 30.63/8.93 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.93 active(U42(X)) -> U42(active(X)) 30.63/8.93 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.93 active(U52(X)) -> U52(active(X)) 30.63/8.93 active(U61(X)) -> U61(active(X)) 30.63/8.93 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.93 active(U72(X)) -> U72(active(X)) 30.63/8.93 active(U81(X)) -> U81(active(X)) 30.63/8.93 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.93 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.93 U11(mark(X)) -> mark(U11(X)) 30.63/8.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.93 U22(mark(X)) -> mark(U22(X)) 30.63/8.93 U31(mark(X)) -> mark(U31(X)) 30.63/8.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.93 U42(mark(X)) -> mark(U42(X)) 30.63/8.93 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.93 U52(mark(X)) -> mark(U52(X)) 30.63/8.93 U61(mark(X)) -> mark(U61(X)) 30.63/8.93 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.93 U72(mark(X)) -> mark(U72(X)) 30.63/8.93 U81(mark(X)) -> mark(U81(X)) 30.63/8.93 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.93 proper(nil) -> ok(nil) 30.63/8.93 proper(U11(X)) -> U11(proper(X)) 30.63/8.93 proper(tt) -> ok(tt) 30.63/8.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.93 proper(U22(X)) -> U22(proper(X)) 30.63/8.93 proper(isList(X)) -> isList(proper(X)) 30.63/8.93 proper(U31(X)) -> U31(proper(X)) 30.63/8.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.93 proper(U42(X)) -> U42(proper(X)) 30.63/8.93 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.93 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.93 proper(U52(X)) -> U52(proper(X)) 30.63/8.93 proper(U61(X)) -> U61(proper(X)) 30.63/8.93 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.93 proper(U72(X)) -> U72(proper(X)) 30.63/8.93 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.93 proper(U81(X)) -> U81(proper(X)) 30.63/8.93 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.93 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.93 proper(a) -> ok(a) 30.63/8.93 proper(e) -> ok(e) 30.63/8.93 proper(i) -> ok(i) 30.63/8.93 proper(o) -> ok(o) 30.63/8.93 proper(u) -> ok(u) 30.63/8.93 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.93 U11(ok(X)) -> ok(U11(X)) 30.63/8.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.93 U22(ok(X)) -> ok(U22(X)) 30.63/8.93 isList(ok(X)) -> ok(isList(X)) 30.63/8.93 U31(ok(X)) -> ok(U31(X)) 30.63/8.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.93 U42(ok(X)) -> ok(U42(X)) 30.63/8.93 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.93 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.93 U52(ok(X)) -> ok(U52(X)) 30.63/8.93 U61(ok(X)) -> ok(U61(X)) 30.63/8.93 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.93 U72(ok(X)) -> ok(U72(X)) 30.63/8.93 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.93 U81(ok(X)) -> ok(U81(X)) 30.63/8.93 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.93 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.93 top(mark(X)) -> top(proper(X)) 30.63/8.93 top(ok(X)) -> top(active(X)) 30.63/8.93 30.63/8.93 Types: 30.63/8.93 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.93 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 hole_top2_0 :: top 30.63/8.93 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.93 30.63/8.93 30.63/8.93 Generator Equations: 30.63/8.93 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.93 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.93 30.63/8.93 30.63/8.93 The following defined symbols remain to be analysed: 30.63/8.93 __, active, U22, isList, U42, isNeList, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.93 30.63/8.93 They will be analysed ascendingly in the following order: 30.63/8.93 __ < active 30.63/8.93 U22 < active 30.63/8.93 isList < active 30.63/8.93 U42 < active 30.63/8.93 isNeList < active 30.63/8.93 U52 < active 30.63/8.93 U72 < active 30.63/8.93 isPal < active 30.63/8.93 U11 < active 30.63/8.93 U21 < active 30.63/8.93 U31 < active 30.63/8.93 isQid < active 30.63/8.93 U41 < active 30.63/8.93 U51 < active 30.63/8.93 U61 < active 30.63/8.93 U71 < active 30.63/8.93 U81 < active 30.63/8.93 isNePal < active 30.63/8.93 active < top 30.63/8.93 __ < proper 30.63/8.93 U22 < proper 30.63/8.93 isList < proper 30.63/8.93 U42 < proper 30.63/8.93 isNeList < proper 30.63/8.93 U52 < proper 30.63/8.93 U72 < proper 30.63/8.93 isPal < proper 30.63/8.93 U11 < proper 30.63/8.93 U21 < proper 30.63/8.93 U31 < proper 30.63/8.93 isQid < proper 30.63/8.93 U41 < proper 30.63/8.93 U51 < proper 30.63/8.93 U61 < proper 30.63/8.93 U71 < proper 30.63/8.93 U81 < proper 30.63/8.93 isNePal < proper 30.63/8.93 proper < top 30.63/8.93 30.63/8.93 ---------------------------------------- 30.63/8.93 30.63/8.93 (13) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.93 Proved the following rewrite lemma: 30.63/8.93 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.93 30.63/8.93 Induction Base: 30.63/8.93 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) 30.63/8.94 30.63/8.94 Induction Step: 30.63/8.94 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n5_0, 1))), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) ->_R^Omega(1) 30.63/8.94 mark(__(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b))) ->_IH 30.63/8.94 mark(*4_0) 30.63/8.94 30.63/8.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (14) 30.63/8.94 Complex Obligation (BEST) 30.63/8.94 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (15) 30.63/8.94 Obligation: 30.63/8.94 Proved the lower bound n^1 for the following obligation: 30.63/8.94 30.63/8.94 TRS: 30.63/8.94 Rules: 30.63/8.94 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.94 active(__(X, nil)) -> mark(X) 30.63/8.94 active(__(nil, X)) -> mark(X) 30.63/8.94 active(U11(tt)) -> mark(tt) 30.63/8.94 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.94 active(U22(tt)) -> mark(tt) 30.63/8.94 active(U31(tt)) -> mark(tt) 30.63/8.94 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.94 active(U42(tt)) -> mark(tt) 30.63/8.94 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.94 active(U52(tt)) -> mark(tt) 30.63/8.94 active(U61(tt)) -> mark(tt) 30.63/8.94 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.94 active(U72(tt)) -> mark(tt) 30.63/8.94 active(U81(tt)) -> mark(tt) 30.63/8.94 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.94 active(isList(nil)) -> mark(tt) 30.63/8.94 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.94 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.94 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.94 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.94 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.94 active(isPal(nil)) -> mark(tt) 30.63/8.94 active(isQid(a)) -> mark(tt) 30.63/8.94 active(isQid(e)) -> mark(tt) 30.63/8.94 active(isQid(i)) -> mark(tt) 30.63/8.94 active(isQid(o)) -> mark(tt) 30.63/8.94 active(isQid(u)) -> mark(tt) 30.63/8.94 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.94 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.94 active(U11(X)) -> U11(active(X)) 30.63/8.94 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.94 active(U22(X)) -> U22(active(X)) 30.63/8.94 active(U31(X)) -> U31(active(X)) 30.63/8.94 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.94 active(U42(X)) -> U42(active(X)) 30.63/8.94 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.94 active(U52(X)) -> U52(active(X)) 30.63/8.94 active(U61(X)) -> U61(active(X)) 30.63/8.94 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.94 active(U72(X)) -> U72(active(X)) 30.63/8.94 active(U81(X)) -> U81(active(X)) 30.63/8.94 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.94 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.94 U11(mark(X)) -> mark(U11(X)) 30.63/8.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.94 U22(mark(X)) -> mark(U22(X)) 30.63/8.94 U31(mark(X)) -> mark(U31(X)) 30.63/8.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.94 U42(mark(X)) -> mark(U42(X)) 30.63/8.94 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.94 U52(mark(X)) -> mark(U52(X)) 30.63/8.94 U61(mark(X)) -> mark(U61(X)) 30.63/8.94 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.94 U72(mark(X)) -> mark(U72(X)) 30.63/8.94 U81(mark(X)) -> mark(U81(X)) 30.63/8.94 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.94 proper(nil) -> ok(nil) 30.63/8.94 proper(U11(X)) -> U11(proper(X)) 30.63/8.94 proper(tt) -> ok(tt) 30.63/8.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.94 proper(U22(X)) -> U22(proper(X)) 30.63/8.94 proper(isList(X)) -> isList(proper(X)) 30.63/8.94 proper(U31(X)) -> U31(proper(X)) 30.63/8.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.94 proper(U42(X)) -> U42(proper(X)) 30.63/8.94 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.94 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.94 proper(U52(X)) -> U52(proper(X)) 30.63/8.94 proper(U61(X)) -> U61(proper(X)) 30.63/8.94 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.94 proper(U72(X)) -> U72(proper(X)) 30.63/8.94 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.94 proper(U81(X)) -> U81(proper(X)) 30.63/8.94 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.94 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.94 proper(a) -> ok(a) 30.63/8.94 proper(e) -> ok(e) 30.63/8.94 proper(i) -> ok(i) 30.63/8.94 proper(o) -> ok(o) 30.63/8.94 proper(u) -> ok(u) 30.63/8.94 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.94 U11(ok(X)) -> ok(U11(X)) 30.63/8.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.94 U22(ok(X)) -> ok(U22(X)) 30.63/8.94 isList(ok(X)) -> ok(isList(X)) 30.63/8.94 U31(ok(X)) -> ok(U31(X)) 30.63/8.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.94 U42(ok(X)) -> ok(U42(X)) 30.63/8.94 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.94 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.94 U52(ok(X)) -> ok(U52(X)) 30.63/8.94 U61(ok(X)) -> ok(U61(X)) 30.63/8.94 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.94 U72(ok(X)) -> ok(U72(X)) 30.63/8.94 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.94 U81(ok(X)) -> ok(U81(X)) 30.63/8.94 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.94 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.94 top(mark(X)) -> top(proper(X)) 30.63/8.94 top(ok(X)) -> top(active(X)) 30.63/8.94 30.63/8.94 Types: 30.63/8.94 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.94 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 hole_top2_0 :: top 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 30.63/8.94 30.63/8.94 Generator Equations: 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.94 30.63/8.94 30.63/8.94 The following defined symbols remain to be analysed: 30.63/8.94 __, active, U22, isList, U42, isNeList, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.94 30.63/8.94 They will be analysed ascendingly in the following order: 30.63/8.94 __ < active 30.63/8.94 U22 < active 30.63/8.94 isList < active 30.63/8.94 U42 < active 30.63/8.94 isNeList < active 30.63/8.94 U52 < active 30.63/8.94 U72 < active 30.63/8.94 isPal < active 30.63/8.94 U11 < active 30.63/8.94 U21 < active 30.63/8.94 U31 < active 30.63/8.94 isQid < active 30.63/8.94 U41 < active 30.63/8.94 U51 < active 30.63/8.94 U61 < active 30.63/8.94 U71 < active 30.63/8.94 U81 < active 30.63/8.94 isNePal < active 30.63/8.94 active < top 30.63/8.94 __ < proper 30.63/8.94 U22 < proper 30.63/8.94 isList < proper 30.63/8.94 U42 < proper 30.63/8.94 isNeList < proper 30.63/8.94 U52 < proper 30.63/8.94 U72 < proper 30.63/8.94 isPal < proper 30.63/8.94 U11 < proper 30.63/8.94 U21 < proper 30.63/8.94 U31 < proper 30.63/8.94 isQid < proper 30.63/8.94 U41 < proper 30.63/8.94 U51 < proper 30.63/8.94 U61 < proper 30.63/8.94 U71 < proper 30.63/8.94 U81 < proper 30.63/8.94 isNePal < proper 30.63/8.94 proper < top 30.63/8.94 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (16) LowerBoundPropagationProof (FINISHED) 30.63/8.94 Propagated lower bound. 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (17) 30.63/8.94 BOUNDS(n^1, INF) 30.63/8.94 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (18) 30.63/8.94 Obligation: 30.63/8.94 TRS: 30.63/8.94 Rules: 30.63/8.94 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.94 active(__(X, nil)) -> mark(X) 30.63/8.94 active(__(nil, X)) -> mark(X) 30.63/8.94 active(U11(tt)) -> mark(tt) 30.63/8.94 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.94 active(U22(tt)) -> mark(tt) 30.63/8.94 active(U31(tt)) -> mark(tt) 30.63/8.94 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.94 active(U42(tt)) -> mark(tt) 30.63/8.94 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.94 active(U52(tt)) -> mark(tt) 30.63/8.94 active(U61(tt)) -> mark(tt) 30.63/8.94 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.94 active(U72(tt)) -> mark(tt) 30.63/8.94 active(U81(tt)) -> mark(tt) 30.63/8.94 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.94 active(isList(nil)) -> mark(tt) 30.63/8.94 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.94 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.94 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.94 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.94 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.94 active(isPal(nil)) -> mark(tt) 30.63/8.94 active(isQid(a)) -> mark(tt) 30.63/8.94 active(isQid(e)) -> mark(tt) 30.63/8.94 active(isQid(i)) -> mark(tt) 30.63/8.94 active(isQid(o)) -> mark(tt) 30.63/8.94 active(isQid(u)) -> mark(tt) 30.63/8.94 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.94 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.94 active(U11(X)) -> U11(active(X)) 30.63/8.94 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.94 active(U22(X)) -> U22(active(X)) 30.63/8.94 active(U31(X)) -> U31(active(X)) 30.63/8.94 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.94 active(U42(X)) -> U42(active(X)) 30.63/8.94 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.94 active(U52(X)) -> U52(active(X)) 30.63/8.94 active(U61(X)) -> U61(active(X)) 30.63/8.94 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.94 active(U72(X)) -> U72(active(X)) 30.63/8.94 active(U81(X)) -> U81(active(X)) 30.63/8.94 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.94 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.94 U11(mark(X)) -> mark(U11(X)) 30.63/8.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.94 U22(mark(X)) -> mark(U22(X)) 30.63/8.94 U31(mark(X)) -> mark(U31(X)) 30.63/8.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.94 U42(mark(X)) -> mark(U42(X)) 30.63/8.94 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.94 U52(mark(X)) -> mark(U52(X)) 30.63/8.94 U61(mark(X)) -> mark(U61(X)) 30.63/8.94 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.94 U72(mark(X)) -> mark(U72(X)) 30.63/8.94 U81(mark(X)) -> mark(U81(X)) 30.63/8.94 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.94 proper(nil) -> ok(nil) 30.63/8.94 proper(U11(X)) -> U11(proper(X)) 30.63/8.94 proper(tt) -> ok(tt) 30.63/8.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.94 proper(U22(X)) -> U22(proper(X)) 30.63/8.94 proper(isList(X)) -> isList(proper(X)) 30.63/8.94 proper(U31(X)) -> U31(proper(X)) 30.63/8.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.94 proper(U42(X)) -> U42(proper(X)) 30.63/8.94 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.94 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.94 proper(U52(X)) -> U52(proper(X)) 30.63/8.94 proper(U61(X)) -> U61(proper(X)) 30.63/8.94 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.94 proper(U72(X)) -> U72(proper(X)) 30.63/8.94 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.94 proper(U81(X)) -> U81(proper(X)) 30.63/8.94 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.94 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.94 proper(a) -> ok(a) 30.63/8.94 proper(e) -> ok(e) 30.63/8.94 proper(i) -> ok(i) 30.63/8.94 proper(o) -> ok(o) 30.63/8.94 proper(u) -> ok(u) 30.63/8.94 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.94 U11(ok(X)) -> ok(U11(X)) 30.63/8.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.94 U22(ok(X)) -> ok(U22(X)) 30.63/8.94 isList(ok(X)) -> ok(isList(X)) 30.63/8.94 U31(ok(X)) -> ok(U31(X)) 30.63/8.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.94 U42(ok(X)) -> ok(U42(X)) 30.63/8.94 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.94 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.94 U52(ok(X)) -> ok(U52(X)) 30.63/8.94 U61(ok(X)) -> ok(U61(X)) 30.63/8.94 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.94 U72(ok(X)) -> ok(U72(X)) 30.63/8.94 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.94 U81(ok(X)) -> ok(U81(X)) 30.63/8.94 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.94 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.94 top(mark(X)) -> top(proper(X)) 30.63/8.94 top(ok(X)) -> top(active(X)) 30.63/8.94 30.63/8.94 Types: 30.63/8.94 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.94 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 hole_top2_0 :: top 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 30.63/8.94 30.63/8.94 Lemmas: 30.63/8.94 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.94 30.63/8.94 30.63/8.94 Generator Equations: 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.94 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.94 30.63/8.94 30.63/8.94 The following defined symbols remain to be analysed: 30.63/8.94 U22, active, isList, U42, isNeList, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.94 30.63/8.94 They will be analysed ascendingly in the following order: 30.63/8.94 U22 < active 30.63/8.94 isList < active 30.63/8.94 U42 < active 30.63/8.94 isNeList < active 30.63/8.94 U52 < active 30.63/8.94 U72 < active 30.63/8.94 isPal < active 30.63/8.94 U11 < active 30.63/8.94 U21 < active 30.63/8.94 U31 < active 30.63/8.94 isQid < active 30.63/8.94 U41 < active 30.63/8.94 U51 < active 30.63/8.94 U61 < active 30.63/8.94 U71 < active 30.63/8.94 U81 < active 30.63/8.94 isNePal < active 30.63/8.94 active < top 30.63/8.94 U22 < proper 30.63/8.94 isList < proper 30.63/8.94 U42 < proper 30.63/8.94 isNeList < proper 30.63/8.94 U52 < proper 30.63/8.94 U72 < proper 30.63/8.94 isPal < proper 30.63/8.94 U11 < proper 30.63/8.94 U21 < proper 30.63/8.94 U31 < proper 30.63/8.94 isQid < proper 30.63/8.94 U41 < proper 30.63/8.94 U51 < proper 30.63/8.94 U61 < proper 30.63/8.94 U71 < proper 30.63/8.94 U81 < proper 30.63/8.94 isNePal < proper 30.63/8.94 proper < top 30.63/8.94 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (19) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.94 Proved the following rewrite lemma: 30.63/8.94 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.94 30.63/8.94 Induction Base: 30.63/8.94 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.94 30.63/8.94 Induction Step: 30.63/8.94 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n2081_0, 1)))) ->_R^Omega(1) 30.63/8.94 mark(U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0)))) ->_IH 30.63/8.94 mark(*4_0) 30.63/8.94 30.63/8.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.94 ---------------------------------------- 30.63/8.94 30.63/8.94 (20) 30.63/8.94 Obligation: 30.63/8.94 TRS: 30.63/8.94 Rules: 30.63/8.94 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.94 active(__(X, nil)) -> mark(X) 30.63/8.94 active(__(nil, X)) -> mark(X) 30.63/8.94 active(U11(tt)) -> mark(tt) 30.63/8.94 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.94 active(U22(tt)) -> mark(tt) 30.63/8.94 active(U31(tt)) -> mark(tt) 30.63/8.94 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.94 active(U42(tt)) -> mark(tt) 30.63/8.94 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.94 active(U52(tt)) -> mark(tt) 30.63/8.94 active(U61(tt)) -> mark(tt) 30.63/8.94 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.94 active(U72(tt)) -> mark(tt) 30.63/8.94 active(U81(tt)) -> mark(tt) 30.63/8.94 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.94 active(isList(nil)) -> mark(tt) 30.63/8.94 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.94 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.94 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.94 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.94 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.94 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.94 active(isPal(nil)) -> mark(tt) 30.63/8.94 active(isQid(a)) -> mark(tt) 30.63/8.94 active(isQid(e)) -> mark(tt) 30.63/8.94 active(isQid(i)) -> mark(tt) 30.63/8.94 active(isQid(o)) -> mark(tt) 30.63/8.94 active(isQid(u)) -> mark(tt) 30.63/8.94 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.94 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.94 active(U11(X)) -> U11(active(X)) 30.63/8.94 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.94 active(U22(X)) -> U22(active(X)) 30.63/8.94 active(U31(X)) -> U31(active(X)) 30.63/8.94 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.94 active(U42(X)) -> U42(active(X)) 30.63/8.94 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.94 active(U52(X)) -> U52(active(X)) 30.63/8.94 active(U61(X)) -> U61(active(X)) 30.63/8.94 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.94 active(U72(X)) -> U72(active(X)) 30.63/8.94 active(U81(X)) -> U81(active(X)) 30.63/8.94 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.94 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.94 U11(mark(X)) -> mark(U11(X)) 30.63/8.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.94 U22(mark(X)) -> mark(U22(X)) 30.63/8.94 U31(mark(X)) -> mark(U31(X)) 30.63/8.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.94 U42(mark(X)) -> mark(U42(X)) 30.63/8.94 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.94 U52(mark(X)) -> mark(U52(X)) 30.63/8.94 U61(mark(X)) -> mark(U61(X)) 30.63/8.94 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.94 U72(mark(X)) -> mark(U72(X)) 30.63/8.94 U81(mark(X)) -> mark(U81(X)) 30.63/8.94 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.94 proper(nil) -> ok(nil) 30.63/8.94 proper(U11(X)) -> U11(proper(X)) 30.63/8.94 proper(tt) -> ok(tt) 30.63/8.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.94 proper(U22(X)) -> U22(proper(X)) 30.63/8.94 proper(isList(X)) -> isList(proper(X)) 30.63/8.94 proper(U31(X)) -> U31(proper(X)) 30.63/8.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.94 proper(U42(X)) -> U42(proper(X)) 30.63/8.94 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.94 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.94 proper(U52(X)) -> U52(proper(X)) 30.63/8.94 proper(U61(X)) -> U61(proper(X)) 30.63/8.94 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.94 proper(U72(X)) -> U72(proper(X)) 30.63/8.94 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.94 proper(U81(X)) -> U81(proper(X)) 30.63/8.94 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.94 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.94 proper(a) -> ok(a) 30.63/8.94 proper(e) -> ok(e) 30.63/8.94 proper(i) -> ok(i) 30.63/8.94 proper(o) -> ok(o) 30.63/8.94 proper(u) -> ok(u) 30.63/8.94 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.94 U11(ok(X)) -> ok(U11(X)) 30.63/8.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.94 U22(ok(X)) -> ok(U22(X)) 30.63/8.94 isList(ok(X)) -> ok(isList(X)) 30.63/8.94 U31(ok(X)) -> ok(U31(X)) 30.63/8.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.94 U42(ok(X)) -> ok(U42(X)) 30.63/8.94 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.94 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.94 U52(ok(X)) -> ok(U52(X)) 30.63/8.94 U61(ok(X)) -> ok(U61(X)) 30.63/8.94 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.94 U72(ok(X)) -> ok(U72(X)) 30.63/8.94 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.94 U81(ok(X)) -> ok(U81(X)) 30.63/8.94 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.94 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.94 top(mark(X)) -> top(proper(X)) 30.63/8.94 top(ok(X)) -> top(active(X)) 30.63/8.94 30.63/8.94 Types: 30.63/8.94 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.94 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 isList, active, U42, isNeList, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 isList < active 30.63/8.95 U42 < active 30.63/8.95 isNeList < active 30.63/8.95 U52 < active 30.63/8.95 U72 < active 30.63/8.95 isPal < active 30.63/8.95 U11 < active 30.63/8.95 U21 < active 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 isList < proper 30.63/8.95 U42 < proper 30.63/8.95 isNeList < proper 30.63/8.95 U52 < proper 30.63/8.95 U72 < proper 30.63/8.95 isPal < proper 30.63/8.95 U11 < proper 30.63/8.95 U21 < proper 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (21) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n2819_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (22) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 isNeList, active, U52, U72, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 isNeList < active 30.63/8.95 U52 < active 30.63/8.95 U72 < active 30.63/8.95 isPal < active 30.63/8.95 U11 < active 30.63/8.95 U21 < active 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 isNeList < proper 30.63/8.95 U52 < proper 30.63/8.95 U72 < proper 30.63/8.95 isPal < proper 30.63/8.95 U11 < proper 30.63/8.95 U21 < proper 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (23) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n3661_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (24) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U72, active, isPal, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U72 < active 30.63/8.95 isPal < active 30.63/8.95 U11 < active 30.63/8.95 U21 < active 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U72 < proper 30.63/8.95 isPal < proper 30.63/8.95 U11 < proper 30.63/8.95 U21 < proper 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (25) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n4589_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (26) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 isPal, active, U11, U21, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 isPal < active 30.63/8.95 U11 < active 30.63/8.95 U21 < active 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 isPal < proper 30.63/8.95 U11 < proper 30.63/8.95 U21 < proper 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (27) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n5639_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (28) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U21, active, U31, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U21 < active 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U21 < proper 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (29) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n6769_0, 1))), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) ->_R^Omega(1) 30.63/8.95 mark(U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (30) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U31, active, isQid, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U31 < active 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U31 < proper 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (31) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n9992_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (32) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 isQid, active, U41, U51, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 isQid < active 30.63/8.95 U41 < active 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 isQid < proper 30.63/8.95 U41 < proper 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (33) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n11405_0, 1))), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) ->_R^Omega(1) 30.63/8.95 mark(U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (34) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U51, active, U61, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U51 < active 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U51 < proper 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (35) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n15142_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n15142_0, 1))), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) ->_R^Omega(1) 30.63/8.95 mark(U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (36) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n15142_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U61, active, U71, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U61 < active 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U61 < proper 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (37) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n19185_0))) -> *4_0, rt in Omega(n19185_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n19185_0, 1)))) ->_R^Omega(1) 30.63/8.95 mark(U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n19185_0)))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (38) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n15142_0) 30.63/8.95 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n19185_0))) -> *4_0, rt in Omega(n19185_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U71, active, U81, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.95 U71 < active 30.63/8.95 U81 < active 30.63/8.95 isNePal < active 30.63/8.95 active < top 30.63/8.95 U71 < proper 30.63/8.95 U81 < proper 30.63/8.95 isNePal < proper 30.63/8.95 proper < top 30.63/8.95 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (39) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.95 Proved the following rewrite lemma: 30.63/8.95 U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n20967_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n20967_0) 30.63/8.95 30.63/8.95 Induction Base: 30.63/8.95 U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) 30.63/8.95 30.63/8.95 Induction Step: 30.63/8.95 U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n20967_0, 1))), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) ->_R^Omega(1) 30.63/8.95 mark(U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n20967_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b))) ->_IH 30.63/8.95 mark(*4_0) 30.63/8.95 30.63/8.95 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.95 ---------------------------------------- 30.63/8.95 30.63/8.95 (40) 30.63/8.95 Obligation: 30.63/8.95 TRS: 30.63/8.95 Rules: 30.63/8.95 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.95 active(__(X, nil)) -> mark(X) 30.63/8.95 active(__(nil, X)) -> mark(X) 30.63/8.95 active(U11(tt)) -> mark(tt) 30.63/8.95 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.95 active(U22(tt)) -> mark(tt) 30.63/8.95 active(U31(tt)) -> mark(tt) 30.63/8.95 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.95 active(U42(tt)) -> mark(tt) 30.63/8.95 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.95 active(U52(tt)) -> mark(tt) 30.63/8.95 active(U61(tt)) -> mark(tt) 30.63/8.95 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.95 active(U72(tt)) -> mark(tt) 30.63/8.95 active(U81(tt)) -> mark(tt) 30.63/8.95 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.95 active(isList(nil)) -> mark(tt) 30.63/8.95 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.95 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.95 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.95 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.95 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.95 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.95 active(isPal(nil)) -> mark(tt) 30.63/8.95 active(isQid(a)) -> mark(tt) 30.63/8.95 active(isQid(e)) -> mark(tt) 30.63/8.95 active(isQid(i)) -> mark(tt) 30.63/8.95 active(isQid(o)) -> mark(tt) 30.63/8.95 active(isQid(u)) -> mark(tt) 30.63/8.95 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.95 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.95 active(U11(X)) -> U11(active(X)) 30.63/8.95 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.95 active(U22(X)) -> U22(active(X)) 30.63/8.95 active(U31(X)) -> U31(active(X)) 30.63/8.95 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.95 active(U42(X)) -> U42(active(X)) 30.63/8.95 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.95 active(U52(X)) -> U52(active(X)) 30.63/8.95 active(U61(X)) -> U61(active(X)) 30.63/8.95 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.95 active(U72(X)) -> U72(active(X)) 30.63/8.95 active(U81(X)) -> U81(active(X)) 30.63/8.95 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.95 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.95 U11(mark(X)) -> mark(U11(X)) 30.63/8.95 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.95 U22(mark(X)) -> mark(U22(X)) 30.63/8.95 U31(mark(X)) -> mark(U31(X)) 30.63/8.95 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.95 U42(mark(X)) -> mark(U42(X)) 30.63/8.95 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.95 U52(mark(X)) -> mark(U52(X)) 30.63/8.95 U61(mark(X)) -> mark(U61(X)) 30.63/8.95 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.95 U72(mark(X)) -> mark(U72(X)) 30.63/8.95 U81(mark(X)) -> mark(U81(X)) 30.63/8.95 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.95 proper(nil) -> ok(nil) 30.63/8.95 proper(U11(X)) -> U11(proper(X)) 30.63/8.95 proper(tt) -> ok(tt) 30.63/8.95 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.95 proper(U22(X)) -> U22(proper(X)) 30.63/8.95 proper(isList(X)) -> isList(proper(X)) 30.63/8.95 proper(U31(X)) -> U31(proper(X)) 30.63/8.95 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.95 proper(U42(X)) -> U42(proper(X)) 30.63/8.95 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.95 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.95 proper(U52(X)) -> U52(proper(X)) 30.63/8.95 proper(U61(X)) -> U61(proper(X)) 30.63/8.95 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.95 proper(U72(X)) -> U72(proper(X)) 30.63/8.95 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.95 proper(U81(X)) -> U81(proper(X)) 30.63/8.95 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.95 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.95 proper(a) -> ok(a) 30.63/8.95 proper(e) -> ok(e) 30.63/8.95 proper(i) -> ok(i) 30.63/8.95 proper(o) -> ok(o) 30.63/8.95 proper(u) -> ok(u) 30.63/8.95 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.95 U11(ok(X)) -> ok(U11(X)) 30.63/8.95 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.95 U22(ok(X)) -> ok(U22(X)) 30.63/8.95 isList(ok(X)) -> ok(isList(X)) 30.63/8.95 U31(ok(X)) -> ok(U31(X)) 30.63/8.95 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.95 U42(ok(X)) -> ok(U42(X)) 30.63/8.95 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.95 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.95 U52(ok(X)) -> ok(U52(X)) 30.63/8.95 U61(ok(X)) -> ok(U61(X)) 30.63/8.95 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.95 U72(ok(X)) -> ok(U72(X)) 30.63/8.95 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.95 U81(ok(X)) -> ok(U81(X)) 30.63/8.95 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.95 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.95 top(mark(X)) -> top(proper(X)) 30.63/8.95 top(ok(X)) -> top(active(X)) 30.63/8.95 30.63/8.95 Types: 30.63/8.95 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.95 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 hole_top2_0 :: top 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.95 30.63/8.95 30.63/8.95 Lemmas: 30.63/8.95 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.95 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.95 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.95 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.95 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.95 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.95 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.95 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.95 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.95 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n15142_0) 30.63/8.95 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n19185_0))) -> *4_0, rt in Omega(n19185_0) 30.63/8.95 U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n20967_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n20967_0) 30.63/8.95 30.63/8.95 30.63/8.95 Generator Equations: 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.95 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.95 30.63/8.95 30.63/8.95 The following defined symbols remain to be analysed: 30.63/8.95 U81, active, isNePal, proper, top 30.63/8.95 30.63/8.95 They will be analysed ascendingly in the following order: 30.63/8.96 U81 < active 30.63/8.96 isNePal < active 30.63/8.96 active < top 30.63/8.96 U81 < proper 30.63/8.96 isNePal < proper 30.63/8.96 proper < top 30.63/8.96 30.63/8.96 ---------------------------------------- 30.63/8.96 30.63/8.96 (41) RewriteLemmaProof (LOWER BOUND(ID)) 30.63/8.96 Proved the following rewrite lemma: 30.63/8.96 U81(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n25524_0))) -> *4_0, rt in Omega(n25524_0) 30.63/8.96 30.63/8.96 Induction Base: 30.63/8.96 U81(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, 0))) 30.63/8.96 30.63/8.96 Induction Step: 30.63/8.96 U81(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, +(n25524_0, 1)))) ->_R^Omega(1) 30.63/8.96 mark(U81(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n25524_0)))) ->_IH 30.63/8.96 mark(*4_0) 30.63/8.96 30.63/8.96 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.63/8.96 ---------------------------------------- 30.63/8.96 30.63/8.96 (42) 30.63/8.96 Obligation: 30.63/8.96 TRS: 30.63/8.96 Rules: 30.63/8.96 active(__(__(X, Y), Z)) -> mark(__(X, __(Y, Z))) 30.63/8.96 active(__(X, nil)) -> mark(X) 30.63/8.96 active(__(nil, X)) -> mark(X) 30.63/8.96 active(U11(tt)) -> mark(tt) 30.63/8.96 active(U21(tt, V2)) -> mark(U22(isList(V2))) 30.63/8.96 active(U22(tt)) -> mark(tt) 30.63/8.96 active(U31(tt)) -> mark(tt) 30.63/8.96 active(U41(tt, V2)) -> mark(U42(isNeList(V2))) 30.63/8.96 active(U42(tt)) -> mark(tt) 30.63/8.96 active(U51(tt, V2)) -> mark(U52(isList(V2))) 30.63/8.96 active(U52(tt)) -> mark(tt) 30.63/8.96 active(U61(tt)) -> mark(tt) 30.63/8.96 active(U71(tt, P)) -> mark(U72(isPal(P))) 30.63/8.96 active(U72(tt)) -> mark(tt) 30.63/8.96 active(U81(tt)) -> mark(tt) 30.63/8.96 active(isList(V)) -> mark(U11(isNeList(V))) 30.63/8.96 active(isList(nil)) -> mark(tt) 30.63/8.96 active(isList(__(V1, V2))) -> mark(U21(isList(V1), V2)) 30.63/8.96 active(isNeList(V)) -> mark(U31(isQid(V))) 30.63/8.96 active(isNeList(__(V1, V2))) -> mark(U41(isList(V1), V2)) 30.63/8.96 active(isNeList(__(V1, V2))) -> mark(U51(isNeList(V1), V2)) 30.63/8.96 active(isNePal(V)) -> mark(U61(isQid(V))) 30.63/8.96 active(isNePal(__(I, __(P, I)))) -> mark(U71(isQid(I), P)) 30.63/8.96 active(isPal(V)) -> mark(U81(isNePal(V))) 30.63/8.96 active(isPal(nil)) -> mark(tt) 30.63/8.96 active(isQid(a)) -> mark(tt) 30.63/8.96 active(isQid(e)) -> mark(tt) 30.63/8.96 active(isQid(i)) -> mark(tt) 30.63/8.96 active(isQid(o)) -> mark(tt) 30.63/8.96 active(isQid(u)) -> mark(tt) 30.63/8.96 active(__(X1, X2)) -> __(active(X1), X2) 30.63/8.96 active(__(X1, X2)) -> __(X1, active(X2)) 30.63/8.96 active(U11(X)) -> U11(active(X)) 30.63/8.96 active(U21(X1, X2)) -> U21(active(X1), X2) 30.63/8.96 active(U22(X)) -> U22(active(X)) 30.63/8.96 active(U31(X)) -> U31(active(X)) 30.63/8.96 active(U41(X1, X2)) -> U41(active(X1), X2) 30.63/8.96 active(U42(X)) -> U42(active(X)) 30.63/8.96 active(U51(X1, X2)) -> U51(active(X1), X2) 30.63/8.96 active(U52(X)) -> U52(active(X)) 30.63/8.96 active(U61(X)) -> U61(active(X)) 30.63/8.96 active(U71(X1, X2)) -> U71(active(X1), X2) 30.63/8.96 active(U72(X)) -> U72(active(X)) 30.63/8.96 active(U81(X)) -> U81(active(X)) 30.63/8.96 __(mark(X1), X2) -> mark(__(X1, X2)) 30.63/8.96 __(X1, mark(X2)) -> mark(__(X1, X2)) 30.63/8.96 U11(mark(X)) -> mark(U11(X)) 30.63/8.96 U21(mark(X1), X2) -> mark(U21(X1, X2)) 30.63/8.96 U22(mark(X)) -> mark(U22(X)) 30.63/8.96 U31(mark(X)) -> mark(U31(X)) 30.63/8.96 U41(mark(X1), X2) -> mark(U41(X1, X2)) 30.63/8.96 U42(mark(X)) -> mark(U42(X)) 30.63/8.96 U51(mark(X1), X2) -> mark(U51(X1, X2)) 30.63/8.96 U52(mark(X)) -> mark(U52(X)) 30.63/8.96 U61(mark(X)) -> mark(U61(X)) 30.63/8.96 U71(mark(X1), X2) -> mark(U71(X1, X2)) 30.63/8.96 U72(mark(X)) -> mark(U72(X)) 30.63/8.96 U81(mark(X)) -> mark(U81(X)) 30.63/8.96 proper(__(X1, X2)) -> __(proper(X1), proper(X2)) 30.63/8.96 proper(nil) -> ok(nil) 30.63/8.96 proper(U11(X)) -> U11(proper(X)) 30.63/8.96 proper(tt) -> ok(tt) 30.63/8.96 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 30.63/8.96 proper(U22(X)) -> U22(proper(X)) 30.63/8.96 proper(isList(X)) -> isList(proper(X)) 30.63/8.96 proper(U31(X)) -> U31(proper(X)) 30.63/8.96 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 30.63/8.96 proper(U42(X)) -> U42(proper(X)) 30.63/8.96 proper(isNeList(X)) -> isNeList(proper(X)) 30.63/8.96 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 30.63/8.96 proper(U52(X)) -> U52(proper(X)) 30.63/8.96 proper(U61(X)) -> U61(proper(X)) 30.63/8.96 proper(U71(X1, X2)) -> U71(proper(X1), proper(X2)) 30.63/8.96 proper(U72(X)) -> U72(proper(X)) 30.63/8.96 proper(isPal(X)) -> isPal(proper(X)) 30.63/8.96 proper(U81(X)) -> U81(proper(X)) 30.63/8.96 proper(isQid(X)) -> isQid(proper(X)) 30.63/8.96 proper(isNePal(X)) -> isNePal(proper(X)) 30.63/8.96 proper(a) -> ok(a) 30.63/8.96 proper(e) -> ok(e) 30.63/8.96 proper(i) -> ok(i) 30.63/8.96 proper(o) -> ok(o) 30.63/8.96 proper(u) -> ok(u) 30.63/8.96 __(ok(X1), ok(X2)) -> ok(__(X1, X2)) 30.63/8.96 U11(ok(X)) -> ok(U11(X)) 30.63/8.96 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 30.63/8.96 U22(ok(X)) -> ok(U22(X)) 30.63/8.96 isList(ok(X)) -> ok(isList(X)) 30.63/8.96 U31(ok(X)) -> ok(U31(X)) 30.63/8.96 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 30.63/8.96 U42(ok(X)) -> ok(U42(X)) 30.63/8.96 isNeList(ok(X)) -> ok(isNeList(X)) 30.63/8.96 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 30.63/8.96 U52(ok(X)) -> ok(U52(X)) 30.63/8.96 U61(ok(X)) -> ok(U61(X)) 30.63/8.96 U71(ok(X1), ok(X2)) -> ok(U71(X1, X2)) 30.63/8.96 U72(ok(X)) -> ok(U72(X)) 30.63/8.96 isPal(ok(X)) -> ok(isPal(X)) 30.63/8.96 U81(ok(X)) -> ok(U81(X)) 30.63/8.96 isQid(ok(X)) -> ok(isQid(X)) 30.63/8.96 isNePal(ok(X)) -> ok(isNePal(X)) 30.63/8.96 top(mark(X)) -> top(proper(X)) 30.63/8.96 top(ok(X)) -> top(active(X)) 30.63/8.96 30.63/8.96 Types: 30.63/8.96 active :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 __ :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 mark :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 nil :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U11 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 tt :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U21 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U22 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 isList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U31 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U41 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U42 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 isNeList :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U51 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U52 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U61 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U71 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U72 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 isPal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 U81 :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 isQid :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 isNePal :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 a :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 e :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 i :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 o :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 u :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 proper :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 ok :: mark:nil:tt:a:e:i:o:u:ok -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 top :: mark:nil:tt:a:e:i:o:u:ok -> top 30.63/8.96 hole_mark:nil:tt:a:e:i:o:u:ok1_0 :: mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 hole_top2_0 :: top 30.63/8.96 gen_mark:nil:tt:a:e:i:o:u:ok3_0 :: Nat -> mark:nil:tt:a:e:i:o:u:ok 30.63/8.96 30.63/8.96 30.63/8.96 Lemmas: 30.63/8.96 __(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n5_0) 30.63/8.96 U22(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2081_0))) -> *4_0, rt in Omega(n2081_0) 30.63/8.96 U42(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n2819_0))) -> *4_0, rt in Omega(n2819_0) 30.63/8.96 U52(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n3661_0))) -> *4_0, rt in Omega(n3661_0) 30.63/8.96 U72(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n4589_0))) -> *4_0, rt in Omega(n4589_0) 30.63/8.96 U11(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n5639_0))) -> *4_0, rt in Omega(n5639_0) 30.63/8.96 U21(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n6769_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n6769_0) 30.63/8.96 U31(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n9992_0))) -> *4_0, rt in Omega(n9992_0) 30.63/8.96 U41(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n11405_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n11405_0) 30.63/8.96 U51(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n15142_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n15142_0) 30.63/8.96 U61(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n19185_0))) -> *4_0, rt in Omega(n19185_0) 30.63/8.96 U71(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n20967_0)), gen_mark:nil:tt:a:e:i:o:u:ok3_0(b)) -> *4_0, rt in Omega(n20967_0) 30.63/8.96 U81(gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(1, n25524_0))) -> *4_0, rt in Omega(n25524_0) 30.63/8.96 30.63/8.96 30.63/8.96 Generator Equations: 30.63/8.96 gen_mark:nil:tt:a:e:i:o:u:ok3_0(0) <=> nil 30.63/8.96 gen_mark:nil:tt:a:e:i:o:u:ok3_0(+(x, 1)) <=> mark(gen_mark:nil:tt:a:e:i:o:u:ok3_0(x)) 30.63/8.96 30.63/8.96 30.63/8.96 The following defined symbols remain to be analysed: 30.63/8.96 isNePal, active, proper, top 30.63/8.96 30.63/8.96 They will be analysed ascendingly in the following order: 30.63/8.96 isNePal < active 30.63/8.96 active < top 30.63/8.96 isNePal < proper 30.63/8.96 proper < top 33.15/11.42 EOF