36.12/10.89 WORST_CASE(Omega(n^1), O(n^1)) 36.12/10.91 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 36.12/10.91 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 36.12/10.91 36.12/10.91 36.12/10.91 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 36.12/10.91 36.12/10.91 (0) CpxTRS 36.12/10.91 (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] 36.12/10.91 (2) CpxTRS 36.12/10.91 (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] 36.12/10.91 (4) CpxTRS 36.12/10.91 (5) CpxTrsMatchBoundsTAProof [FINISHED, 525 ms] 36.12/10.91 (6) BOUNDS(1, n^1) 36.12/10.91 (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 36.12/10.91 (8) CpxTRS 36.12/10.91 (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 36.12/10.91 (10) typed CpxTrs 36.12/10.91 (11) OrderProof [LOWER BOUND(ID), 0 ms] 36.12/10.91 (12) typed CpxTrs 36.12/10.91 (13) RewriteLemmaProof [LOWER BOUND(ID), 463 ms] 36.12/10.91 (14) BEST 36.12/10.91 (15) proven lower bound 36.12/10.91 (16) LowerBoundPropagationProof [FINISHED, 0 ms] 36.12/10.91 (17) BOUNDS(n^1, INF) 36.12/10.91 (18) typed CpxTrs 36.12/10.91 (19) RewriteLemmaProof [LOWER BOUND(ID), 115 ms] 36.12/10.91 (20) typed CpxTrs 36.12/10.91 (21) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] 36.12/10.91 (22) typed CpxTrs 36.12/10.91 (23) RewriteLemmaProof [LOWER BOUND(ID), 102 ms] 36.12/10.91 (24) typed CpxTrs 36.12/10.91 (25) RewriteLemmaProof [LOWER BOUND(ID), 104 ms] 36.12/10.91 (26) typed CpxTrs 36.12/10.91 (27) RewriteLemmaProof [LOWER BOUND(ID), 94 ms] 36.12/10.91 (28) typed CpxTrs 36.12/10.91 (29) RewriteLemmaProof [LOWER BOUND(ID), 123 ms] 36.12/10.91 (30) typed CpxTrs 36.12/10.91 (31) RewriteLemmaProof [LOWER BOUND(ID), 126 ms] 36.12/10.91 (32) typed CpxTrs 36.12/10.91 (33) RewriteLemmaProof [LOWER BOUND(ID), 179 ms] 36.12/10.91 (34) typed CpxTrs 36.12/10.91 (35) RewriteLemmaProof [LOWER BOUND(ID), 113 ms] 36.12/10.91 (36) typed CpxTrs 36.12/10.91 (37) RewriteLemmaProof [LOWER BOUND(ID), 174 ms] 36.12/10.91 (38) typed CpxTrs 36.12/10.91 (39) RewriteLemmaProof [LOWER BOUND(ID), 157 ms] 36.12/10.91 (40) typed CpxTrs 36.12/10.91 (41) RewriteLemmaProof [LOWER BOUND(ID), 141 ms] 36.12/10.91 (42) typed CpxTrs 36.12/10.91 (43) RewriteLemmaProof [LOWER BOUND(ID), 144 ms] 36.12/10.91 (44) typed CpxTrs 36.12/10.91 (45) RewriteLemmaProof [LOWER BOUND(ID), 96 ms] 36.12/10.91 (46) typed CpxTrs 36.12/10.91 (47) RewriteLemmaProof [LOWER BOUND(ID), 143 ms] 36.12/10.91 (48) typed CpxTrs 36.12/10.91 36.12/10.91 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (0) 36.12/10.91 Obligation: 36.12/10.91 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 36.12/10.91 36.12/10.91 36.12/10.91 The TRS R consists of the following rules: 36.12/10.91 36.12/10.91 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.91 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.91 active(U13(tt)) -> mark(tt) 36.12/10.91 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.91 active(U22(tt)) -> mark(tt) 36.12/10.91 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.91 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.91 active(U33(tt)) -> mark(tt) 36.12/10.91 active(U41(tt, N)) -> mark(N) 36.12/10.91 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.91 active(U61(tt)) -> mark(0) 36.12/10.91 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.91 active(and(tt, X)) -> mark(X) 36.12/10.91 active(isNat(0)) -> mark(tt) 36.12/10.91 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.91 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.91 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.91 active(isNatKind(0)) -> mark(tt) 36.12/10.91 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.91 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.91 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.91 active(plus(N, 0)) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.91 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.91 active(x(N, 0)) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.91 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.91 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.91 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.91 active(U13(X)) -> U13(active(X)) 36.12/10.91 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.91 active(U22(X)) -> U22(active(X)) 36.12/10.91 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.91 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.91 active(U33(X)) -> U33(active(X)) 36.12/10.91 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.91 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.91 active(s(X)) -> s(active(X)) 36.12/10.91 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.91 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.91 active(U61(X)) -> U61(active(X)) 36.12/10.91 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.91 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.91 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.91 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.91 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.91 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.91 U13(mark(X)) -> mark(U13(X)) 36.12/10.91 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.91 U22(mark(X)) -> mark(U22(X)) 36.12/10.91 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.91 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.91 U33(mark(X)) -> mark(U33(X)) 36.12/10.91 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.91 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.91 s(mark(X)) -> mark(s(X)) 36.12/10.91 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.91 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.91 U61(mark(X)) -> mark(U61(X)) 36.12/10.91 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.91 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.91 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.91 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.91 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(tt) -> ok(tt) 36.12/10.91 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.91 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.91 proper(U13(X)) -> U13(proper(X)) 36.12/10.91 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.91 proper(U22(X)) -> U22(proper(X)) 36.12/10.91 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.91 proper(U33(X)) -> U33(proper(X)) 36.12/10.91 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.91 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(s(X)) -> s(proper(X)) 36.12/10.91 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.91 proper(U61(X)) -> U61(proper(X)) 36.12/10.91 proper(0) -> ok(0) 36.12/10.91 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.91 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.91 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.91 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.91 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.91 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.91 U13(ok(X)) -> ok(U13(X)) 36.12/10.91 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.91 U22(ok(X)) -> ok(U22(X)) 36.12/10.91 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.91 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.91 U33(ok(X)) -> ok(U33(X)) 36.12/10.91 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.91 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.91 s(ok(X)) -> ok(s(X)) 36.12/10.91 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.91 U61(ok(X)) -> ok(U61(X)) 36.12/10.91 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.91 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.91 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.91 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.91 top(mark(X)) -> top(proper(X)) 36.12/10.91 top(ok(X)) -> top(active(X)) 36.12/10.91 36.12/10.91 S is empty. 36.12/10.91 Rewrite Strategy: FULL 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) 36.12/10.91 The following defined symbols can occur below the 0th argument of top: proper, active 36.12/10.91 The following defined symbols can occur below the 0th argument of proper: proper, active 36.12/10.91 The following defined symbols can occur below the 0th argument of active: proper, active 36.12/10.91 36.12/10.91 Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: 36.12/10.91 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.91 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.91 active(U13(tt)) -> mark(tt) 36.12/10.91 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.91 active(U22(tt)) -> mark(tt) 36.12/10.91 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.91 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.91 active(U33(tt)) -> mark(tt) 36.12/10.91 active(U41(tt, N)) -> mark(N) 36.12/10.91 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.91 active(U61(tt)) -> mark(0) 36.12/10.91 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.91 active(and(tt, X)) -> mark(X) 36.12/10.91 active(isNat(0)) -> mark(tt) 36.12/10.91 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.91 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.91 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.91 active(isNatKind(0)) -> mark(tt) 36.12/10.91 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.91 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.91 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.91 active(plus(N, 0)) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.91 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.91 active(x(N, 0)) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.91 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.91 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.91 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.91 active(U13(X)) -> U13(active(X)) 36.12/10.91 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.91 active(U22(X)) -> U22(active(X)) 36.12/10.91 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.91 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.91 active(U33(X)) -> U33(active(X)) 36.12/10.91 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.91 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.91 active(s(X)) -> s(active(X)) 36.12/10.91 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.91 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.91 active(U61(X)) -> U61(active(X)) 36.12/10.91 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.91 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.91 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.91 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.91 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.91 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.91 proper(U13(X)) -> U13(proper(X)) 36.12/10.91 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.91 proper(U22(X)) -> U22(proper(X)) 36.12/10.91 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.91 proper(U33(X)) -> U33(proper(X)) 36.12/10.91 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.91 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(s(X)) -> s(proper(X)) 36.12/10.91 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.91 proper(U61(X)) -> U61(proper(X)) 36.12/10.91 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.91 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.91 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.91 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.91 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (2) 36.12/10.91 Obligation: 36.12/10.91 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 36.12/10.91 36.12/10.91 36.12/10.91 The TRS R consists of the following rules: 36.12/10.91 36.12/10.91 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.91 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.91 U13(mark(X)) -> mark(U13(X)) 36.12/10.91 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.91 U22(mark(X)) -> mark(U22(X)) 36.12/10.91 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.91 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.91 U33(mark(X)) -> mark(U33(X)) 36.12/10.91 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.91 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.91 s(mark(X)) -> mark(s(X)) 36.12/10.91 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.91 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.91 U61(mark(X)) -> mark(U61(X)) 36.12/10.91 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.91 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.91 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.91 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.91 proper(tt) -> ok(tt) 36.12/10.91 proper(0) -> ok(0) 36.12/10.91 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.91 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.91 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.91 U13(ok(X)) -> ok(U13(X)) 36.12/10.91 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.91 U22(ok(X)) -> ok(U22(X)) 36.12/10.91 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.91 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.91 U33(ok(X)) -> ok(U33(X)) 36.12/10.91 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.91 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.91 s(ok(X)) -> ok(s(X)) 36.12/10.91 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.91 U61(ok(X)) -> ok(U61(X)) 36.12/10.91 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.91 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.91 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.91 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.91 top(mark(X)) -> top(proper(X)) 36.12/10.91 top(ok(X)) -> top(active(X)) 36.12/10.91 36.12/10.91 S is empty. 36.12/10.91 Rewrite Strategy: FULL 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (3) RelTrsToTrsProof (UPPER BOUND(ID)) 36.12/10.91 transformed relative TRS to TRS 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (4) 36.12/10.91 Obligation: 36.12/10.91 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 36.12/10.91 36.12/10.91 36.12/10.91 The TRS R consists of the following rules: 36.12/10.91 36.12/10.91 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.91 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.91 U13(mark(X)) -> mark(U13(X)) 36.12/10.91 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.91 U22(mark(X)) -> mark(U22(X)) 36.12/10.91 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.91 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.91 U33(mark(X)) -> mark(U33(X)) 36.12/10.91 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.91 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.91 s(mark(X)) -> mark(s(X)) 36.12/10.91 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.91 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.91 U61(mark(X)) -> mark(U61(X)) 36.12/10.91 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.91 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.91 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.91 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.91 proper(tt) -> ok(tt) 36.12/10.91 proper(0) -> ok(0) 36.12/10.91 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.91 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.91 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.91 U13(ok(X)) -> ok(U13(X)) 36.12/10.91 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.91 U22(ok(X)) -> ok(U22(X)) 36.12/10.91 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.91 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.91 U33(ok(X)) -> ok(U33(X)) 36.12/10.91 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.91 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.91 s(ok(X)) -> ok(s(X)) 36.12/10.91 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.91 U61(ok(X)) -> ok(U61(X)) 36.12/10.91 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.91 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.91 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.91 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.91 top(mark(X)) -> top(proper(X)) 36.12/10.91 top(ok(X)) -> top(active(X)) 36.12/10.91 36.12/10.91 S is empty. 36.12/10.91 Rewrite Strategy: FULL 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (5) CpxTrsMatchBoundsTAProof (FINISHED) 36.12/10.91 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. 36.12/10.91 36.12/10.91 The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: 36.12/10.91 final states : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 36.12/10.91 transitions: 36.12/10.91 mark0(0) -> 0 36.12/10.91 tt0() -> 0 36.12/10.91 ok0(0) -> 0 36.12/10.91 00() -> 0 36.12/10.91 active0(0) -> 0 36.12/10.91 U110(0, 0, 0) -> 1 36.12/10.91 U120(0, 0) -> 2 36.12/10.91 U130(0) -> 3 36.12/10.91 U210(0, 0) -> 4 36.12/10.91 U220(0) -> 5 36.12/10.91 U310(0, 0, 0) -> 6 36.12/10.91 U320(0, 0) -> 7 36.12/10.91 U330(0) -> 8 36.12/10.91 U410(0, 0) -> 9 36.12/10.91 U510(0, 0, 0) -> 10 36.12/10.91 s0(0) -> 11 36.12/10.91 plus0(0, 0) -> 12 36.12/10.91 U610(0) -> 13 36.12/10.91 U710(0, 0, 0) -> 14 36.12/10.91 x0(0, 0) -> 15 36.12/10.91 and0(0, 0) -> 16 36.12/10.91 proper0(0) -> 17 36.12/10.91 isNat0(0) -> 18 36.12/10.91 isNatKind0(0) -> 19 36.12/10.91 top0(0) -> 20 36.12/10.91 U111(0, 0, 0) -> 21 36.12/10.91 mark1(21) -> 1 36.12/10.91 U121(0, 0) -> 22 36.12/10.91 mark1(22) -> 2 36.12/10.91 U131(0) -> 23 36.12/10.91 mark1(23) -> 3 36.12/10.91 U211(0, 0) -> 24 36.12/10.91 mark1(24) -> 4 36.12/10.91 U221(0) -> 25 36.12/10.91 mark1(25) -> 5 36.12/10.91 U311(0, 0, 0) -> 26 36.12/10.91 mark1(26) -> 6 36.12/10.91 U321(0, 0) -> 27 36.12/10.91 mark1(27) -> 7 36.12/10.91 U331(0) -> 28 36.12/10.91 mark1(28) -> 8 36.12/10.91 U411(0, 0) -> 29 36.12/10.91 mark1(29) -> 9 36.12/10.91 U511(0, 0, 0) -> 30 36.12/10.91 mark1(30) -> 10 36.12/10.91 s1(0) -> 31 36.12/10.91 mark1(31) -> 11 36.12/10.91 plus1(0, 0) -> 32 36.12/10.91 mark1(32) -> 12 36.12/10.91 U611(0) -> 33 36.12/10.91 mark1(33) -> 13 36.12/10.91 U711(0, 0, 0) -> 34 36.12/10.91 mark1(34) -> 14 36.12/10.91 x1(0, 0) -> 35 36.12/10.91 mark1(35) -> 15 36.12/10.91 and1(0, 0) -> 36 36.12/10.91 mark1(36) -> 16 36.12/10.91 tt1() -> 37 36.12/10.91 ok1(37) -> 17 36.12/10.91 01() -> 38 36.12/10.91 ok1(38) -> 17 36.12/10.91 U111(0, 0, 0) -> 39 36.12/10.91 ok1(39) -> 1 36.12/10.91 U121(0, 0) -> 40 36.12/10.91 ok1(40) -> 2 36.12/10.91 isNat1(0) -> 41 36.12/10.91 ok1(41) -> 18 36.12/10.91 U131(0) -> 42 36.12/10.91 ok1(42) -> 3 36.12/10.91 U211(0, 0) -> 43 36.12/10.91 ok1(43) -> 4 36.12/10.91 U221(0) -> 44 36.12/10.91 ok1(44) -> 5 36.12/10.91 U311(0, 0, 0) -> 45 36.12/10.91 ok1(45) -> 6 36.12/10.91 U321(0, 0) -> 46 36.12/10.91 ok1(46) -> 7 36.12/10.91 U331(0) -> 47 36.12/10.91 ok1(47) -> 8 36.12/10.91 U411(0, 0) -> 48 36.12/10.91 ok1(48) -> 9 36.12/10.91 U511(0, 0, 0) -> 49 36.12/10.91 ok1(49) -> 10 36.12/10.91 s1(0) -> 50 36.12/10.91 ok1(50) -> 11 36.12/10.91 plus1(0, 0) -> 51 36.12/10.91 ok1(51) -> 12 36.12/10.91 U611(0) -> 52 36.12/10.91 ok1(52) -> 13 36.12/10.91 U711(0, 0, 0) -> 53 36.12/10.91 ok1(53) -> 14 36.12/10.91 x1(0, 0) -> 54 36.12/10.91 ok1(54) -> 15 36.12/10.91 and1(0, 0) -> 55 36.12/10.91 ok1(55) -> 16 36.12/10.91 isNatKind1(0) -> 56 36.12/10.91 ok1(56) -> 19 36.12/10.91 proper1(0) -> 57 36.12/10.91 top1(57) -> 20 36.12/10.91 active1(0) -> 58 36.12/10.91 top1(58) -> 20 36.12/10.91 mark1(21) -> 21 36.12/10.91 mark1(21) -> 39 36.12/10.91 mark1(22) -> 22 36.12/10.91 mark1(22) -> 40 36.12/10.91 mark1(23) -> 23 36.12/10.91 mark1(23) -> 42 36.12/10.91 mark1(24) -> 24 36.12/10.91 mark1(24) -> 43 36.12/10.91 mark1(25) -> 25 36.12/10.91 mark1(25) -> 44 36.12/10.91 mark1(26) -> 26 36.12/10.91 mark1(26) -> 45 36.12/10.91 mark1(27) -> 27 36.12/10.91 mark1(27) -> 46 36.12/10.91 mark1(28) -> 28 36.12/10.91 mark1(28) -> 47 36.12/10.91 mark1(29) -> 29 36.12/10.91 mark1(29) -> 48 36.12/10.91 mark1(30) -> 30 36.12/10.91 mark1(30) -> 49 36.12/10.91 mark1(31) -> 31 36.12/10.91 mark1(31) -> 50 36.12/10.91 mark1(32) -> 32 36.12/10.91 mark1(32) -> 51 36.12/10.91 mark1(33) -> 33 36.12/10.91 mark1(33) -> 52 36.12/10.91 mark1(34) -> 34 36.12/10.91 mark1(34) -> 53 36.12/10.91 mark1(35) -> 35 36.12/10.91 mark1(35) -> 54 36.12/10.91 mark1(36) -> 36 36.12/10.91 mark1(36) -> 55 36.12/10.91 ok1(37) -> 57 36.12/10.91 ok1(38) -> 57 36.12/10.91 ok1(39) -> 21 36.12/10.91 ok1(39) -> 39 36.12/10.91 ok1(40) -> 22 36.12/10.91 ok1(40) -> 40 36.12/10.91 ok1(41) -> 41 36.12/10.91 ok1(42) -> 23 36.12/10.91 ok1(42) -> 42 36.12/10.91 ok1(43) -> 24 36.12/10.91 ok1(43) -> 43 36.12/10.91 ok1(44) -> 25 36.12/10.91 ok1(44) -> 44 36.12/10.91 ok1(45) -> 26 36.12/10.91 ok1(45) -> 45 36.12/10.91 ok1(46) -> 27 36.12/10.91 ok1(46) -> 46 36.12/10.91 ok1(47) -> 28 36.12/10.91 ok1(47) -> 47 36.12/10.91 ok1(48) -> 29 36.12/10.91 ok1(48) -> 48 36.12/10.91 ok1(49) -> 30 36.12/10.91 ok1(49) -> 49 36.12/10.91 ok1(50) -> 31 36.12/10.91 ok1(50) -> 50 36.12/10.91 ok1(51) -> 32 36.12/10.91 ok1(51) -> 51 36.12/10.91 ok1(52) -> 33 36.12/10.91 ok1(52) -> 52 36.12/10.91 ok1(53) -> 34 36.12/10.91 ok1(53) -> 53 36.12/10.91 ok1(54) -> 35 36.12/10.91 ok1(54) -> 54 36.12/10.91 ok1(55) -> 36 36.12/10.91 ok1(55) -> 55 36.12/10.91 ok1(56) -> 56 36.12/10.91 active2(37) -> 59 36.12/10.91 top2(59) -> 20 36.12/10.91 active2(38) -> 59 36.12/10.91 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (6) 36.12/10.91 BOUNDS(1, n^1) 36.12/10.91 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (7) RenamingProof (BOTH BOUNDS(ID, ID)) 36.12/10.91 Renamed function symbols to avoid clashes with predefined symbol. 36.12/10.91 ---------------------------------------- 36.12/10.91 36.12/10.91 (8) 36.12/10.91 Obligation: 36.12/10.91 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 36.12/10.91 36.12/10.91 36.12/10.91 The TRS R consists of the following rules: 36.12/10.91 36.12/10.91 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.91 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.91 active(U13(tt)) -> mark(tt) 36.12/10.91 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.91 active(U22(tt)) -> mark(tt) 36.12/10.91 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.91 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.91 active(U33(tt)) -> mark(tt) 36.12/10.91 active(U41(tt, N)) -> mark(N) 36.12/10.91 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.91 active(U61(tt)) -> mark(0') 36.12/10.91 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.91 active(and(tt, X)) -> mark(X) 36.12/10.91 active(isNat(0')) -> mark(tt) 36.12/10.91 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.91 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.91 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 S is empty. 36.12/10.92 Rewrite Strategy: FULL 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 36.12/10.92 Infered types. 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (10) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (11) OrderProof (LOWER BOUND(ID)) 36.12/10.92 Heuristically decided to analyse the following defined symbols: 36.12/10.92 active, U12, isNat, U13, U22, U32, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U12 < active 36.12/10.92 isNat < active 36.12/10.92 U13 < active 36.12/10.92 U22 < active 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U12 < proper 36.12/10.92 isNat < proper 36.12/10.92 U13 < proper 36.12/10.92 U22 < proper 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (12) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 U12, active, isNat, U13, U22, U32, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U12 < active 36.12/10.92 isNat < active 36.12/10.92 U13 < active 36.12/10.92 U22 < active 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U12 < proper 36.12/10.92 isNat < proper 36.12/10.92 U13 < proper 36.12/10.92 U22 < proper 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (13) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, +(n5_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.12/10.92 mark(U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (14) 36.12/10.92 Complex Obligation (BEST) 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (15) 36.12/10.92 Obligation: 36.12/10.92 Proved the lower bound n^1 for the following obligation: 36.12/10.92 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 U12, active, isNat, U13, U22, U32, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U12 < active 36.12/10.92 isNat < active 36.12/10.92 U13 < active 36.12/10.92 U22 < active 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U12 < proper 36.12/10.92 isNat < proper 36.12/10.92 U13 < proper 36.12/10.92 U22 < proper 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (16) LowerBoundPropagationProof (FINISHED) 36.12/10.92 Propagated lower bound. 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (17) 36.12/10.92 BOUNDS(n^1, INF) 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (18) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Lemmas: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 isNat, active, U13, U22, U32, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 isNat < active 36.12/10.92 U13 < active 36.12/10.92 U22 < active 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 isNat < proper 36.12/10.92 U13 < proper 36.12/10.92 U22 < proper 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (19) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, 0))) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, +(n1863_0, 1)))) ->_R^Omega(1) 36.12/10.92 mark(U13(gen_tt:mark:0':ok3_0(+(1, n1863_0)))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (20) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Lemmas: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 U22, active, U32, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U22 < active 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U22 < proper 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (21) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, 0))) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, +(n2583_0, 1)))) ->_R^Omega(1) 36.12/10.92 mark(U22(gen_tt:mark:0':ok3_0(+(1, n2583_0)))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (22) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Lemmas: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 U32, active, U33, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U32 < active 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U32 < proper 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (23) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 U32(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 U32(gen_tt:mark:0':ok3_0(+(1, +(n3404_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.12/10.92 mark(U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (24) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Lemmas: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.12/10.92 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 U33, active, s, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 U33 < active 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 U33 < proper 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (25) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 U33(gen_tt:mark:0':ok3_0(+(1, 0))) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 U33(gen_tt:mark:0':ok3_0(+(1, +(n5975_0, 1)))) ->_R^Omega(1) 36.12/10.92 mark(U33(gen_tt:mark:0':ok3_0(+(1, n5975_0)))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (26) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.12/10.92 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.12/10.92 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.12/10.92 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.12/10.92 active(U12(X1, X2)) -> U12(active(X1), X2) 36.12/10.92 active(U13(X)) -> U13(active(X)) 36.12/10.92 active(U21(X1, X2)) -> U21(active(X1), X2) 36.12/10.92 active(U22(X)) -> U22(active(X)) 36.12/10.92 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.12/10.92 active(U32(X1, X2)) -> U32(active(X1), X2) 36.12/10.92 active(U33(X)) -> U33(active(X)) 36.12/10.92 active(U41(X1, X2)) -> U41(active(X1), X2) 36.12/10.92 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.12/10.92 active(s(X)) -> s(active(X)) 36.12/10.92 active(plus(X1, X2)) -> plus(active(X1), X2) 36.12/10.92 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.12/10.92 active(U61(X)) -> U61(active(X)) 36.12/10.92 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.12/10.92 active(x(X1, X2)) -> x(active(X1), X2) 36.12/10.92 active(x(X1, X2)) -> x(X1, active(X2)) 36.12/10.92 active(and(X1, X2)) -> and(active(X1), X2) 36.12/10.92 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.12/10.92 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.12/10.92 U13(mark(X)) -> mark(U13(X)) 36.12/10.92 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.12/10.92 U22(mark(X)) -> mark(U22(X)) 36.12/10.92 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.12/10.92 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.12/10.92 U33(mark(X)) -> mark(U33(X)) 36.12/10.92 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.12/10.92 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.12/10.92 s(mark(X)) -> mark(s(X)) 36.12/10.92 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.12/10.92 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.12/10.92 U61(mark(X)) -> mark(U61(X)) 36.12/10.92 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.12/10.92 x(mark(X1), X2) -> mark(x(X1, X2)) 36.12/10.92 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.12/10.92 and(mark(X1), X2) -> mark(and(X1, X2)) 36.12/10.92 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(tt) -> ok(tt) 36.12/10.92 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.12/10.92 proper(isNat(X)) -> isNat(proper(X)) 36.12/10.92 proper(U13(X)) -> U13(proper(X)) 36.12/10.92 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.12/10.92 proper(U22(X)) -> U22(proper(X)) 36.12/10.92 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.12/10.92 proper(U33(X)) -> U33(proper(X)) 36.12/10.92 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.12/10.92 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(s(X)) -> s(proper(X)) 36.12/10.92 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.12/10.92 proper(U61(X)) -> U61(proper(X)) 36.12/10.92 proper(0') -> ok(0') 36.12/10.92 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.12/10.92 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.12/10.92 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.12/10.92 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.12/10.92 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.12/10.92 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.12/10.92 isNat(ok(X)) -> ok(isNat(X)) 36.12/10.92 U13(ok(X)) -> ok(U13(X)) 36.12/10.92 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.12/10.92 U22(ok(X)) -> ok(U22(X)) 36.12/10.92 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.12/10.92 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.12/10.92 U33(ok(X)) -> ok(U33(X)) 36.12/10.92 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.12/10.92 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.12/10.92 s(ok(X)) -> ok(s(X)) 36.12/10.92 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.12/10.92 U61(ok(X)) -> ok(U61(X)) 36.12/10.92 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.12/10.92 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.12/10.92 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.12/10.92 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.12/10.92 top(mark(X)) -> top(proper(X)) 36.12/10.92 top(ok(X)) -> top(active(X)) 36.12/10.92 36.12/10.92 Types: 36.12/10.92 active :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 tt :: tt:mark:0':ok 36.12/10.92 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 s :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 0' :: tt:mark:0':ok 36.12/10.92 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.12/10.92 top :: tt:mark:0':ok -> top 36.12/10.92 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.12/10.92 hole_top2_0 :: top 36.12/10.92 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.12/10.92 36.12/10.92 36.12/10.92 Lemmas: 36.12/10.92 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.12/10.92 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.12/10.92 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.12/10.92 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.12/10.92 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.12/10.92 36.12/10.92 36.12/10.92 Generator Equations: 36.12/10.92 gen_tt:mark:0':ok3_0(0) <=> tt 36.12/10.92 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.12/10.92 36.12/10.92 36.12/10.92 The following defined symbols remain to be analysed: 36.12/10.92 s, active, plus, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.12/10.92 36.12/10.92 They will be analysed ascendingly in the following order: 36.12/10.92 s < active 36.12/10.92 plus < active 36.12/10.92 x < active 36.12/10.92 U11 < active 36.12/10.92 and < active 36.12/10.92 isNatKind < active 36.12/10.92 U21 < active 36.12/10.92 U31 < active 36.12/10.92 U41 < active 36.12/10.92 U51 < active 36.12/10.92 U61 < active 36.12/10.92 U71 < active 36.12/10.92 active < top 36.12/10.92 s < proper 36.12/10.92 plus < proper 36.12/10.92 x < proper 36.12/10.92 U11 < proper 36.12/10.92 and < proper 36.12/10.92 isNatKind < proper 36.12/10.92 U21 < proper 36.12/10.92 U31 < proper 36.12/10.92 U41 < proper 36.12/10.92 U51 < proper 36.12/10.92 U61 < proper 36.12/10.92 U71 < proper 36.12/10.92 proper < top 36.12/10.92 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (27) RewriteLemmaProof (LOWER BOUND(ID)) 36.12/10.92 Proved the following rewrite lemma: 36.12/10.92 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.12/10.92 36.12/10.92 Induction Base: 36.12/10.92 s(gen_tt:mark:0':ok3_0(+(1, 0))) 36.12/10.92 36.12/10.92 Induction Step: 36.12/10.92 s(gen_tt:mark:0':ok3_0(+(1, +(n7047_0, 1)))) ->_R^Omega(1) 36.12/10.92 mark(s(gen_tt:mark:0':ok3_0(+(1, n7047_0)))) ->_IH 36.12/10.92 mark(*4_0) 36.12/10.92 36.12/10.92 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.12/10.92 ---------------------------------------- 36.12/10.92 36.12/10.92 (28) 36.12/10.92 Obligation: 36.12/10.92 TRS: 36.12/10.92 Rules: 36.12/10.92 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.12/10.92 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.12/10.92 active(U13(tt)) -> mark(tt) 36.12/10.92 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.12/10.92 active(U22(tt)) -> mark(tt) 36.12/10.92 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.12/10.92 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.12/10.92 active(U33(tt)) -> mark(tt) 36.12/10.92 active(U41(tt, N)) -> mark(N) 36.12/10.92 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.12/10.92 active(U61(tt)) -> mark(0') 36.12/10.92 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.12/10.92 active(and(tt, X)) -> mark(X) 36.12/10.92 active(isNat(0')) -> mark(tt) 36.12/10.92 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.12/10.92 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.12/10.92 active(isNatKind(0')) -> mark(tt) 36.12/10.92 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.12/10.92 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.12/10.92 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 plus, active, x, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 plus < active 36.34/10.93 x < active 36.34/10.93 U11 < active 36.34/10.93 and < active 36.34/10.93 isNatKind < active 36.34/10.93 U21 < active 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 plus < proper 36.34/10.93 x < proper 36.34/10.93 U11 < proper 36.34/10.93 and < proper 36.34/10.93 isNatKind < proper 36.34/10.93 U21 < proper 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (29) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, +(n8220_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.34/10.93 mark(plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (30) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.93 active(and(tt, X)) -> mark(X) 36.34/10.93 active(isNat(0')) -> mark(tt) 36.34/10.93 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.93 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNatKind(0')) -> mark(tt) 36.34/10.93 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.93 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 x, active, U11, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 x < active 36.34/10.93 U11 < active 36.34/10.93 and < active 36.34/10.93 isNatKind < active 36.34/10.93 U21 < active 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 x < proper 36.34/10.93 U11 < proper 36.34/10.93 and < proper 36.34/10.93 isNatKind < proper 36.34/10.93 U21 < proper 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (31) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, +(n11712_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.34/10.93 mark(x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (32) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.93 active(and(tt, X)) -> mark(X) 36.34/10.93 active(isNat(0')) -> mark(tt) 36.34/10.93 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.93 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNatKind(0')) -> mark(tt) 36.34/10.93 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.93 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 U11, active, and, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 U11 < active 36.34/10.93 and < active 36.34/10.93 isNatKind < active 36.34/10.93 U21 < active 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 U11 < proper 36.34/10.93 and < proper 36.34/10.93 isNatKind < proper 36.34/10.93 U21 < proper 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (33) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, +(n15510_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 36.34/10.93 mark(U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (34) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.93 active(and(tt, X)) -> mark(X) 36.34/10.93 active(isNat(0')) -> mark(tt) 36.34/10.93 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.93 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNatKind(0')) -> mark(tt) 36.34/10.93 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.93 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 and, active, isNatKind, U21, U31, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 and < active 36.34/10.93 isNatKind < active 36.34/10.93 U21 < active 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 and < proper 36.34/10.93 isNatKind < proper 36.34/10.93 U21 < proper 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (35) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 and(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 and(gen_tt:mark:0':ok3_0(+(1, +(n21746_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.34/10.93 mark(and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (36) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.93 active(and(tt, X)) -> mark(X) 36.34/10.93 active(isNat(0')) -> mark(tt) 36.34/10.93 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.93 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNatKind(0')) -> mark(tt) 36.34/10.93 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.93 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.93 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 isNatKind, active, U21, U31, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 isNatKind < active 36.34/10.93 U21 < active 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 isNatKind < proper 36.34/10.93 U21 < proper 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (37) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 U21(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 U21(gen_tt:mark:0':ok3_0(+(1, +(n26103_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.34/10.93 mark(U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (38) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.93 active(and(tt, X)) -> mark(X) 36.34/10.93 active(isNat(0')) -> mark(tt) 36.34/10.93 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.93 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.93 active(isNatKind(0')) -> mark(tt) 36.34/10.93 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.93 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.93 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.93 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.93 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.93 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.93 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.93 active(U13(X)) -> U13(active(X)) 36.34/10.93 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.93 active(U22(X)) -> U22(active(X)) 36.34/10.93 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.93 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.93 active(U33(X)) -> U33(active(X)) 36.34/10.93 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.93 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.93 active(s(X)) -> s(active(X)) 36.34/10.93 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.93 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.93 active(U61(X)) -> U61(active(X)) 36.34/10.93 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.93 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.93 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.93 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.93 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.93 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.93 U13(mark(X)) -> mark(U13(X)) 36.34/10.93 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.93 U22(mark(X)) -> mark(U22(X)) 36.34/10.93 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.93 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.93 U33(mark(X)) -> mark(U33(X)) 36.34/10.93 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.93 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.93 s(mark(X)) -> mark(s(X)) 36.34/10.93 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.93 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.93 U61(mark(X)) -> mark(U61(X)) 36.34/10.93 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.93 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.93 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.93 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.93 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(tt) -> ok(tt) 36.34/10.93 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.93 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.93 proper(U13(X)) -> U13(proper(X)) 36.34/10.93 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.93 proper(U22(X)) -> U22(proper(X)) 36.34/10.93 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.93 proper(U33(X)) -> U33(proper(X)) 36.34/10.93 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.93 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(s(X)) -> s(proper(X)) 36.34/10.93 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.93 proper(U61(X)) -> U61(proper(X)) 36.34/10.93 proper(0') -> ok(0') 36.34/10.93 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.93 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.93 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.93 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.93 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.93 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.93 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.93 U13(ok(X)) -> ok(U13(X)) 36.34/10.93 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.93 U22(ok(X)) -> ok(U22(X)) 36.34/10.93 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.93 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.93 U33(ok(X)) -> ok(U33(X)) 36.34/10.93 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.93 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.93 s(ok(X)) -> ok(s(X)) 36.34/10.93 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.93 U61(ok(X)) -> ok(U61(X)) 36.34/10.93 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.93 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.93 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.93 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.93 top(mark(X)) -> top(proper(X)) 36.34/10.93 top(ok(X)) -> top(active(X)) 36.34/10.93 36.34/10.93 Types: 36.34/10.93 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 tt :: tt:mark:0':ok 36.34/10.93 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 0' :: tt:mark:0':ok 36.34/10.93 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.93 top :: tt:mark:0':ok -> top 36.34/10.93 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.93 hole_top2_0 :: top 36.34/10.93 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.93 36.34/10.93 36.34/10.93 Lemmas: 36.34/10.93 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.93 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.93 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.93 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.93 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.93 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.93 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.93 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.93 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.93 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.93 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.93 36.34/10.93 36.34/10.93 Generator Equations: 36.34/10.93 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.93 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.93 36.34/10.93 36.34/10.93 The following defined symbols remain to be analysed: 36.34/10.93 U31, active, U41, U51, U61, U71, proper, top 36.34/10.93 36.34/10.93 They will be analysed ascendingly in the following order: 36.34/10.93 U31 < active 36.34/10.93 U41 < active 36.34/10.93 U51 < active 36.34/10.93 U61 < active 36.34/10.93 U71 < active 36.34/10.93 active < top 36.34/10.93 U31 < proper 36.34/10.93 U41 < proper 36.34/10.93 U51 < proper 36.34/10.93 U61 < proper 36.34/10.93 U71 < proper 36.34/10.93 proper < top 36.34/10.93 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (39) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.93 Proved the following rewrite lemma: 36.34/10.93 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.93 36.34/10.93 Induction Base: 36.34/10.93 U31(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 36.34/10.93 36.34/10.93 Induction Step: 36.34/10.93 U31(gen_tt:mark:0':ok3_0(+(1, +(n30718_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 36.34/10.93 mark(U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 36.34/10.93 mark(*4_0) 36.34/10.93 36.34/10.93 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.93 ---------------------------------------- 36.34/10.93 36.34/10.93 (40) 36.34/10.93 Obligation: 36.34/10.93 TRS: 36.34/10.93 Rules: 36.34/10.93 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.93 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.93 active(U13(tt)) -> mark(tt) 36.34/10.93 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.93 active(U22(tt)) -> mark(tt) 36.34/10.93 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.93 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.93 active(U33(tt)) -> mark(tt) 36.34/10.93 active(U41(tt, N)) -> mark(N) 36.34/10.93 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.93 active(U61(tt)) -> mark(0') 36.34/10.93 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.94 active(and(tt, X)) -> mark(X) 36.34/10.94 active(isNat(0')) -> mark(tt) 36.34/10.94 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.94 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNatKind(0')) -> mark(tt) 36.34/10.94 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.94 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.94 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.94 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.94 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.94 active(U13(X)) -> U13(active(X)) 36.34/10.94 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.94 active(U22(X)) -> U22(active(X)) 36.34/10.94 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.94 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.94 active(U33(X)) -> U33(active(X)) 36.34/10.94 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.94 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.94 active(s(X)) -> s(active(X)) 36.34/10.94 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.94 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.94 active(U61(X)) -> U61(active(X)) 36.34/10.94 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.94 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.94 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.94 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.94 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.94 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.94 U13(mark(X)) -> mark(U13(X)) 36.34/10.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.94 U22(mark(X)) -> mark(U22(X)) 36.34/10.94 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.94 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.94 U33(mark(X)) -> mark(U33(X)) 36.34/10.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.94 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.94 s(mark(X)) -> mark(s(X)) 36.34/10.94 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.94 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.94 U61(mark(X)) -> mark(U61(X)) 36.34/10.94 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.94 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.94 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.94 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.94 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(tt) -> ok(tt) 36.34/10.94 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.94 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.94 proper(U13(X)) -> U13(proper(X)) 36.34/10.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.94 proper(U22(X)) -> U22(proper(X)) 36.34/10.94 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.94 proper(U33(X)) -> U33(proper(X)) 36.34/10.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.94 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(s(X)) -> s(proper(X)) 36.34/10.94 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.94 proper(U61(X)) -> U61(proper(X)) 36.34/10.94 proper(0') -> ok(0') 36.34/10.94 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.94 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.94 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.94 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.94 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.94 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.94 U13(ok(X)) -> ok(U13(X)) 36.34/10.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.94 U22(ok(X)) -> ok(U22(X)) 36.34/10.94 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.94 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.94 U33(ok(X)) -> ok(U33(X)) 36.34/10.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.94 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.94 s(ok(X)) -> ok(s(X)) 36.34/10.94 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.94 U61(ok(X)) -> ok(U61(X)) 36.34/10.94 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.94 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.94 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.94 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.94 top(mark(X)) -> top(proper(X)) 36.34/10.94 top(ok(X)) -> top(active(X)) 36.34/10.94 36.34/10.94 Types: 36.34/10.94 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 tt :: tt:mark:0':ok 36.34/10.94 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 0' :: tt:mark:0':ok 36.34/10.94 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 top :: tt:mark:0':ok -> top 36.34/10.94 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.94 hole_top2_0 :: top 36.34/10.94 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.94 36.34/10.94 36.34/10.94 Lemmas: 36.34/10.94 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.94 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.94 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.94 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.94 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.94 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.94 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.94 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.94 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.94 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.94 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.94 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.94 36.34/10.94 36.34/10.94 Generator Equations: 36.34/10.94 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.94 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.94 36.34/10.94 36.34/10.94 The following defined symbols remain to be analysed: 36.34/10.94 U41, active, U51, U61, U71, proper, top 36.34/10.94 36.34/10.94 They will be analysed ascendingly in the following order: 36.34/10.94 U41 < active 36.34/10.94 U51 < active 36.34/10.94 U61 < active 36.34/10.94 U71 < active 36.34/10.94 active < top 36.34/10.94 U41 < proper 36.34/10.94 U51 < proper 36.34/10.94 U61 < proper 36.34/10.94 U71 < proper 36.34/10.94 proper < top 36.34/10.94 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (41) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.94 Proved the following rewrite lemma: 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n38487_0) 36.34/10.94 36.34/10.94 Induction Base: 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 36.34/10.94 36.34/10.94 Induction Step: 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, +(n38487_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 36.34/10.94 mark(U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 36.34/10.94 mark(*4_0) 36.34/10.94 36.34/10.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (42) 36.34/10.94 Obligation: 36.34/10.94 TRS: 36.34/10.94 Rules: 36.34/10.94 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.94 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.94 active(U13(tt)) -> mark(tt) 36.34/10.94 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.94 active(U22(tt)) -> mark(tt) 36.34/10.94 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.94 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.94 active(U33(tt)) -> mark(tt) 36.34/10.94 active(U41(tt, N)) -> mark(N) 36.34/10.94 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.94 active(U61(tt)) -> mark(0') 36.34/10.94 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.94 active(and(tt, X)) -> mark(X) 36.34/10.94 active(isNat(0')) -> mark(tt) 36.34/10.94 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.94 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNatKind(0')) -> mark(tt) 36.34/10.94 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.94 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.94 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.94 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.94 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.94 active(U13(X)) -> U13(active(X)) 36.34/10.94 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.94 active(U22(X)) -> U22(active(X)) 36.34/10.94 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.94 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.94 active(U33(X)) -> U33(active(X)) 36.34/10.94 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.94 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.94 active(s(X)) -> s(active(X)) 36.34/10.94 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.94 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.94 active(U61(X)) -> U61(active(X)) 36.34/10.94 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.94 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.94 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.94 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.94 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.94 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.94 U13(mark(X)) -> mark(U13(X)) 36.34/10.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.94 U22(mark(X)) -> mark(U22(X)) 36.34/10.94 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.94 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.94 U33(mark(X)) -> mark(U33(X)) 36.34/10.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.94 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.94 s(mark(X)) -> mark(s(X)) 36.34/10.94 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.94 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.94 U61(mark(X)) -> mark(U61(X)) 36.34/10.94 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.94 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.94 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.94 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.94 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(tt) -> ok(tt) 36.34/10.94 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.94 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.94 proper(U13(X)) -> U13(proper(X)) 36.34/10.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.94 proper(U22(X)) -> U22(proper(X)) 36.34/10.94 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.94 proper(U33(X)) -> U33(proper(X)) 36.34/10.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.94 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(s(X)) -> s(proper(X)) 36.34/10.94 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.94 proper(U61(X)) -> U61(proper(X)) 36.34/10.94 proper(0') -> ok(0') 36.34/10.94 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.94 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.94 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.94 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.94 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.94 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.94 U13(ok(X)) -> ok(U13(X)) 36.34/10.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.94 U22(ok(X)) -> ok(U22(X)) 36.34/10.94 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.94 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.94 U33(ok(X)) -> ok(U33(X)) 36.34/10.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.94 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.94 s(ok(X)) -> ok(s(X)) 36.34/10.94 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.94 U61(ok(X)) -> ok(U61(X)) 36.34/10.94 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.94 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.94 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.94 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.94 top(mark(X)) -> top(proper(X)) 36.34/10.94 top(ok(X)) -> top(active(X)) 36.34/10.94 36.34/10.94 Types: 36.34/10.94 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 tt :: tt:mark:0':ok 36.34/10.94 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 0' :: tt:mark:0':ok 36.34/10.94 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 top :: tt:mark:0':ok -> top 36.34/10.94 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.94 hole_top2_0 :: top 36.34/10.94 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.94 36.34/10.94 36.34/10.94 Lemmas: 36.34/10.94 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.94 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.94 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.94 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.94 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.94 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.94 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.94 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.94 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.94 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.94 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.94 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n38487_0) 36.34/10.94 36.34/10.94 36.34/10.94 Generator Equations: 36.34/10.94 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.94 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.94 36.34/10.94 36.34/10.94 The following defined symbols remain to be analysed: 36.34/10.94 U51, active, U61, U71, proper, top 36.34/10.94 36.34/10.94 They will be analysed ascendingly in the following order: 36.34/10.94 U51 < active 36.34/10.94 U61 < active 36.34/10.94 U71 < active 36.34/10.94 active < top 36.34/10.94 U51 < proper 36.34/10.94 U61 < proper 36.34/10.94 U71 < proper 36.34/10.94 proper < top 36.34/10.94 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (43) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.94 Proved the following rewrite lemma: 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, n43812_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n43812_0) 36.34/10.94 36.34/10.94 Induction Base: 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 36.34/10.94 36.34/10.94 Induction Step: 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, +(n43812_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 36.34/10.94 mark(U51(gen_tt:mark:0':ok3_0(+(1, n43812_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 36.34/10.94 mark(*4_0) 36.34/10.94 36.34/10.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (44) 36.34/10.94 Obligation: 36.34/10.94 TRS: 36.34/10.94 Rules: 36.34/10.94 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.94 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.94 active(U13(tt)) -> mark(tt) 36.34/10.94 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.94 active(U22(tt)) -> mark(tt) 36.34/10.94 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.94 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.94 active(U33(tt)) -> mark(tt) 36.34/10.94 active(U41(tt, N)) -> mark(N) 36.34/10.94 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.94 active(U61(tt)) -> mark(0') 36.34/10.94 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.94 active(and(tt, X)) -> mark(X) 36.34/10.94 active(isNat(0')) -> mark(tt) 36.34/10.94 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.94 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNatKind(0')) -> mark(tt) 36.34/10.94 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.94 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.94 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.94 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.94 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.94 active(U13(X)) -> U13(active(X)) 36.34/10.94 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.94 active(U22(X)) -> U22(active(X)) 36.34/10.94 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.94 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.94 active(U33(X)) -> U33(active(X)) 36.34/10.94 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.94 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.94 active(s(X)) -> s(active(X)) 36.34/10.94 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.94 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.94 active(U61(X)) -> U61(active(X)) 36.34/10.94 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.94 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.94 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.94 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.94 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.94 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.94 U13(mark(X)) -> mark(U13(X)) 36.34/10.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.94 U22(mark(X)) -> mark(U22(X)) 36.34/10.94 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.94 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.94 U33(mark(X)) -> mark(U33(X)) 36.34/10.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.94 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.94 s(mark(X)) -> mark(s(X)) 36.34/10.94 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.94 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.94 U61(mark(X)) -> mark(U61(X)) 36.34/10.94 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.94 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.94 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.94 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.94 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(tt) -> ok(tt) 36.34/10.94 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.94 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.94 proper(U13(X)) -> U13(proper(X)) 36.34/10.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.94 proper(U22(X)) -> U22(proper(X)) 36.34/10.94 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.94 proper(U33(X)) -> U33(proper(X)) 36.34/10.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.94 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(s(X)) -> s(proper(X)) 36.34/10.94 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.94 proper(U61(X)) -> U61(proper(X)) 36.34/10.94 proper(0') -> ok(0') 36.34/10.94 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.94 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.94 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.94 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.94 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.94 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.94 U13(ok(X)) -> ok(U13(X)) 36.34/10.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.94 U22(ok(X)) -> ok(U22(X)) 36.34/10.94 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.94 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.94 U33(ok(X)) -> ok(U33(X)) 36.34/10.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.94 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.94 s(ok(X)) -> ok(s(X)) 36.34/10.94 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.94 U61(ok(X)) -> ok(U61(X)) 36.34/10.94 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.94 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.94 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.94 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.94 top(mark(X)) -> top(proper(X)) 36.34/10.94 top(ok(X)) -> top(active(X)) 36.34/10.94 36.34/10.94 Types: 36.34/10.94 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 tt :: tt:mark:0':ok 36.34/10.94 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 0' :: tt:mark:0':ok 36.34/10.94 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 top :: tt:mark:0':ok -> top 36.34/10.94 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.94 hole_top2_0 :: top 36.34/10.94 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.94 36.34/10.94 36.34/10.94 Lemmas: 36.34/10.94 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.94 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.94 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.94 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.94 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.94 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.94 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.94 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.94 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.94 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.94 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.94 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n38487_0) 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, n43812_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n43812_0) 36.34/10.94 36.34/10.94 36.34/10.94 Generator Equations: 36.34/10.94 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.94 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.94 36.34/10.94 36.34/10.94 The following defined symbols remain to be analysed: 36.34/10.94 U61, active, U71, proper, top 36.34/10.94 36.34/10.94 They will be analysed ascendingly in the following order: 36.34/10.94 U61 < active 36.34/10.94 U71 < active 36.34/10.94 active < top 36.34/10.94 U61 < proper 36.34/10.94 U71 < proper 36.34/10.94 proper < top 36.34/10.94 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (45) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.94 Proved the following rewrite lemma: 36.34/10.94 U61(gen_tt:mark:0':ok3_0(+(1, n52652_0))) -> *4_0, rt in Omega(n52652_0) 36.34/10.94 36.34/10.94 Induction Base: 36.34/10.94 U61(gen_tt:mark:0':ok3_0(+(1, 0))) 36.34/10.94 36.34/10.94 Induction Step: 36.34/10.94 U61(gen_tt:mark:0':ok3_0(+(1, +(n52652_0, 1)))) ->_R^Omega(1) 36.34/10.94 mark(U61(gen_tt:mark:0':ok3_0(+(1, n52652_0)))) ->_IH 36.34/10.94 mark(*4_0) 36.34/10.94 36.34/10.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (46) 36.34/10.94 Obligation: 36.34/10.94 TRS: 36.34/10.94 Rules: 36.34/10.94 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.94 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.94 active(U13(tt)) -> mark(tt) 36.34/10.94 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.94 active(U22(tt)) -> mark(tt) 36.34/10.94 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.94 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.94 active(U33(tt)) -> mark(tt) 36.34/10.94 active(U41(tt, N)) -> mark(N) 36.34/10.94 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.94 active(U61(tt)) -> mark(0') 36.34/10.94 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.94 active(and(tt, X)) -> mark(X) 36.34/10.94 active(isNat(0')) -> mark(tt) 36.34/10.94 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.94 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNatKind(0')) -> mark(tt) 36.34/10.94 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.94 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.94 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.94 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.94 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.94 active(U13(X)) -> U13(active(X)) 36.34/10.94 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.94 active(U22(X)) -> U22(active(X)) 36.34/10.94 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.94 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.94 active(U33(X)) -> U33(active(X)) 36.34/10.94 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.94 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.94 active(s(X)) -> s(active(X)) 36.34/10.94 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.94 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.94 active(U61(X)) -> U61(active(X)) 36.34/10.94 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.94 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.94 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.94 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.94 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.94 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.94 U13(mark(X)) -> mark(U13(X)) 36.34/10.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.94 U22(mark(X)) -> mark(U22(X)) 36.34/10.94 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.94 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.94 U33(mark(X)) -> mark(U33(X)) 36.34/10.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.94 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.94 s(mark(X)) -> mark(s(X)) 36.34/10.94 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.94 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.94 U61(mark(X)) -> mark(U61(X)) 36.34/10.94 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.94 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.94 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.94 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.94 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(tt) -> ok(tt) 36.34/10.94 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.94 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.94 proper(U13(X)) -> U13(proper(X)) 36.34/10.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.94 proper(U22(X)) -> U22(proper(X)) 36.34/10.94 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.94 proper(U33(X)) -> U33(proper(X)) 36.34/10.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.94 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(s(X)) -> s(proper(X)) 36.34/10.94 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.94 proper(U61(X)) -> U61(proper(X)) 36.34/10.94 proper(0') -> ok(0') 36.34/10.94 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.94 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.94 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.94 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.94 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.94 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.94 U13(ok(X)) -> ok(U13(X)) 36.34/10.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.94 U22(ok(X)) -> ok(U22(X)) 36.34/10.94 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.94 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.94 U33(ok(X)) -> ok(U33(X)) 36.34/10.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.94 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.94 s(ok(X)) -> ok(s(X)) 36.34/10.94 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.94 U61(ok(X)) -> ok(U61(X)) 36.34/10.94 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.94 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.94 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.94 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.94 top(mark(X)) -> top(proper(X)) 36.34/10.94 top(ok(X)) -> top(active(X)) 36.34/10.94 36.34/10.94 Types: 36.34/10.94 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 tt :: tt:mark:0':ok 36.34/10.94 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 0' :: tt:mark:0':ok 36.34/10.94 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 top :: tt:mark:0':ok -> top 36.34/10.94 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.94 hole_top2_0 :: top 36.34/10.94 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.94 36.34/10.94 36.34/10.94 Lemmas: 36.34/10.94 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.94 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.94 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.94 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.94 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.94 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.94 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.94 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.94 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.94 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.94 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.94 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n38487_0) 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, n43812_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n43812_0) 36.34/10.94 U61(gen_tt:mark:0':ok3_0(+(1, n52652_0))) -> *4_0, rt in Omega(n52652_0) 36.34/10.94 36.34/10.94 36.34/10.94 Generator Equations: 36.34/10.94 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.94 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.94 36.34/10.94 36.34/10.94 The following defined symbols remain to be analysed: 36.34/10.94 U71, active, proper, top 36.34/10.94 36.34/10.94 They will be analysed ascendingly in the following order: 36.34/10.94 U71 < active 36.34/10.94 active < top 36.34/10.94 U71 < proper 36.34/10.94 proper < top 36.34/10.94 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (47) RewriteLemmaProof (LOWER BOUND(ID)) 36.34/10.94 Proved the following rewrite lemma: 36.34/10.94 U71(gen_tt:mark:0':ok3_0(+(1, n55273_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n55273_0) 36.34/10.94 36.34/10.94 Induction Base: 36.34/10.94 U71(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 36.34/10.94 36.34/10.94 Induction Step: 36.34/10.94 U71(gen_tt:mark:0':ok3_0(+(1, +(n55273_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 36.34/10.94 mark(U71(gen_tt:mark:0':ok3_0(+(1, n55273_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 36.34/10.94 mark(*4_0) 36.34/10.94 36.34/10.94 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 36.34/10.94 ---------------------------------------- 36.34/10.94 36.34/10.94 (48) 36.34/10.94 Obligation: 36.34/10.94 TRS: 36.34/10.94 Rules: 36.34/10.94 active(U11(tt, V1, V2)) -> mark(U12(isNat(V1), V2)) 36.34/10.94 active(U12(tt, V2)) -> mark(U13(isNat(V2))) 36.34/10.94 active(U13(tt)) -> mark(tt) 36.34/10.94 active(U21(tt, V1)) -> mark(U22(isNat(V1))) 36.34/10.94 active(U22(tt)) -> mark(tt) 36.34/10.94 active(U31(tt, V1, V2)) -> mark(U32(isNat(V1), V2)) 36.34/10.94 active(U32(tt, V2)) -> mark(U33(isNat(V2))) 36.34/10.94 active(U33(tt)) -> mark(tt) 36.34/10.94 active(U41(tt, N)) -> mark(N) 36.34/10.94 active(U51(tt, M, N)) -> mark(s(plus(N, M))) 36.34/10.94 active(U61(tt)) -> mark(0') 36.34/10.94 active(U71(tt, M, N)) -> mark(plus(x(N, M), N)) 36.34/10.94 active(and(tt, X)) -> mark(X) 36.34/10.94 active(isNat(0')) -> mark(tt) 36.34/10.94 active(isNat(plus(V1, V2))) -> mark(U11(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 36.34/10.94 active(isNat(x(V1, V2))) -> mark(U31(and(isNatKind(V1), isNatKind(V2)), V1, V2)) 36.34/10.94 active(isNatKind(0')) -> mark(tt) 36.34/10.94 active(isNatKind(plus(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(isNatKind(s(V1))) -> mark(isNatKind(V1)) 36.34/10.94 active(isNatKind(x(V1, V2))) -> mark(and(isNatKind(V1), isNatKind(V2))) 36.34/10.94 active(plus(N, 0')) -> mark(U41(and(isNat(N), isNatKind(N)), N)) 36.34/10.94 active(plus(N, s(M))) -> mark(U51(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(x(N, 0')) -> mark(U61(and(isNat(N), isNatKind(N)))) 36.34/10.94 active(x(N, s(M))) -> mark(U71(and(and(isNat(M), isNatKind(M)), and(isNat(N), isNatKind(N))), M, N)) 36.34/10.94 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 36.34/10.94 active(U12(X1, X2)) -> U12(active(X1), X2) 36.34/10.94 active(U13(X)) -> U13(active(X)) 36.34/10.94 active(U21(X1, X2)) -> U21(active(X1), X2) 36.34/10.94 active(U22(X)) -> U22(active(X)) 36.34/10.94 active(U31(X1, X2, X3)) -> U31(active(X1), X2, X3) 36.34/10.94 active(U32(X1, X2)) -> U32(active(X1), X2) 36.34/10.94 active(U33(X)) -> U33(active(X)) 36.34/10.94 active(U41(X1, X2)) -> U41(active(X1), X2) 36.34/10.94 active(U51(X1, X2, X3)) -> U51(active(X1), X2, X3) 36.34/10.94 active(s(X)) -> s(active(X)) 36.34/10.94 active(plus(X1, X2)) -> plus(active(X1), X2) 36.34/10.94 active(plus(X1, X2)) -> plus(X1, active(X2)) 36.34/10.94 active(U61(X)) -> U61(active(X)) 36.34/10.94 active(U71(X1, X2, X3)) -> U71(active(X1), X2, X3) 36.34/10.94 active(x(X1, X2)) -> x(active(X1), X2) 36.34/10.94 active(x(X1, X2)) -> x(X1, active(X2)) 36.34/10.94 active(and(X1, X2)) -> and(active(X1), X2) 36.34/10.94 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 36.34/10.94 U12(mark(X1), X2) -> mark(U12(X1, X2)) 36.34/10.94 U13(mark(X)) -> mark(U13(X)) 36.34/10.94 U21(mark(X1), X2) -> mark(U21(X1, X2)) 36.34/10.94 U22(mark(X)) -> mark(U22(X)) 36.34/10.94 U31(mark(X1), X2, X3) -> mark(U31(X1, X2, X3)) 36.34/10.94 U32(mark(X1), X2) -> mark(U32(X1, X2)) 36.34/10.94 U33(mark(X)) -> mark(U33(X)) 36.34/10.94 U41(mark(X1), X2) -> mark(U41(X1, X2)) 36.34/10.94 U51(mark(X1), X2, X3) -> mark(U51(X1, X2, X3)) 36.34/10.94 s(mark(X)) -> mark(s(X)) 36.34/10.94 plus(mark(X1), X2) -> mark(plus(X1, X2)) 36.34/10.94 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 36.34/10.94 U61(mark(X)) -> mark(U61(X)) 36.34/10.94 U71(mark(X1), X2, X3) -> mark(U71(X1, X2, X3)) 36.34/10.94 x(mark(X1), X2) -> mark(x(X1, X2)) 36.34/10.94 x(X1, mark(X2)) -> mark(x(X1, X2)) 36.34/10.94 and(mark(X1), X2) -> mark(and(X1, X2)) 36.34/10.94 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(tt) -> ok(tt) 36.34/10.94 proper(U12(X1, X2)) -> U12(proper(X1), proper(X2)) 36.34/10.94 proper(isNat(X)) -> isNat(proper(X)) 36.34/10.94 proper(U13(X)) -> U13(proper(X)) 36.34/10.94 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 36.34/10.94 proper(U22(X)) -> U22(proper(X)) 36.34/10.94 proper(U31(X1, X2, X3)) -> U31(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(U32(X1, X2)) -> U32(proper(X1), proper(X2)) 36.34/10.94 proper(U33(X)) -> U33(proper(X)) 36.34/10.94 proper(U41(X1, X2)) -> U41(proper(X1), proper(X2)) 36.34/10.94 proper(U51(X1, X2, X3)) -> U51(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(s(X)) -> s(proper(X)) 36.34/10.94 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 36.34/10.94 proper(U61(X)) -> U61(proper(X)) 36.34/10.94 proper(0') -> ok(0') 36.34/10.94 proper(U71(X1, X2, X3)) -> U71(proper(X1), proper(X2), proper(X3)) 36.34/10.94 proper(x(X1, X2)) -> x(proper(X1), proper(X2)) 36.34/10.94 proper(and(X1, X2)) -> and(proper(X1), proper(X2)) 36.34/10.94 proper(isNatKind(X)) -> isNatKind(proper(X)) 36.34/10.94 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 36.34/10.94 U12(ok(X1), ok(X2)) -> ok(U12(X1, X2)) 36.34/10.94 isNat(ok(X)) -> ok(isNat(X)) 36.34/10.94 U13(ok(X)) -> ok(U13(X)) 36.34/10.94 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 36.34/10.94 U22(ok(X)) -> ok(U22(X)) 36.34/10.94 U31(ok(X1), ok(X2), ok(X3)) -> ok(U31(X1, X2, X3)) 36.34/10.94 U32(ok(X1), ok(X2)) -> ok(U32(X1, X2)) 36.34/10.94 U33(ok(X)) -> ok(U33(X)) 36.34/10.94 U41(ok(X1), ok(X2)) -> ok(U41(X1, X2)) 36.34/10.94 U51(ok(X1), ok(X2), ok(X3)) -> ok(U51(X1, X2, X3)) 36.34/10.94 s(ok(X)) -> ok(s(X)) 36.34/10.94 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 36.34/10.94 U61(ok(X)) -> ok(U61(X)) 36.34/10.94 U71(ok(X1), ok(X2), ok(X3)) -> ok(U71(X1, X2, X3)) 36.34/10.94 x(ok(X1), ok(X2)) -> ok(x(X1, X2)) 36.34/10.94 and(ok(X1), ok(X2)) -> ok(and(X1, X2)) 36.34/10.94 isNatKind(ok(X)) -> ok(isNatKind(X)) 36.34/10.94 top(mark(X)) -> top(proper(X)) 36.34/10.94 top(ok(X)) -> top(active(X)) 36.34/10.94 36.34/10.94 Types: 36.34/10.94 active :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 tt :: tt:mark:0':ok 36.34/10.94 mark :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNat :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U13 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U22 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U32 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U33 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U41 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 s :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 U61 :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 0' :: tt:mark:0':ok 36.34/10.94 U71 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 x :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 and :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 proper :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 ok :: tt:mark:0':ok -> tt:mark:0':ok 36.34/10.94 top :: tt:mark:0':ok -> top 36.34/10.94 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 36.34/10.94 hole_top2_0 :: top 36.34/10.94 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 36.34/10.94 36.34/10.94 36.34/10.94 Lemmas: 36.34/10.94 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n5_0) 36.34/10.94 U13(gen_tt:mark:0':ok3_0(+(1, n1863_0))) -> *4_0, rt in Omega(n1863_0) 36.34/10.94 U22(gen_tt:mark:0':ok3_0(+(1, n2583_0))) -> *4_0, rt in Omega(n2583_0) 36.34/10.94 U32(gen_tt:mark:0':ok3_0(+(1, n3404_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n3404_0) 36.34/10.94 U33(gen_tt:mark:0':ok3_0(+(1, n5975_0))) -> *4_0, rt in Omega(n5975_0) 36.34/10.94 s(gen_tt:mark:0':ok3_0(+(1, n7047_0))) -> *4_0, rt in Omega(n7047_0) 36.34/10.94 plus(gen_tt:mark:0':ok3_0(+(1, n8220_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n8220_0) 36.34/10.94 x(gen_tt:mark:0':ok3_0(+(1, n11712_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n11712_0) 36.34/10.94 U11(gen_tt:mark:0':ok3_0(+(1, n15510_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n15510_0) 36.34/10.94 and(gen_tt:mark:0':ok3_0(+(1, n21746_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n21746_0) 36.34/10.94 U21(gen_tt:mark:0':ok3_0(+(1, n26103_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n26103_0) 36.34/10.94 U31(gen_tt:mark:0':ok3_0(+(1, n30718_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n30718_0) 36.34/10.94 U41(gen_tt:mark:0':ok3_0(+(1, n38487_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n38487_0) 36.34/10.94 U51(gen_tt:mark:0':ok3_0(+(1, n43812_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n43812_0) 36.34/10.94 U61(gen_tt:mark:0':ok3_0(+(1, n52652_0))) -> *4_0, rt in Omega(n52652_0) 36.34/10.94 U71(gen_tt:mark:0':ok3_0(+(1, n55273_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n55273_0) 36.34/10.94 36.34/10.94 36.34/10.94 Generator Equations: 36.34/10.94 gen_tt:mark:0':ok3_0(0) <=> tt 36.34/10.94 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 36.34/10.94 36.34/10.94 36.34/10.94 The following defined symbols remain to be analysed: 36.34/10.94 active, proper, top 36.34/10.94 36.34/10.94 They will be analysed ascendingly in the following order: 36.34/10.94 active < top 36.34/10.94 proper < top 36.41/11.00 EOF