34.79/10.06 WORST_CASE(Omega(n^1), O(n^1)) 34.79/10.08 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 34.79/10.08 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 34.79/10.08 34.79/10.08 34.79/10.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 34.79/10.08 34.79/10.08 (0) CpxTRS 34.79/10.08 (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] 34.79/10.08 (2) CpxTRS 34.79/10.08 (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] 34.79/10.08 (4) CpxTRS 34.79/10.08 (5) CpxTrsMatchBoundsTAProof [FINISHED, 568 ms] 34.79/10.08 (6) BOUNDS(1, n^1) 34.79/10.08 (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 34.79/10.08 (8) CpxTRS 34.79/10.08 (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 34.79/10.08 (10) typed CpxTrs 34.79/10.08 (11) OrderProof [LOWER BOUND(ID), 9 ms] 34.79/10.08 (12) typed CpxTrs 34.79/10.08 (13) RewriteLemmaProof [LOWER BOUND(ID), 496 ms] 34.79/10.08 (14) BEST 34.79/10.08 (15) proven lower bound 34.79/10.08 (16) LowerBoundPropagationProof [FINISHED, 0 ms] 34.79/10.08 (17) BOUNDS(n^1, INF) 34.79/10.08 (18) typed CpxTrs 34.79/10.08 (19) RewriteLemmaProof [LOWER BOUND(ID), 142 ms] 34.79/10.08 (20) typed CpxTrs 34.79/10.08 (21) RewriteLemmaProof [LOWER BOUND(ID), 161 ms] 34.79/10.08 (22) typed CpxTrs 34.79/10.08 (23) RewriteLemmaProof [LOWER BOUND(ID), 67 ms] 34.79/10.08 (24) typed CpxTrs 34.79/10.08 (25) RewriteLemmaProof [LOWER BOUND(ID), 95 ms] 34.79/10.08 (26) typed CpxTrs 34.79/10.08 (27) RewriteLemmaProof [LOWER BOUND(ID), 146 ms] 34.79/10.08 (28) typed CpxTrs 34.79/10.08 (29) RewriteLemmaProof [LOWER BOUND(ID), 65 ms] 34.79/10.08 (30) typed CpxTrs 34.79/10.08 (31) RewriteLemmaProof [LOWER BOUND(ID), 109 ms] 34.79/10.08 (32) typed CpxTrs 34.79/10.08 (33) RewriteLemmaProof [LOWER BOUND(ID), 114 ms] 34.79/10.08 (34) typed CpxTrs 34.79/10.08 (35) RewriteLemmaProof [LOWER BOUND(ID), 196 ms] 34.79/10.08 (36) typed CpxTrs 34.79/10.08 (37) RewriteLemmaProof [LOWER BOUND(ID), 195 ms] 34.79/10.08 (38) typed CpxTrs 34.79/10.08 (39) RewriteLemmaProof [LOWER BOUND(ID), 111 ms] 34.79/10.08 (40) typed CpxTrs 34.79/10.08 (41) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] 34.79/10.08 (42) typed CpxTrs 34.79/10.08 (43) RewriteLemmaProof [LOWER BOUND(ID), 119 ms] 34.79/10.08 (44) typed CpxTrs 34.79/10.08 (45) RewriteLemmaProof [LOWER BOUND(ID), 165 ms] 34.79/10.08 (46) typed CpxTrs 34.79/10.08 (47) RewriteLemmaProof [LOWER BOUND(ID), 64 ms] 34.79/10.08 (48) typed CpxTrs 34.79/10.08 (49) RewriteLemmaProof [LOWER BOUND(ID), 87 ms] 34.79/10.08 (50) typed CpxTrs 34.79/10.08 (51) RewriteLemmaProof [LOWER BOUND(ID), 15 ms] 34.79/10.08 (52) typed CpxTrs 34.79/10.08 (53) RewriteLemmaProof [LOWER BOUND(ID), 130 ms] 34.79/10.08 (54) typed CpxTrs 34.79/10.08 (55) RewriteLemmaProof [LOWER BOUND(ID), 153 ms] 34.79/10.08 (56) typed CpxTrs 34.79/10.08 34.79/10.08 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (0) 34.79/10.08 Obligation: 34.79/10.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 34.79/10.08 34.79/10.08 34.79/10.08 The TRS R consists of the following rules: 34.79/10.08 34.79/10.08 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 34.79/10.08 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 34.79/10.08 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 34.79/10.08 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 34.79/10.08 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 34.79/10.08 active(U16(tt)) -> mark(tt) 34.79/10.08 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 34.79/10.08 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 34.79/10.08 active(U23(tt)) -> mark(tt) 34.79/10.08 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 34.79/10.08 active(U32(tt)) -> mark(tt) 34.79/10.08 active(U41(tt)) -> mark(tt) 34.79/10.08 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 34.79/10.08 active(U52(tt, N)) -> mark(N) 34.79/10.08 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 34.79/10.08 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 34.79/10.08 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 34.79/10.08 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 34.79/10.08 active(isNat(0)) -> mark(tt) 34.79/10.08 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 34.79/10.08 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 34.79/10.08 active(isNatKind(0)) -> mark(tt) 34.79/10.08 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 34.79/10.08 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 34.79/10.08 active(plus(N, 0)) -> mark(U51(isNat(N), N)) 34.79/10.08 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 34.79/10.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 34.79/10.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 34.79/10.08 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 34.79/10.08 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 34.79/10.08 active(U15(X1, X2)) -> U15(active(X1), X2) 34.79/10.08 active(U16(X)) -> U16(active(X)) 34.79/10.08 active(U21(X1, X2)) -> U21(active(X1), X2) 34.79/10.08 active(U22(X1, X2)) -> U22(active(X1), X2) 34.79/10.08 active(U23(X)) -> U23(active(X)) 34.79/10.08 active(U31(X1, X2)) -> U31(active(X1), X2) 34.79/10.08 active(U32(X)) -> U32(active(X)) 34.79/10.08 active(U41(X)) -> U41(active(X)) 34.79/10.08 active(U51(X1, X2)) -> U51(active(X1), X2) 34.79/10.08 active(U52(X1, X2)) -> U52(active(X1), X2) 34.79/10.08 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 34.79/10.08 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 34.79/10.08 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 34.79/10.08 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 34.79/10.08 active(s(X)) -> s(active(X)) 34.79/10.08 active(plus(X1, X2)) -> plus(active(X1), X2) 34.79/10.08 active(plus(X1, X2)) -> plus(X1, active(X2)) 34.79/10.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 34.79/10.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 34.79/10.08 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 34.79/10.08 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 34.79/10.08 U15(mark(X1), X2) -> mark(U15(X1, X2)) 34.79/10.08 U16(mark(X)) -> mark(U16(X)) 34.79/10.08 U21(mark(X1), X2) -> mark(U21(X1, X2)) 34.79/10.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 34.79/10.08 U23(mark(X)) -> mark(U23(X)) 34.79/10.08 U31(mark(X1), X2) -> mark(U31(X1, X2)) 34.79/10.08 U32(mark(X)) -> mark(U32(X)) 34.79/10.08 U41(mark(X)) -> mark(U41(X)) 34.79/10.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 34.79/10.08 U52(mark(X1), X2) -> mark(U52(X1, X2)) 34.79/10.08 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 34.79/10.08 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 34.79/10.08 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 34.79/10.08 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 34.79/10.08 s(mark(X)) -> mark(s(X)) 34.79/10.08 plus(mark(X1), X2) -> mark(plus(X1, X2)) 34.79/10.08 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 34.79/10.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(tt) -> ok(tt) 34.79/10.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(isNatKind(X)) -> isNatKind(proper(X)) 34.79/10.08 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 34.79/10.08 proper(isNat(X)) -> isNat(proper(X)) 34.79/10.08 proper(U16(X)) -> U16(proper(X)) 34.79/10.08 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 34.79/10.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 34.79/10.08 proper(U23(X)) -> U23(proper(X)) 34.79/10.08 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 34.79/10.08 proper(U32(X)) -> U32(proper(X)) 34.79/10.08 proper(U41(X)) -> U41(proper(X)) 34.79/10.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 34.79/10.08 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 34.79/10.08 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(s(X)) -> s(proper(X)) 34.79/10.08 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 34.79/10.08 proper(0) -> ok(0) 34.79/10.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 34.79/10.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 34.79/10.08 isNatKind(ok(X)) -> ok(isNatKind(X)) 34.79/10.08 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 34.79/10.08 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 34.79/10.08 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 34.79/10.08 isNat(ok(X)) -> ok(isNat(X)) 34.79/10.08 U16(ok(X)) -> ok(U16(X)) 34.79/10.08 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 34.79/10.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 34.79/10.08 U23(ok(X)) -> ok(U23(X)) 34.79/10.08 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 34.79/10.08 U32(ok(X)) -> ok(U32(X)) 34.79/10.08 U41(ok(X)) -> ok(U41(X)) 34.79/10.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 34.79/10.08 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 34.79/10.08 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 34.79/10.08 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 34.79/10.08 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 34.79/10.08 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 34.79/10.08 s(ok(X)) -> ok(s(X)) 34.79/10.08 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 34.79/10.08 top(mark(X)) -> top(proper(X)) 34.79/10.08 top(ok(X)) -> top(active(X)) 34.79/10.08 34.79/10.08 S is empty. 34.79/10.08 Rewrite Strategy: FULL 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) 34.79/10.08 The following defined symbols can occur below the 0th argument of top: proper, active 34.79/10.08 The following defined symbols can occur below the 0th argument of proper: proper, active 34.79/10.08 The following defined symbols can occur below the 0th argument of active: proper, active 34.79/10.08 34.79/10.08 Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: 34.79/10.08 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 34.79/10.08 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 34.79/10.08 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 34.79/10.08 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 34.79/10.08 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 34.79/10.08 active(U16(tt)) -> mark(tt) 34.79/10.08 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 34.79/10.08 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 34.79/10.08 active(U23(tt)) -> mark(tt) 34.79/10.08 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 34.79/10.08 active(U32(tt)) -> mark(tt) 34.79/10.08 active(U41(tt)) -> mark(tt) 34.79/10.08 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 34.79/10.08 active(U52(tt, N)) -> mark(N) 34.79/10.08 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 34.79/10.08 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 34.79/10.08 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 34.79/10.08 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 34.79/10.08 active(isNat(0)) -> mark(tt) 34.79/10.08 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 34.79/10.08 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 34.79/10.08 active(isNatKind(0)) -> mark(tt) 34.79/10.08 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 34.79/10.08 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 34.79/10.08 active(plus(N, 0)) -> mark(U51(isNat(N), N)) 34.79/10.08 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 34.79/10.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 34.79/10.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 34.79/10.08 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 34.79/10.08 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 34.79/10.08 active(U15(X1, X2)) -> U15(active(X1), X2) 34.79/10.08 active(U16(X)) -> U16(active(X)) 34.79/10.08 active(U21(X1, X2)) -> U21(active(X1), X2) 34.79/10.08 active(U22(X1, X2)) -> U22(active(X1), X2) 34.79/10.08 active(U23(X)) -> U23(active(X)) 34.79/10.08 active(U31(X1, X2)) -> U31(active(X1), X2) 34.79/10.08 active(U32(X)) -> U32(active(X)) 34.79/10.08 active(U41(X)) -> U41(active(X)) 34.79/10.08 active(U51(X1, X2)) -> U51(active(X1), X2) 34.79/10.08 active(U52(X1, X2)) -> U52(active(X1), X2) 34.79/10.08 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 34.79/10.08 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 34.79/10.08 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 34.79/10.08 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 34.79/10.08 active(s(X)) -> s(active(X)) 34.79/10.08 active(plus(X1, X2)) -> plus(active(X1), X2) 34.79/10.08 active(plus(X1, X2)) -> plus(X1, active(X2)) 34.79/10.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(isNatKind(X)) -> isNatKind(proper(X)) 34.79/10.08 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 34.79/10.08 proper(isNat(X)) -> isNat(proper(X)) 34.79/10.08 proper(U16(X)) -> U16(proper(X)) 34.79/10.08 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 34.79/10.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 34.79/10.08 proper(U23(X)) -> U23(proper(X)) 34.79/10.08 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 34.79/10.08 proper(U32(X)) -> U32(proper(X)) 34.79/10.08 proper(U41(X)) -> U41(proper(X)) 34.79/10.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 34.79/10.08 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 34.79/10.08 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(s(X)) -> s(proper(X)) 34.79/10.08 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 34.79/10.08 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (2) 34.79/10.08 Obligation: 34.79/10.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 34.79/10.08 34.79/10.08 34.79/10.08 The TRS R consists of the following rules: 34.79/10.08 34.79/10.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 34.79/10.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 34.79/10.08 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 34.79/10.08 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 34.79/10.08 U15(mark(X1), X2) -> mark(U15(X1, X2)) 34.79/10.08 U16(mark(X)) -> mark(U16(X)) 34.79/10.08 U21(mark(X1), X2) -> mark(U21(X1, X2)) 34.79/10.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 34.79/10.08 U23(mark(X)) -> mark(U23(X)) 34.79/10.08 U31(mark(X1), X2) -> mark(U31(X1, X2)) 34.79/10.08 U32(mark(X)) -> mark(U32(X)) 34.79/10.08 U41(mark(X)) -> mark(U41(X)) 34.79/10.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 34.79/10.08 U52(mark(X1), X2) -> mark(U52(X1, X2)) 34.79/10.08 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 34.79/10.08 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 34.79/10.08 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 34.79/10.08 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 34.79/10.08 s(mark(X)) -> mark(s(X)) 34.79/10.08 plus(mark(X1), X2) -> mark(plus(X1, X2)) 34.79/10.08 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 34.79/10.08 proper(tt) -> ok(tt) 34.79/10.08 proper(0) -> ok(0) 34.79/10.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 34.79/10.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 34.79/10.08 isNatKind(ok(X)) -> ok(isNatKind(X)) 34.79/10.08 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 34.79/10.08 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 34.79/10.08 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 34.79/10.08 isNat(ok(X)) -> ok(isNat(X)) 34.79/10.08 U16(ok(X)) -> ok(U16(X)) 34.79/10.08 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 34.79/10.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 34.79/10.08 U23(ok(X)) -> ok(U23(X)) 34.79/10.08 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 34.79/10.08 U32(ok(X)) -> ok(U32(X)) 34.79/10.08 U41(ok(X)) -> ok(U41(X)) 34.79/10.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 34.79/10.08 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 34.79/10.08 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 34.79/10.08 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 34.79/10.08 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 34.79/10.08 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 34.79/10.08 s(ok(X)) -> ok(s(X)) 34.79/10.08 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 34.79/10.08 top(mark(X)) -> top(proper(X)) 34.79/10.08 top(ok(X)) -> top(active(X)) 34.79/10.08 34.79/10.08 S is empty. 34.79/10.08 Rewrite Strategy: FULL 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (3) RelTrsToTrsProof (UPPER BOUND(ID)) 34.79/10.08 transformed relative TRS to TRS 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (4) 34.79/10.08 Obligation: 34.79/10.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 34.79/10.08 34.79/10.08 34.79/10.08 The TRS R consists of the following rules: 34.79/10.08 34.79/10.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 34.79/10.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 34.79/10.08 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 34.79/10.08 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 34.79/10.08 U15(mark(X1), X2) -> mark(U15(X1, X2)) 34.79/10.08 U16(mark(X)) -> mark(U16(X)) 34.79/10.08 U21(mark(X1), X2) -> mark(U21(X1, X2)) 34.79/10.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 34.79/10.08 U23(mark(X)) -> mark(U23(X)) 34.79/10.08 U31(mark(X1), X2) -> mark(U31(X1, X2)) 34.79/10.08 U32(mark(X)) -> mark(U32(X)) 34.79/10.08 U41(mark(X)) -> mark(U41(X)) 34.79/10.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 34.79/10.08 U52(mark(X1), X2) -> mark(U52(X1, X2)) 34.79/10.08 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 34.79/10.08 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 34.79/10.08 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 34.79/10.08 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 34.79/10.08 s(mark(X)) -> mark(s(X)) 34.79/10.08 plus(mark(X1), X2) -> mark(plus(X1, X2)) 34.79/10.08 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 34.79/10.08 proper(tt) -> ok(tt) 34.79/10.08 proper(0) -> ok(0) 34.79/10.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 34.79/10.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 34.79/10.08 isNatKind(ok(X)) -> ok(isNatKind(X)) 34.79/10.08 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 34.79/10.08 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 34.79/10.08 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 34.79/10.08 isNat(ok(X)) -> ok(isNat(X)) 34.79/10.08 U16(ok(X)) -> ok(U16(X)) 34.79/10.08 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 34.79/10.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 34.79/10.08 U23(ok(X)) -> ok(U23(X)) 34.79/10.08 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 34.79/10.08 U32(ok(X)) -> ok(U32(X)) 34.79/10.08 U41(ok(X)) -> ok(U41(X)) 34.79/10.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 34.79/10.08 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 34.79/10.08 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 34.79/10.08 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 34.79/10.08 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 34.79/10.08 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 34.79/10.08 s(ok(X)) -> ok(s(X)) 34.79/10.08 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 34.79/10.08 top(mark(X)) -> top(proper(X)) 34.79/10.08 top(ok(X)) -> top(active(X)) 34.79/10.08 34.79/10.08 S is empty. 34.79/10.08 Rewrite Strategy: FULL 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (5) CpxTrsMatchBoundsTAProof (FINISHED) 34.79/10.08 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. 34.79/10.08 34.79/10.08 The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: 34.79/10.08 final states : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24] 34.79/10.08 transitions: 34.79/10.08 mark0(0) -> 0 34.79/10.08 tt0() -> 0 34.79/10.08 ok0(0) -> 0 34.79/10.08 00() -> 0 34.79/10.08 active0(0) -> 0 34.79/10.08 U110(0, 0, 0) -> 1 34.79/10.08 U120(0, 0, 0) -> 2 34.79/10.08 U130(0, 0, 0) -> 3 34.79/10.08 U140(0, 0, 0) -> 4 34.79/10.08 U150(0, 0) -> 5 34.79/10.08 U160(0) -> 6 34.79/10.08 U210(0, 0) -> 7 34.79/10.08 U220(0, 0) -> 8 34.79/10.08 U230(0) -> 9 34.79/10.08 U310(0, 0) -> 10 34.79/10.08 U320(0) -> 11 34.79/10.08 U410(0) -> 12 34.79/10.08 U510(0, 0) -> 13 34.79/10.08 U520(0, 0) -> 14 34.79/10.08 U610(0, 0, 0) -> 15 34.79/10.08 U620(0, 0, 0) -> 16 34.79/10.08 U630(0, 0, 0) -> 17 34.79/10.08 U640(0, 0, 0) -> 18 34.79/10.08 s0(0) -> 19 34.79/10.08 plus0(0, 0) -> 20 34.79/10.08 proper0(0) -> 21 34.79/10.08 isNatKind0(0) -> 22 34.79/10.08 isNat0(0) -> 23 34.79/10.08 top0(0) -> 24 34.79/10.08 U111(0, 0, 0) -> 25 34.79/10.08 mark1(25) -> 1 34.79/10.08 U121(0, 0, 0) -> 26 34.79/10.08 mark1(26) -> 2 34.79/10.08 U131(0, 0, 0) -> 27 34.79/10.08 mark1(27) -> 3 34.79/10.08 U141(0, 0, 0) -> 28 34.79/10.08 mark1(28) -> 4 34.79/10.08 U151(0, 0) -> 29 34.79/10.08 mark1(29) -> 5 34.79/10.08 U161(0) -> 30 34.79/10.08 mark1(30) -> 6 34.79/10.08 U211(0, 0) -> 31 34.79/10.08 mark1(31) -> 7 34.79/10.08 U221(0, 0) -> 32 34.79/10.08 mark1(32) -> 8 34.79/10.08 U231(0) -> 33 34.79/10.08 mark1(33) -> 9 34.79/10.08 U311(0, 0) -> 34 34.79/10.08 mark1(34) -> 10 34.79/10.08 U321(0) -> 35 34.79/10.08 mark1(35) -> 11 34.79/10.08 U411(0) -> 36 34.79/10.08 mark1(36) -> 12 34.79/10.08 U511(0, 0) -> 37 34.79/10.08 mark1(37) -> 13 34.79/10.08 U521(0, 0) -> 38 34.79/10.08 mark1(38) -> 14 34.79/10.08 U611(0, 0, 0) -> 39 34.79/10.08 mark1(39) -> 15 34.79/10.08 U621(0, 0, 0) -> 40 34.79/10.08 mark1(40) -> 16 34.79/10.08 U631(0, 0, 0) -> 41 34.79/10.08 mark1(41) -> 17 34.79/10.08 U641(0, 0, 0) -> 42 34.79/10.08 mark1(42) -> 18 34.79/10.08 s1(0) -> 43 34.79/10.08 mark1(43) -> 19 34.79/10.08 plus1(0, 0) -> 44 34.79/10.08 mark1(44) -> 20 34.79/10.08 tt1() -> 45 34.79/10.08 ok1(45) -> 21 34.79/10.08 01() -> 46 34.79/10.08 ok1(46) -> 21 34.79/10.08 U111(0, 0, 0) -> 47 34.79/10.08 ok1(47) -> 1 34.79/10.08 U121(0, 0, 0) -> 48 34.79/10.08 ok1(48) -> 2 34.79/10.08 isNatKind1(0) -> 49 34.79/10.08 ok1(49) -> 22 34.79/10.08 U131(0, 0, 0) -> 50 34.79/10.08 ok1(50) -> 3 34.79/10.08 U141(0, 0, 0) -> 51 34.79/10.08 ok1(51) -> 4 34.79/10.08 U151(0, 0) -> 52 34.79/10.08 ok1(52) -> 5 34.79/10.08 isNat1(0) -> 53 34.79/10.08 ok1(53) -> 23 34.79/10.08 U161(0) -> 54 34.79/10.08 ok1(54) -> 6 34.79/10.08 U211(0, 0) -> 55 34.79/10.08 ok1(55) -> 7 34.79/10.08 U221(0, 0) -> 56 34.79/10.08 ok1(56) -> 8 34.79/10.08 U231(0) -> 57 34.79/10.08 ok1(57) -> 9 34.79/10.08 U311(0, 0) -> 58 34.79/10.08 ok1(58) -> 10 34.79/10.08 U321(0) -> 59 34.79/10.08 ok1(59) -> 11 34.79/10.08 U411(0) -> 60 34.79/10.08 ok1(60) -> 12 34.79/10.08 U511(0, 0) -> 61 34.79/10.08 ok1(61) -> 13 34.79/10.08 U521(0, 0) -> 62 34.79/10.08 ok1(62) -> 14 34.79/10.08 U611(0, 0, 0) -> 63 34.79/10.08 ok1(63) -> 15 34.79/10.08 U621(0, 0, 0) -> 64 34.79/10.08 ok1(64) -> 16 34.79/10.08 U631(0, 0, 0) -> 65 34.79/10.08 ok1(65) -> 17 34.79/10.08 U641(0, 0, 0) -> 66 34.79/10.08 ok1(66) -> 18 34.79/10.08 s1(0) -> 67 34.79/10.08 ok1(67) -> 19 34.79/10.08 plus1(0, 0) -> 68 34.79/10.08 ok1(68) -> 20 34.79/10.08 proper1(0) -> 69 34.79/10.08 top1(69) -> 24 34.79/10.08 active1(0) -> 70 34.79/10.08 top1(70) -> 24 34.79/10.08 mark1(25) -> 25 34.79/10.08 mark1(25) -> 47 34.79/10.08 mark1(26) -> 26 34.79/10.08 mark1(26) -> 48 34.79/10.08 mark1(27) -> 27 34.79/10.08 mark1(27) -> 50 34.79/10.08 mark1(28) -> 28 34.79/10.08 mark1(28) -> 51 34.79/10.08 mark1(29) -> 29 34.79/10.08 mark1(29) -> 52 34.79/10.08 mark1(30) -> 30 34.79/10.08 mark1(30) -> 54 34.79/10.08 mark1(31) -> 31 34.79/10.08 mark1(31) -> 55 34.79/10.08 mark1(32) -> 32 34.79/10.08 mark1(32) -> 56 34.79/10.08 mark1(33) -> 33 34.79/10.08 mark1(33) -> 57 34.79/10.08 mark1(34) -> 34 34.79/10.08 mark1(34) -> 58 34.79/10.08 mark1(35) -> 35 34.79/10.08 mark1(35) -> 59 34.79/10.08 mark1(36) -> 36 34.79/10.08 mark1(36) -> 60 34.79/10.08 mark1(37) -> 37 34.79/10.08 mark1(37) -> 61 34.79/10.08 mark1(38) -> 38 34.79/10.08 mark1(38) -> 62 34.79/10.08 mark1(39) -> 39 34.79/10.08 mark1(39) -> 63 34.79/10.08 mark1(40) -> 40 34.79/10.08 mark1(40) -> 64 34.79/10.08 mark1(41) -> 41 34.79/10.08 mark1(41) -> 65 34.79/10.08 mark1(42) -> 42 34.79/10.08 mark1(42) -> 66 34.79/10.08 mark1(43) -> 43 34.79/10.08 mark1(43) -> 67 34.79/10.08 mark1(44) -> 44 34.79/10.08 mark1(44) -> 68 34.79/10.08 ok1(45) -> 69 34.79/10.08 ok1(46) -> 69 34.79/10.08 ok1(47) -> 25 34.79/10.08 ok1(47) -> 47 34.79/10.08 ok1(48) -> 26 34.79/10.08 ok1(48) -> 48 34.79/10.08 ok1(49) -> 49 34.79/10.08 ok1(50) -> 27 34.79/10.08 ok1(50) -> 50 34.79/10.08 ok1(51) -> 28 34.79/10.08 ok1(51) -> 51 34.79/10.08 ok1(52) -> 29 34.79/10.08 ok1(52) -> 52 34.79/10.08 ok1(53) -> 53 34.79/10.08 ok1(54) -> 30 34.79/10.08 ok1(54) -> 54 34.79/10.08 ok1(55) -> 31 34.79/10.08 ok1(55) -> 55 34.79/10.08 ok1(56) -> 32 34.79/10.08 ok1(56) -> 56 34.79/10.08 ok1(57) -> 33 34.79/10.08 ok1(57) -> 57 34.79/10.08 ok1(58) -> 34 34.79/10.08 ok1(58) -> 58 34.79/10.08 ok1(59) -> 35 34.79/10.08 ok1(59) -> 59 34.79/10.08 ok1(60) -> 36 34.79/10.08 ok1(60) -> 60 34.79/10.08 ok1(61) -> 37 34.79/10.08 ok1(61) -> 61 34.79/10.08 ok1(62) -> 38 34.79/10.08 ok1(62) -> 62 34.79/10.08 ok1(63) -> 39 34.79/10.08 ok1(63) -> 63 34.79/10.08 ok1(64) -> 40 34.79/10.08 ok1(64) -> 64 34.79/10.08 ok1(65) -> 41 34.79/10.08 ok1(65) -> 65 34.79/10.08 ok1(66) -> 42 34.79/10.08 ok1(66) -> 66 34.79/10.08 ok1(67) -> 43 34.79/10.08 ok1(67) -> 67 34.79/10.08 ok1(68) -> 44 34.79/10.08 ok1(68) -> 68 34.79/10.08 active2(45) -> 71 34.79/10.08 top2(71) -> 24 34.79/10.08 active2(46) -> 71 34.79/10.08 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (6) 34.79/10.08 BOUNDS(1, n^1) 34.79/10.08 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (7) RenamingProof (BOTH BOUNDS(ID, ID)) 34.79/10.08 Renamed function symbols to avoid clashes with predefined symbol. 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (8) 34.79/10.08 Obligation: 34.79/10.08 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, INF). 34.79/10.08 34.79/10.08 34.79/10.08 The TRS R consists of the following rules: 34.79/10.08 34.79/10.08 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 34.79/10.08 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 34.79/10.08 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 34.79/10.08 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 34.79/10.08 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 34.79/10.08 active(U16(tt)) -> mark(tt) 34.79/10.08 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 34.79/10.08 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 34.79/10.08 active(U23(tt)) -> mark(tt) 34.79/10.08 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 34.79/10.08 active(U32(tt)) -> mark(tt) 34.79/10.08 active(U41(tt)) -> mark(tt) 34.79/10.08 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 34.79/10.08 active(U52(tt, N)) -> mark(N) 34.79/10.08 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 34.79/10.08 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 34.79/10.08 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 34.79/10.08 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 34.79/10.08 active(isNat(0')) -> mark(tt) 34.79/10.08 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 34.79/10.08 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 34.79/10.08 active(isNatKind(0')) -> mark(tt) 34.79/10.08 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 34.79/10.08 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 34.79/10.08 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 34.79/10.08 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 34.79/10.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 34.79/10.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 34.79/10.08 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 34.79/10.08 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 34.79/10.08 active(U15(X1, X2)) -> U15(active(X1), X2) 34.79/10.08 active(U16(X)) -> U16(active(X)) 34.79/10.08 active(U21(X1, X2)) -> U21(active(X1), X2) 34.79/10.08 active(U22(X1, X2)) -> U22(active(X1), X2) 34.79/10.08 active(U23(X)) -> U23(active(X)) 34.79/10.08 active(U31(X1, X2)) -> U31(active(X1), X2) 34.79/10.08 active(U32(X)) -> U32(active(X)) 34.79/10.08 active(U41(X)) -> U41(active(X)) 34.79/10.08 active(U51(X1, X2)) -> U51(active(X1), X2) 34.79/10.08 active(U52(X1, X2)) -> U52(active(X1), X2) 34.79/10.08 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 34.79/10.08 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 34.79/10.08 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 34.79/10.08 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 34.79/10.08 active(s(X)) -> s(active(X)) 34.79/10.08 active(plus(X1, X2)) -> plus(active(X1), X2) 34.79/10.08 active(plus(X1, X2)) -> plus(X1, active(X2)) 34.79/10.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 34.79/10.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 34.79/10.08 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 34.79/10.08 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 34.79/10.08 U15(mark(X1), X2) -> mark(U15(X1, X2)) 34.79/10.08 U16(mark(X)) -> mark(U16(X)) 34.79/10.08 U21(mark(X1), X2) -> mark(U21(X1, X2)) 34.79/10.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 34.79/10.08 U23(mark(X)) -> mark(U23(X)) 34.79/10.08 U31(mark(X1), X2) -> mark(U31(X1, X2)) 34.79/10.08 U32(mark(X)) -> mark(U32(X)) 34.79/10.08 U41(mark(X)) -> mark(U41(X)) 34.79/10.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 34.79/10.08 U52(mark(X1), X2) -> mark(U52(X1, X2)) 34.79/10.08 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 34.79/10.08 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 34.79/10.08 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 34.79/10.08 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 34.79/10.08 s(mark(X)) -> mark(s(X)) 34.79/10.08 plus(mark(X1), X2) -> mark(plus(X1, X2)) 34.79/10.08 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 34.79/10.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(tt) -> ok(tt) 34.79/10.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(isNatKind(X)) -> isNatKind(proper(X)) 34.79/10.08 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 34.79/10.08 proper(isNat(X)) -> isNat(proper(X)) 34.79/10.08 proper(U16(X)) -> U16(proper(X)) 34.79/10.08 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 34.79/10.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 34.79/10.08 proper(U23(X)) -> U23(proper(X)) 34.79/10.08 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 34.79/10.08 proper(U32(X)) -> U32(proper(X)) 34.79/10.08 proper(U41(X)) -> U41(proper(X)) 34.79/10.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 34.79/10.08 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 34.79/10.08 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(s(X)) -> s(proper(X)) 34.79/10.08 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 34.79/10.08 proper(0') -> ok(0') 34.79/10.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 34.79/10.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 34.79/10.08 isNatKind(ok(X)) -> ok(isNatKind(X)) 34.79/10.08 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 34.79/10.08 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 34.79/10.08 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 34.79/10.08 isNat(ok(X)) -> ok(isNat(X)) 34.79/10.08 U16(ok(X)) -> ok(U16(X)) 34.79/10.08 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 34.79/10.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 34.79/10.08 U23(ok(X)) -> ok(U23(X)) 34.79/10.08 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 34.79/10.08 U32(ok(X)) -> ok(U32(X)) 34.79/10.08 U41(ok(X)) -> ok(U41(X)) 34.79/10.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 34.79/10.08 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 34.79/10.08 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 34.79/10.08 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 34.79/10.08 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 34.79/10.08 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 34.79/10.08 s(ok(X)) -> ok(s(X)) 34.79/10.08 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 34.79/10.08 top(mark(X)) -> top(proper(X)) 34.79/10.08 top(ok(X)) -> top(active(X)) 34.79/10.08 34.79/10.08 S is empty. 34.79/10.08 Rewrite Strategy: FULL 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 34.79/10.08 Infered types. 34.79/10.08 ---------------------------------------- 34.79/10.08 34.79/10.08 (10) 34.79/10.08 Obligation: 34.79/10.08 TRS: 34.79/10.08 Rules: 34.79/10.08 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 34.79/10.08 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 34.79/10.08 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 34.79/10.08 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 34.79/10.08 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 34.79/10.08 active(U16(tt)) -> mark(tt) 34.79/10.08 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 34.79/10.08 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 34.79/10.08 active(U23(tt)) -> mark(tt) 34.79/10.08 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 34.79/10.08 active(U32(tt)) -> mark(tt) 34.79/10.08 active(U41(tt)) -> mark(tt) 34.79/10.08 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 34.79/10.08 active(U52(tt, N)) -> mark(N) 34.79/10.08 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 34.79/10.08 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 34.79/10.08 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 34.79/10.08 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 34.79/10.08 active(isNat(0')) -> mark(tt) 34.79/10.08 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 34.79/10.08 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 34.79/10.08 active(isNatKind(0')) -> mark(tt) 34.79/10.08 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 34.79/10.08 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 34.79/10.08 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 34.79/10.08 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 34.79/10.08 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 34.79/10.08 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 34.79/10.08 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 34.79/10.08 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 34.79/10.08 active(U15(X1, X2)) -> U15(active(X1), X2) 34.79/10.08 active(U16(X)) -> U16(active(X)) 34.79/10.08 active(U21(X1, X2)) -> U21(active(X1), X2) 34.79/10.08 active(U22(X1, X2)) -> U22(active(X1), X2) 34.79/10.08 active(U23(X)) -> U23(active(X)) 34.79/10.08 active(U31(X1, X2)) -> U31(active(X1), X2) 34.79/10.08 active(U32(X)) -> U32(active(X)) 34.79/10.08 active(U41(X)) -> U41(active(X)) 34.79/10.08 active(U51(X1, X2)) -> U51(active(X1), X2) 34.79/10.08 active(U52(X1, X2)) -> U52(active(X1), X2) 34.79/10.08 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 34.79/10.08 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 34.79/10.08 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 34.79/10.08 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 34.79/10.08 active(s(X)) -> s(active(X)) 34.79/10.08 active(plus(X1, X2)) -> plus(active(X1), X2) 34.79/10.08 active(plus(X1, X2)) -> plus(X1, active(X2)) 34.79/10.08 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 34.79/10.08 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 34.79/10.08 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 34.79/10.08 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 34.79/10.08 U15(mark(X1), X2) -> mark(U15(X1, X2)) 34.79/10.08 U16(mark(X)) -> mark(U16(X)) 34.79/10.08 U21(mark(X1), X2) -> mark(U21(X1, X2)) 34.79/10.08 U22(mark(X1), X2) -> mark(U22(X1, X2)) 34.79/10.08 U23(mark(X)) -> mark(U23(X)) 34.79/10.08 U31(mark(X1), X2) -> mark(U31(X1, X2)) 34.79/10.08 U32(mark(X)) -> mark(U32(X)) 34.79/10.08 U41(mark(X)) -> mark(U41(X)) 34.79/10.08 U51(mark(X1), X2) -> mark(U51(X1, X2)) 34.79/10.08 U52(mark(X1), X2) -> mark(U52(X1, X2)) 34.79/10.08 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 34.79/10.08 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 34.79/10.08 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 34.79/10.08 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 34.79/10.08 s(mark(X)) -> mark(s(X)) 34.79/10.08 plus(mark(X1), X2) -> mark(plus(X1, X2)) 34.79/10.08 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 34.79/10.08 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(tt) -> ok(tt) 34.79/10.08 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(isNatKind(X)) -> isNatKind(proper(X)) 34.79/10.08 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 34.79/10.08 proper(isNat(X)) -> isNat(proper(X)) 34.79/10.08 proper(U16(X)) -> U16(proper(X)) 34.79/10.08 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 34.79/10.08 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 34.79/10.08 proper(U23(X)) -> U23(proper(X)) 34.79/10.08 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 34.79/10.08 proper(U32(X)) -> U32(proper(X)) 34.79/10.08 proper(U41(X)) -> U41(proper(X)) 34.79/10.08 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 34.79/10.08 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 34.79/10.08 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 34.79/10.08 proper(s(X)) -> s(proper(X)) 34.79/10.08 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 34.79/10.08 proper(0') -> ok(0') 34.79/10.08 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 34.79/10.08 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 34.79/10.08 isNatKind(ok(X)) -> ok(isNatKind(X)) 34.79/10.08 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 34.79/10.08 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 34.79/10.08 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 34.79/10.08 isNat(ok(X)) -> ok(isNat(X)) 34.79/10.08 U16(ok(X)) -> ok(U16(X)) 34.79/10.08 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 34.79/10.08 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 34.79/10.08 U23(ok(X)) -> ok(U23(X)) 34.79/10.08 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 34.79/10.08 U32(ok(X)) -> ok(U32(X)) 34.79/10.08 U41(ok(X)) -> ok(U41(X)) 34.79/10.08 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 34.79/10.08 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 34.79/10.08 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 34.79/10.08 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 34.79/10.08 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 34.79/10.08 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 34.79/10.08 s(ok(X)) -> ok(s(X)) 34.79/10.08 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 34.79/10.08 top(mark(X)) -> top(proper(X)) 34.79/10.08 top(ok(X)) -> top(active(X)) 34.79/10.08 34.79/10.08 Types: 34.79/10.08 active :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 tt :: tt:mark:0':ok 34.79/10.08 mark :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 isNat :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U16 :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U23 :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U32 :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U41 :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 s :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 0' :: tt:mark:0':ok 34.79/10.08 proper :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 ok :: tt:mark:0':ok -> tt:mark:0':ok 34.79/10.08 top :: tt:mark:0':ok -> top 34.79/10.08 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 34.79/10.08 hole_top2_0 :: top 35.09/10.09 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (11) OrderProof (LOWER BOUND(ID)) 35.09/10.09 Heuristically decided to analyse the following defined symbols: 35.09/10.09 active, U12, isNatKind, U13, U14, U15, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.09 35.09/10.09 They will be analysed ascendingly in the following order: 35.09/10.09 U12 < active 35.09/10.09 isNatKind < active 35.09/10.09 U13 < active 35.09/10.09 U14 < active 35.09/10.09 U15 < active 35.09/10.09 isNat < active 35.09/10.09 U16 < active 35.09/10.09 U22 < active 35.09/10.09 U23 < active 35.09/10.09 U32 < active 35.09/10.09 U52 < active 35.09/10.09 U62 < active 35.09/10.09 U63 < active 35.09/10.09 U64 < active 35.09/10.09 s < active 35.09/10.09 plus < active 35.09/10.09 U11 < active 35.09/10.09 U21 < active 35.09/10.09 U31 < active 35.09/10.09 U41 < active 35.09/10.09 U51 < active 35.09/10.09 U61 < active 35.09/10.09 active < top 35.09/10.09 U12 < proper 35.09/10.09 isNatKind < proper 35.09/10.09 U13 < proper 35.09/10.09 U14 < proper 35.09/10.09 U15 < proper 35.09/10.09 isNat < proper 35.09/10.09 U16 < proper 35.09/10.09 U22 < proper 35.09/10.09 U23 < proper 35.09/10.09 U32 < proper 35.09/10.09 U52 < proper 35.09/10.09 U62 < proper 35.09/10.09 U63 < proper 35.09/10.09 U64 < proper 35.09/10.09 s < proper 35.09/10.09 plus < proper 35.09/10.09 U11 < proper 35.09/10.09 U21 < proper 35.09/10.09 U31 < proper 35.09/10.09 U41 < proper 35.09/10.09 U51 < proper 35.09/10.09 U61 < proper 35.09/10.09 proper < top 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (12) 35.09/10.09 Obligation: 35.09/10.09 TRS: 35.09/10.09 Rules: 35.09/10.09 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.09 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.09 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.09 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.09 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.09 active(U16(tt)) -> mark(tt) 35.09/10.09 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.09 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.09 active(U23(tt)) -> mark(tt) 35.09/10.09 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.09 active(U32(tt)) -> mark(tt) 35.09/10.09 active(U41(tt)) -> mark(tt) 35.09/10.09 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.09 active(U52(tt, N)) -> mark(N) 35.09/10.09 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.09 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.09 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.09 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.09 active(isNat(0')) -> mark(tt) 35.09/10.09 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.09 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.09 active(isNatKind(0')) -> mark(tt) 35.09/10.09 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.09 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.09 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.09 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.09 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.09 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.09 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.09 active(U16(X)) -> U16(active(X)) 35.09/10.09 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.09 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.09 active(U23(X)) -> U23(active(X)) 35.09/10.09 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.09 active(U32(X)) -> U32(active(X)) 35.09/10.09 active(U41(X)) -> U41(active(X)) 35.09/10.09 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.09 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.09 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.09 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.09 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.09 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.09 active(s(X)) -> s(active(X)) 35.09/10.09 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.09 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.09 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.09 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.09 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.09 U16(mark(X)) -> mark(U16(X)) 35.09/10.09 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.09 U23(mark(X)) -> mark(U23(X)) 35.09/10.09 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.09 U32(mark(X)) -> mark(U32(X)) 35.09/10.09 U41(mark(X)) -> mark(U41(X)) 35.09/10.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.09 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.09 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.09 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.09 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.09 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.09 s(mark(X)) -> mark(s(X)) 35.09/10.09 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.09 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(tt) -> ok(tt) 35.09/10.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.09 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.09 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.09 proper(U16(X)) -> U16(proper(X)) 35.09/10.09 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.09 proper(U23(X)) -> U23(proper(X)) 35.09/10.09 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.09 proper(U32(X)) -> U32(proper(X)) 35.09/10.09 proper(U41(X)) -> U41(proper(X)) 35.09/10.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.09 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.09 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(s(X)) -> s(proper(X)) 35.09/10.09 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.09 proper(0') -> ok(0') 35.09/10.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.09 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.09 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.09 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.09 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.09 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.09 U16(ok(X)) -> ok(U16(X)) 35.09/10.09 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.09 U23(ok(X)) -> ok(U23(X)) 35.09/10.09 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.09 U32(ok(X)) -> ok(U32(X)) 35.09/10.09 U41(ok(X)) -> ok(U41(X)) 35.09/10.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.09 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.09 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.09 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.09 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.09 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.09 s(ok(X)) -> ok(s(X)) 35.09/10.09 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.09 top(mark(X)) -> top(proper(X)) 35.09/10.09 top(ok(X)) -> top(active(X)) 35.09/10.09 35.09/10.09 Types: 35.09/10.09 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 tt :: tt:mark:0':ok 35.09/10.09 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 0' :: tt:mark:0':ok 35.09/10.09 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 top :: tt:mark:0':ok -> top 35.09/10.09 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.09 hole_top2_0 :: top 35.09/10.09 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.09 35.09/10.09 35.09/10.09 Generator Equations: 35.09/10.09 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.09 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.09 35.09/10.09 35.09/10.09 The following defined symbols remain to be analysed: 35.09/10.09 U12, active, isNatKind, U13, U14, U15, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.09 35.09/10.09 They will be analysed ascendingly in the following order: 35.09/10.09 U12 < active 35.09/10.09 isNatKind < active 35.09/10.09 U13 < active 35.09/10.09 U14 < active 35.09/10.09 U15 < active 35.09/10.09 isNat < active 35.09/10.09 U16 < active 35.09/10.09 U22 < active 35.09/10.09 U23 < active 35.09/10.09 U32 < active 35.09/10.09 U52 < active 35.09/10.09 U62 < active 35.09/10.09 U63 < active 35.09/10.09 U64 < active 35.09/10.09 s < active 35.09/10.09 plus < active 35.09/10.09 U11 < active 35.09/10.09 U21 < active 35.09/10.09 U31 < active 35.09/10.09 U41 < active 35.09/10.09 U51 < active 35.09/10.09 U61 < active 35.09/10.09 active < top 35.09/10.09 U12 < proper 35.09/10.09 isNatKind < proper 35.09/10.09 U13 < proper 35.09/10.09 U14 < proper 35.09/10.09 U15 < proper 35.09/10.09 isNat < proper 35.09/10.09 U16 < proper 35.09/10.09 U22 < proper 35.09/10.09 U23 < proper 35.09/10.09 U32 < proper 35.09/10.09 U52 < proper 35.09/10.09 U62 < proper 35.09/10.09 U63 < proper 35.09/10.09 U64 < proper 35.09/10.09 s < proper 35.09/10.09 plus < proper 35.09/10.09 U11 < proper 35.09/10.09 U21 < proper 35.09/10.09 U31 < proper 35.09/10.09 U41 < proper 35.09/10.09 U51 < proper 35.09/10.09 U61 < proper 35.09/10.09 proper < top 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (13) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.09 Proved the following rewrite lemma: 35.09/10.09 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.09 35.09/10.09 Induction Base: 35.09/10.09 U12(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.09 35.09/10.09 Induction Step: 35.09/10.09 U12(gen_tt:mark:0':ok3_0(+(1, +(n5_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.09 mark(U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.09 mark(*4_0) 35.09/10.09 35.09/10.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (14) 35.09/10.09 Complex Obligation (BEST) 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (15) 35.09/10.09 Obligation: 35.09/10.09 Proved the lower bound n^1 for the following obligation: 35.09/10.09 35.09/10.09 TRS: 35.09/10.09 Rules: 35.09/10.09 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.09 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.09 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.09 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.09 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.09 active(U16(tt)) -> mark(tt) 35.09/10.09 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.09 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.09 active(U23(tt)) -> mark(tt) 35.09/10.09 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.09 active(U32(tt)) -> mark(tt) 35.09/10.09 active(U41(tt)) -> mark(tt) 35.09/10.09 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.09 active(U52(tt, N)) -> mark(N) 35.09/10.09 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.09 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.09 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.09 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.09 active(isNat(0')) -> mark(tt) 35.09/10.09 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.09 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.09 active(isNatKind(0')) -> mark(tt) 35.09/10.09 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.09 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.09 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.09 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.09 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.09 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.09 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.09 active(U16(X)) -> U16(active(X)) 35.09/10.09 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.09 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.09 active(U23(X)) -> U23(active(X)) 35.09/10.09 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.09 active(U32(X)) -> U32(active(X)) 35.09/10.09 active(U41(X)) -> U41(active(X)) 35.09/10.09 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.09 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.09 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.09 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.09 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.09 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.09 active(s(X)) -> s(active(X)) 35.09/10.09 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.09 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.09 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.09 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.09 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.09 U16(mark(X)) -> mark(U16(X)) 35.09/10.09 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.09 U23(mark(X)) -> mark(U23(X)) 35.09/10.09 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.09 U32(mark(X)) -> mark(U32(X)) 35.09/10.09 U41(mark(X)) -> mark(U41(X)) 35.09/10.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.09 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.09 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.09 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.09 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.09 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.09 s(mark(X)) -> mark(s(X)) 35.09/10.09 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.09 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(tt) -> ok(tt) 35.09/10.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.09 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.09 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.09 proper(U16(X)) -> U16(proper(X)) 35.09/10.09 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.09 proper(U23(X)) -> U23(proper(X)) 35.09/10.09 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.09 proper(U32(X)) -> U32(proper(X)) 35.09/10.09 proper(U41(X)) -> U41(proper(X)) 35.09/10.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.09 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.09 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(s(X)) -> s(proper(X)) 35.09/10.09 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.09 proper(0') -> ok(0') 35.09/10.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.09 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.09 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.09 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.09 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.09 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.09 U16(ok(X)) -> ok(U16(X)) 35.09/10.09 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.09 U23(ok(X)) -> ok(U23(X)) 35.09/10.09 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.09 U32(ok(X)) -> ok(U32(X)) 35.09/10.09 U41(ok(X)) -> ok(U41(X)) 35.09/10.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.09 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.09 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.09 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.09 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.09 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.09 s(ok(X)) -> ok(s(X)) 35.09/10.09 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.09 top(mark(X)) -> top(proper(X)) 35.09/10.09 top(ok(X)) -> top(active(X)) 35.09/10.09 35.09/10.09 Types: 35.09/10.09 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 tt :: tt:mark:0':ok 35.09/10.09 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 0' :: tt:mark:0':ok 35.09/10.09 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 top :: tt:mark:0':ok -> top 35.09/10.09 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.09 hole_top2_0 :: top 35.09/10.09 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.09 35.09/10.09 35.09/10.09 Generator Equations: 35.09/10.09 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.09 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.09 35.09/10.09 35.09/10.09 The following defined symbols remain to be analysed: 35.09/10.09 U12, active, isNatKind, U13, U14, U15, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.09 35.09/10.09 They will be analysed ascendingly in the following order: 35.09/10.09 U12 < active 35.09/10.09 isNatKind < active 35.09/10.09 U13 < active 35.09/10.09 U14 < active 35.09/10.09 U15 < active 35.09/10.09 isNat < active 35.09/10.09 U16 < active 35.09/10.09 U22 < active 35.09/10.09 U23 < active 35.09/10.09 U32 < active 35.09/10.09 U52 < active 35.09/10.09 U62 < active 35.09/10.09 U63 < active 35.09/10.09 U64 < active 35.09/10.09 s < active 35.09/10.09 plus < active 35.09/10.09 U11 < active 35.09/10.09 U21 < active 35.09/10.09 U31 < active 35.09/10.09 U41 < active 35.09/10.09 U51 < active 35.09/10.09 U61 < active 35.09/10.09 active < top 35.09/10.09 U12 < proper 35.09/10.09 isNatKind < proper 35.09/10.09 U13 < proper 35.09/10.09 U14 < proper 35.09/10.09 U15 < proper 35.09/10.09 isNat < proper 35.09/10.09 U16 < proper 35.09/10.09 U22 < proper 35.09/10.09 U23 < proper 35.09/10.09 U32 < proper 35.09/10.09 U52 < proper 35.09/10.09 U62 < proper 35.09/10.09 U63 < proper 35.09/10.09 U64 < proper 35.09/10.09 s < proper 35.09/10.09 plus < proper 35.09/10.09 U11 < proper 35.09/10.09 U21 < proper 35.09/10.09 U31 < proper 35.09/10.09 U41 < proper 35.09/10.09 U51 < proper 35.09/10.09 U61 < proper 35.09/10.09 proper < top 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (16) LowerBoundPropagationProof (FINISHED) 35.09/10.09 Propagated lower bound. 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (17) 35.09/10.09 BOUNDS(n^1, INF) 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (18) 35.09/10.09 Obligation: 35.09/10.09 TRS: 35.09/10.09 Rules: 35.09/10.09 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.09 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.09 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.09 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.09 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.09 active(U16(tt)) -> mark(tt) 35.09/10.09 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.09 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.09 active(U23(tt)) -> mark(tt) 35.09/10.09 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.09 active(U32(tt)) -> mark(tt) 35.09/10.09 active(U41(tt)) -> mark(tt) 35.09/10.09 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.09 active(U52(tt, N)) -> mark(N) 35.09/10.09 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.09 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.09 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.09 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.09 active(isNat(0')) -> mark(tt) 35.09/10.09 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.09 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.09 active(isNatKind(0')) -> mark(tt) 35.09/10.09 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.09 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.09 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.09 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.09 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.09 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.09 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.09 active(U16(X)) -> U16(active(X)) 35.09/10.09 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.09 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.09 active(U23(X)) -> U23(active(X)) 35.09/10.09 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.09 active(U32(X)) -> U32(active(X)) 35.09/10.09 active(U41(X)) -> U41(active(X)) 35.09/10.09 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.09 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.09 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.09 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.09 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.09 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.09 active(s(X)) -> s(active(X)) 35.09/10.09 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.09 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.09 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.09 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.09 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.09 U16(mark(X)) -> mark(U16(X)) 35.09/10.09 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.09 U23(mark(X)) -> mark(U23(X)) 35.09/10.09 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.09 U32(mark(X)) -> mark(U32(X)) 35.09/10.09 U41(mark(X)) -> mark(U41(X)) 35.09/10.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.09 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.09 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.09 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.09 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.09 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.09 s(mark(X)) -> mark(s(X)) 35.09/10.09 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.09 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(tt) -> ok(tt) 35.09/10.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.09 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.09 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.09 proper(U16(X)) -> U16(proper(X)) 35.09/10.09 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.09 proper(U23(X)) -> U23(proper(X)) 35.09/10.09 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.09 proper(U32(X)) -> U32(proper(X)) 35.09/10.09 proper(U41(X)) -> U41(proper(X)) 35.09/10.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.09 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.09 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(s(X)) -> s(proper(X)) 35.09/10.09 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.09 proper(0') -> ok(0') 35.09/10.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.09 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.09 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.09 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.09 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.09 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.09 U16(ok(X)) -> ok(U16(X)) 35.09/10.09 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.09 U23(ok(X)) -> ok(U23(X)) 35.09/10.09 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.09 U32(ok(X)) -> ok(U32(X)) 35.09/10.09 U41(ok(X)) -> ok(U41(X)) 35.09/10.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.09 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.09 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.09 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.09 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.09 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.09 s(ok(X)) -> ok(s(X)) 35.09/10.09 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.09 top(mark(X)) -> top(proper(X)) 35.09/10.09 top(ok(X)) -> top(active(X)) 35.09/10.09 35.09/10.09 Types: 35.09/10.09 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 tt :: tt:mark:0':ok 35.09/10.09 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 0' :: tt:mark:0':ok 35.09/10.09 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 top :: tt:mark:0':ok -> top 35.09/10.09 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.09 hole_top2_0 :: top 35.09/10.09 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.09 35.09/10.09 35.09/10.09 Lemmas: 35.09/10.09 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.09 35.09/10.09 35.09/10.09 Generator Equations: 35.09/10.09 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.09 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.09 35.09/10.09 35.09/10.09 The following defined symbols remain to be analysed: 35.09/10.09 isNatKind, active, U13, U14, U15, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.09 35.09/10.09 They will be analysed ascendingly in the following order: 35.09/10.09 isNatKind < active 35.09/10.09 U13 < active 35.09/10.09 U14 < active 35.09/10.09 U15 < active 35.09/10.09 isNat < active 35.09/10.09 U16 < active 35.09/10.09 U22 < active 35.09/10.09 U23 < active 35.09/10.09 U32 < active 35.09/10.09 U52 < active 35.09/10.09 U62 < active 35.09/10.09 U63 < active 35.09/10.09 U64 < active 35.09/10.09 s < active 35.09/10.09 plus < active 35.09/10.09 U11 < active 35.09/10.09 U21 < active 35.09/10.09 U31 < active 35.09/10.09 U41 < active 35.09/10.09 U51 < active 35.09/10.09 U61 < active 35.09/10.09 active < top 35.09/10.09 isNatKind < proper 35.09/10.09 U13 < proper 35.09/10.09 U14 < proper 35.09/10.09 U15 < proper 35.09/10.09 isNat < proper 35.09/10.09 U16 < proper 35.09/10.09 U22 < proper 35.09/10.09 U23 < proper 35.09/10.09 U32 < proper 35.09/10.09 U52 < proper 35.09/10.09 U62 < proper 35.09/10.09 U63 < proper 35.09/10.09 U64 < proper 35.09/10.09 s < proper 35.09/10.09 plus < proper 35.09/10.09 U11 < proper 35.09/10.09 U21 < proper 35.09/10.09 U31 < proper 35.09/10.09 U41 < proper 35.09/10.09 U51 < proper 35.09/10.09 U61 < proper 35.09/10.09 proper < top 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (19) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.09 Proved the following rewrite lemma: 35.09/10.09 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.09 35.09/10.09 Induction Base: 35.09/10.09 U13(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.09 35.09/10.09 Induction Step: 35.09/10.09 U13(gen_tt:mark:0':ok3_0(+(1, +(n3519_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.09 mark(U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.09 mark(*4_0) 35.09/10.09 35.09/10.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (20) 35.09/10.09 Obligation: 35.09/10.09 TRS: 35.09/10.09 Rules: 35.09/10.09 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.09 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.09 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.09 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.09 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.09 active(U16(tt)) -> mark(tt) 35.09/10.09 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.09 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.09 active(U23(tt)) -> mark(tt) 35.09/10.09 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.09 active(U32(tt)) -> mark(tt) 35.09/10.09 active(U41(tt)) -> mark(tt) 35.09/10.09 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.09 active(U52(tt, N)) -> mark(N) 35.09/10.09 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.09 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.09 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.09 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.09 active(isNat(0')) -> mark(tt) 35.09/10.09 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.09 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.09 active(isNatKind(0')) -> mark(tt) 35.09/10.09 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.09 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.09 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.09 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.09 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.09 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.09 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.09 active(U16(X)) -> U16(active(X)) 35.09/10.09 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.09 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.09 active(U23(X)) -> U23(active(X)) 35.09/10.09 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.09 active(U32(X)) -> U32(active(X)) 35.09/10.09 active(U41(X)) -> U41(active(X)) 35.09/10.09 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.09 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.09 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.09 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.09 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.09 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.09 active(s(X)) -> s(active(X)) 35.09/10.09 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.09 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.09 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.09 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.09 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.09 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.09 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.09 U16(mark(X)) -> mark(U16(X)) 35.09/10.09 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.09 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.09 U23(mark(X)) -> mark(U23(X)) 35.09/10.09 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.09 U32(mark(X)) -> mark(U32(X)) 35.09/10.09 U41(mark(X)) -> mark(U41(X)) 35.09/10.09 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.09 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.09 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.09 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.09 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.09 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.09 s(mark(X)) -> mark(s(X)) 35.09/10.09 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.09 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.09 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(tt) -> ok(tt) 35.09/10.09 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.09 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.09 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.09 proper(U16(X)) -> U16(proper(X)) 35.09/10.09 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.09 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.09 proper(U23(X)) -> U23(proper(X)) 35.09/10.09 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.09 proper(U32(X)) -> U32(proper(X)) 35.09/10.09 proper(U41(X)) -> U41(proper(X)) 35.09/10.09 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.09 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.09 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.09 proper(s(X)) -> s(proper(X)) 35.09/10.09 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.09 proper(0') -> ok(0') 35.09/10.09 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.09 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.09 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.09 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.09 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.09 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.09 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.09 U16(ok(X)) -> ok(U16(X)) 35.09/10.09 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.09 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.09 U23(ok(X)) -> ok(U23(X)) 35.09/10.09 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.09 U32(ok(X)) -> ok(U32(X)) 35.09/10.09 U41(ok(X)) -> ok(U41(X)) 35.09/10.09 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.09 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.09 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.09 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.09 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.09 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.09 s(ok(X)) -> ok(s(X)) 35.09/10.09 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.09 top(mark(X)) -> top(proper(X)) 35.09/10.09 top(ok(X)) -> top(active(X)) 35.09/10.09 35.09/10.09 Types: 35.09/10.09 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 tt :: tt:mark:0':ok 35.09/10.09 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 0' :: tt:mark:0':ok 35.09/10.09 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.09 top :: tt:mark:0':ok -> top 35.09/10.09 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.09 hole_top2_0 :: top 35.09/10.09 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.09 35.09/10.09 35.09/10.09 Lemmas: 35.09/10.09 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.09 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.09 35.09/10.09 35.09/10.09 Generator Equations: 35.09/10.09 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.09 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.09 35.09/10.09 35.09/10.09 The following defined symbols remain to be analysed: 35.09/10.09 U14, active, U15, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.09 35.09/10.09 They will be analysed ascendingly in the following order: 35.09/10.09 U14 < active 35.09/10.09 U15 < active 35.09/10.09 isNat < active 35.09/10.09 U16 < active 35.09/10.09 U22 < active 35.09/10.09 U23 < active 35.09/10.09 U32 < active 35.09/10.09 U52 < active 35.09/10.09 U62 < active 35.09/10.09 U63 < active 35.09/10.09 U64 < active 35.09/10.09 s < active 35.09/10.09 plus < active 35.09/10.09 U11 < active 35.09/10.09 U21 < active 35.09/10.09 U31 < active 35.09/10.09 U41 < active 35.09/10.09 U51 < active 35.09/10.09 U61 < active 35.09/10.09 active < top 35.09/10.09 U14 < proper 35.09/10.09 U15 < proper 35.09/10.09 isNat < proper 35.09/10.09 U16 < proper 35.09/10.09 U22 < proper 35.09/10.09 U23 < proper 35.09/10.09 U32 < proper 35.09/10.09 U52 < proper 35.09/10.09 U62 < proper 35.09/10.09 U63 < proper 35.09/10.09 U64 < proper 35.09/10.09 s < proper 35.09/10.09 plus < proper 35.09/10.09 U11 < proper 35.09/10.09 U21 < proper 35.09/10.09 U31 < proper 35.09/10.09 U41 < proper 35.09/10.09 U51 < proper 35.09/10.09 U61 < proper 35.09/10.09 proper < top 35.09/10.09 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (21) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.09 Proved the following rewrite lemma: 35.09/10.09 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.09 35.09/10.09 Induction Base: 35.09/10.09 U14(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.09 35.09/10.09 Induction Step: 35.09/10.09 U14(gen_tt:mark:0':ok3_0(+(1, +(n7631_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.09 mark(U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.09 mark(*4_0) 35.09/10.09 35.09/10.09 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.09 ---------------------------------------- 35.09/10.09 35.09/10.09 (22) 35.09/10.09 Obligation: 35.09/10.09 TRS: 35.09/10.09 Rules: 35.09/10.09 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.09 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.09 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.09 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.09 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.09 active(U16(tt)) -> mark(tt) 35.09/10.09 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.09 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.09 active(U23(tt)) -> mark(tt) 35.09/10.09 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.09 active(U32(tt)) -> mark(tt) 35.09/10.09 active(U41(tt)) -> mark(tt) 35.09/10.09 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.09 active(U52(tt, N)) -> mark(N) 35.09/10.09 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.09 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.09 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.09 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.09 active(isNat(0')) -> mark(tt) 35.09/10.09 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.09 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.09 active(isNatKind(0')) -> mark(tt) 35.09/10.09 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.09 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.09 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.09 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.09 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.09 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.09 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.09 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.09 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.09 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U15, active, isNat, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U15 < active 35.09/10.10 isNat < active 35.09/10.10 U16 < active 35.09/10.10 U22 < active 35.09/10.10 U23 < active 35.09/10.10 U32 < active 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U15 < proper 35.09/10.10 isNat < proper 35.09/10.10 U16 < proper 35.09/10.10 U22 < proper 35.09/10.10 U23 < proper 35.09/10.10 U32 < proper 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (23) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, +(n12352_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.10 mark(U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (24) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 isNat, active, U16, U22, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 isNat < active 35.09/10.10 U16 < active 35.09/10.10 U22 < active 35.09/10.10 U23 < active 35.09/10.10 U32 < active 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 isNat < proper 35.09/10.10 U16 < proper 35.09/10.10 U22 < proper 35.09/10.10 U23 < proper 35.09/10.10 U32 < proper 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (25) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, 0))) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, +(n15653_0, 1)))) ->_R^Omega(1) 35.09/10.10 mark(U16(gen_tt:mark:0':ok3_0(+(1, n15653_0)))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (26) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U22, active, U23, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U22 < active 35.09/10.10 U23 < active 35.09/10.10 U32 < active 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U22 < proper 35.09/10.10 U23 < proper 35.09/10.10 U32 < proper 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (27) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, +(n17015_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.10 mark(U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (28) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U23, active, U32, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U23 < active 35.09/10.10 U32 < active 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U23 < proper 35.09/10.10 U32 < proper 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (29) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, 0))) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, +(n20800_0, 1)))) ->_R^Omega(1) 35.09/10.10 mark(U23(gen_tt:mark:0':ok3_0(+(1, n20800_0)))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (30) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U32, active, U52, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U32 < active 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U32 < proper 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (31) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U32(gen_tt:mark:0':ok3_0(+(1, 0))) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U32(gen_tt:mark:0':ok3_0(+(1, +(n22413_0, 1)))) ->_R^Omega(1) 35.09/10.10 mark(U32(gen_tt:mark:0':ok3_0(+(1, n22413_0)))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (32) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.10 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U52, active, U62, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U52 < active 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U52 < proper 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (33) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U52(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U52(gen_tt:mark:0':ok3_0(+(1, +(n24127_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.10 mark(U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (34) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.10 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.10 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.10 s(mark(X)) -> mark(s(X)) 35.09/10.10 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.10 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.10 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(tt) -> ok(tt) 35.09/10.10 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.10 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.10 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.10 proper(U16(X)) -> U16(proper(X)) 35.09/10.10 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.10 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.10 proper(U23(X)) -> U23(proper(X)) 35.09/10.10 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.10 proper(U32(X)) -> U32(proper(X)) 35.09/10.10 proper(U41(X)) -> U41(proper(X)) 35.09/10.10 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.10 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.10 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.10 proper(s(X)) -> s(proper(X)) 35.09/10.10 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.10 proper(0') -> ok(0') 35.09/10.10 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.10 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.10 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.10 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.10 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.10 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.10 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.10 U16(ok(X)) -> ok(U16(X)) 35.09/10.10 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.10 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.10 U23(ok(X)) -> ok(U23(X)) 35.09/10.10 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.10 U32(ok(X)) -> ok(U32(X)) 35.09/10.10 U41(ok(X)) -> ok(U41(X)) 35.09/10.10 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.10 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.10 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.10 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.10 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.10 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.10 s(ok(X)) -> ok(s(X)) 35.09/10.10 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.10 top(mark(X)) -> top(proper(X)) 35.09/10.10 top(ok(X)) -> top(active(X)) 35.09/10.10 35.09/10.10 Types: 35.09/10.10 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 tt :: tt:mark:0':ok 35.09/10.10 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 0' :: tt:mark:0':ok 35.09/10.10 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.10 top :: tt:mark:0':ok -> top 35.09/10.10 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.10 hole_top2_0 :: top 35.09/10.10 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.10 35.09/10.10 35.09/10.10 Lemmas: 35.09/10.10 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.10 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.10 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.10 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.10 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.10 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.10 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.10 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.10 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.10 35.09/10.10 35.09/10.10 Generator Equations: 35.09/10.10 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.10 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.10 35.09/10.10 35.09/10.10 The following defined symbols remain to be analysed: 35.09/10.10 U62, active, U63, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.10 35.09/10.10 They will be analysed ascendingly in the following order: 35.09/10.10 U62 < active 35.09/10.10 U63 < active 35.09/10.10 U64 < active 35.09/10.10 s < active 35.09/10.10 plus < active 35.09/10.10 U11 < active 35.09/10.10 U21 < active 35.09/10.10 U31 < active 35.09/10.10 U41 < active 35.09/10.10 U51 < active 35.09/10.10 U61 < active 35.09/10.10 active < top 35.09/10.10 U62 < proper 35.09/10.10 U63 < proper 35.09/10.10 U64 < proper 35.09/10.10 s < proper 35.09/10.10 plus < proper 35.09/10.10 U11 < proper 35.09/10.10 U21 < proper 35.09/10.10 U31 < proper 35.09/10.10 U41 < proper 35.09/10.10 U51 < proper 35.09/10.10 U61 < proper 35.09/10.10 proper < top 35.09/10.10 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (35) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.10 Proved the following rewrite lemma: 35.09/10.10 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.10 35.09/10.10 Induction Base: 35.09/10.10 U62(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.10 35.09/10.10 Induction Step: 35.09/10.10 U62(gen_tt:mark:0':ok3_0(+(1, +(n28634_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.10 mark(U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.10 mark(*4_0) 35.09/10.10 35.09/10.10 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.10 ---------------------------------------- 35.09/10.10 35.09/10.10 (36) 35.09/10.10 Obligation: 35.09/10.10 TRS: 35.09/10.10 Rules: 35.09/10.10 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.10 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.10 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.10 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.10 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.10 active(U16(tt)) -> mark(tt) 35.09/10.10 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.10 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.10 active(U23(tt)) -> mark(tt) 35.09/10.10 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.10 active(U32(tt)) -> mark(tt) 35.09/10.10 active(U41(tt)) -> mark(tt) 35.09/10.10 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.10 active(U52(tt, N)) -> mark(N) 35.09/10.10 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.10 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.10 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.10 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.10 active(isNat(0')) -> mark(tt) 35.09/10.10 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.10 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.10 active(isNatKind(0')) -> mark(tt) 35.09/10.10 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.10 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.10 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.10 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.10 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.10 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.10 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.10 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.10 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.10 active(U16(X)) -> U16(active(X)) 35.09/10.10 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.10 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.10 active(U23(X)) -> U23(active(X)) 35.09/10.10 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.10 active(U32(X)) -> U32(active(X)) 35.09/10.10 active(U41(X)) -> U41(active(X)) 35.09/10.10 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.10 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.10 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.10 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.10 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.10 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.10 active(s(X)) -> s(active(X)) 35.09/10.10 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.10 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.10 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.10 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.10 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.10 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.10 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.10 U16(mark(X)) -> mark(U16(X)) 35.09/10.10 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.10 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.10 U23(mark(X)) -> mark(U23(X)) 35.09/10.10 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.10 U32(mark(X)) -> mark(U32(X)) 35.09/10.10 U41(mark(X)) -> mark(U41(X)) 35.09/10.10 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.10 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.10 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.10 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U63, active, U64, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U63 < active 35.09/10.11 U64 < active 35.09/10.11 s < active 35.09/10.11 plus < active 35.09/10.11 U11 < active 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U63 < proper 35.09/10.11 U64 < proper 35.09/10.11 s < proper 35.09/10.11 plus < proper 35.09/10.11 U11 < proper 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (37) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, +(n36295_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.11 mark(U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (38) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U64, active, s, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U64 < active 35.09/10.11 s < active 35.09/10.11 plus < active 35.09/10.11 U11 < active 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U64 < proper 35.09/10.11 s < proper 35.09/10.11 plus < proper 35.09/10.11 U11 < proper 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (39) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, +(n44565_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.11 mark(U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (40) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 s, active, plus, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 s < active 35.09/10.11 plus < active 35.09/10.11 U11 < active 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 s < proper 35.09/10.11 plus < proper 35.09/10.11 U11 < proper 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (41) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, 0))) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, +(n53444_0, 1)))) ->_R^Omega(1) 35.09/10.11 mark(s(gen_tt:mark:0':ok3_0(+(1, n53444_0)))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (42) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 plus, active, U11, U21, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 plus < active 35.09/10.11 U11 < active 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 plus < proper 35.09/10.11 U11 < proper 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (43) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, +(n56006_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.11 mark(plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (44) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U11, active, U21, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U11 < active 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U11 < proper 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (45) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, +(n62438_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.11 mark(U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (46) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U21, active, U31, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U21 < active 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U21 < proper 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (47) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, +(n72703_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.11 mark(U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (48) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U31, active, U41, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U31 < active 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U31 < proper 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (49) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n79646_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U31(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U31(gen_tt:mark:0':ok3_0(+(1, +(n79646_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.11 mark(U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (50) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.11 U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n79646_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U41, active, U51, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U41 < active 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U41 < proper 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (51) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U41(gen_tt:mark:0':ok3_0(+(1, n86895_0))) -> *4_0, rt in Omega(n86895_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U41(gen_tt:mark:0':ok3_0(+(1, 0))) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U41(gen_tt:mark:0':ok3_0(+(1, +(n86895_0, 1)))) ->_R^Omega(1) 35.09/10.11 mark(U41(gen_tt:mark:0':ok3_0(+(1, n86895_0)))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (52) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.11 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.11 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.11 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.11 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.11 active(U16(tt)) -> mark(tt) 35.09/10.11 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.11 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.11 active(U23(tt)) -> mark(tt) 35.09/10.11 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.11 active(U32(tt)) -> mark(tt) 35.09/10.11 active(U41(tt)) -> mark(tt) 35.09/10.11 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.11 active(U52(tt, N)) -> mark(N) 35.09/10.11 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.11 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.11 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.11 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.11 active(isNat(0')) -> mark(tt) 35.09/10.11 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.11 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.11 active(isNatKind(0')) -> mark(tt) 35.09/10.11 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.11 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.11 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.11 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.11 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.11 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.11 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.11 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.11 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.11 active(U16(X)) -> U16(active(X)) 35.09/10.11 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.11 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.11 active(U23(X)) -> U23(active(X)) 35.09/10.11 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.11 active(U32(X)) -> U32(active(X)) 35.09/10.11 active(U41(X)) -> U41(active(X)) 35.09/10.11 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.11 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.11 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.11 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.11 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.11 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.11 active(s(X)) -> s(active(X)) 35.09/10.11 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.11 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.11 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.11 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.11 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.11 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.11 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.11 U16(mark(X)) -> mark(U16(X)) 35.09/10.11 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.11 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.11 U23(mark(X)) -> mark(U23(X)) 35.09/10.11 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.11 U32(mark(X)) -> mark(U32(X)) 35.09/10.11 U41(mark(X)) -> mark(U41(X)) 35.09/10.11 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.11 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.11 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.11 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.11 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.11 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.11 s(mark(X)) -> mark(s(X)) 35.09/10.11 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.11 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.11 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(tt) -> ok(tt) 35.09/10.11 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.11 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.11 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.11 proper(U16(X)) -> U16(proper(X)) 35.09/10.11 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.11 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.11 proper(U23(X)) -> U23(proper(X)) 35.09/10.11 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.11 proper(U32(X)) -> U32(proper(X)) 35.09/10.11 proper(U41(X)) -> U41(proper(X)) 35.09/10.11 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.11 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.11 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.11 proper(s(X)) -> s(proper(X)) 35.09/10.11 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.11 proper(0') -> ok(0') 35.09/10.11 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.11 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.11 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.11 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.11 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.11 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.11 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.11 U16(ok(X)) -> ok(U16(X)) 35.09/10.11 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.11 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.11 U23(ok(X)) -> ok(U23(X)) 35.09/10.11 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.11 U32(ok(X)) -> ok(U32(X)) 35.09/10.11 U41(ok(X)) -> ok(U41(X)) 35.09/10.11 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.11 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.11 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.11 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.11 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.11 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.11 s(ok(X)) -> ok(s(X)) 35.09/10.11 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.11 top(mark(X)) -> top(proper(X)) 35.09/10.11 top(ok(X)) -> top(active(X)) 35.09/10.11 35.09/10.11 Types: 35.09/10.11 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 tt :: tt:mark:0':ok 35.09/10.11 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 0' :: tt:mark:0':ok 35.09/10.11 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.11 top :: tt:mark:0':ok -> top 35.09/10.11 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.11 hole_top2_0 :: top 35.09/10.11 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.11 35.09/10.11 35.09/10.11 Lemmas: 35.09/10.11 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.11 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.11 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.11 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.11 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.11 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.11 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.11 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.11 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.11 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.11 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.11 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.11 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.11 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.11 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.11 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.11 U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n79646_0) 35.09/10.11 U41(gen_tt:mark:0':ok3_0(+(1, n86895_0))) -> *4_0, rt in Omega(n86895_0) 35.09/10.11 35.09/10.11 35.09/10.11 Generator Equations: 35.09/10.11 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.11 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.11 35.09/10.11 35.09/10.11 The following defined symbols remain to be analysed: 35.09/10.11 U51, active, U61, proper, top 35.09/10.11 35.09/10.11 They will be analysed ascendingly in the following order: 35.09/10.11 U51 < active 35.09/10.11 U61 < active 35.09/10.11 active < top 35.09/10.11 U51 < proper 35.09/10.11 U61 < proper 35.09/10.11 proper < top 35.09/10.11 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (53) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.11 Proved the following rewrite lemma: 35.09/10.11 U51(gen_tt:mark:0':ok3_0(+(1, n90207_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n90207_0) 35.09/10.11 35.09/10.11 Induction Base: 35.09/10.11 U51(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b)) 35.09/10.11 35.09/10.11 Induction Step: 35.09/10.11 U51(gen_tt:mark:0':ok3_0(+(1, +(n90207_0, 1))), gen_tt:mark:0':ok3_0(b)) ->_R^Omega(1) 35.09/10.11 mark(U51(gen_tt:mark:0':ok3_0(+(1, n90207_0)), gen_tt:mark:0':ok3_0(b))) ->_IH 35.09/10.11 mark(*4_0) 35.09/10.11 35.09/10.11 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.11 ---------------------------------------- 35.09/10.11 35.09/10.11 (54) 35.09/10.11 Obligation: 35.09/10.11 TRS: 35.09/10.11 Rules: 35.09/10.11 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.12 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.12 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.12 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.12 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.12 active(U16(tt)) -> mark(tt) 35.09/10.12 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.12 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.12 active(U23(tt)) -> mark(tt) 35.09/10.12 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.12 active(U32(tt)) -> mark(tt) 35.09/10.12 active(U41(tt)) -> mark(tt) 35.09/10.12 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.12 active(U52(tt, N)) -> mark(N) 35.09/10.12 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.12 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.12 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.12 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.12 active(isNat(0')) -> mark(tt) 35.09/10.12 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.12 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.12 active(isNatKind(0')) -> mark(tt) 35.09/10.12 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.12 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.12 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.12 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.12 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.12 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.12 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.12 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.12 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.12 active(U16(X)) -> U16(active(X)) 35.09/10.12 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.12 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.12 active(U23(X)) -> U23(active(X)) 35.09/10.12 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.12 active(U32(X)) -> U32(active(X)) 35.09/10.12 active(U41(X)) -> U41(active(X)) 35.09/10.12 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.12 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.12 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.12 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.12 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.12 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.12 active(s(X)) -> s(active(X)) 35.09/10.12 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.12 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.12 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.12 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.12 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.12 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.12 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.12 U16(mark(X)) -> mark(U16(X)) 35.09/10.12 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.12 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.12 U23(mark(X)) -> mark(U23(X)) 35.09/10.12 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.12 U32(mark(X)) -> mark(U32(X)) 35.09/10.12 U41(mark(X)) -> mark(U41(X)) 35.09/10.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.12 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.12 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.12 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.12 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.12 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.12 s(mark(X)) -> mark(s(X)) 35.09/10.12 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.12 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.12 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(tt) -> ok(tt) 35.09/10.12 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.12 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.12 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.12 proper(U16(X)) -> U16(proper(X)) 35.09/10.12 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.12 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.12 proper(U23(X)) -> U23(proper(X)) 35.09/10.12 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.12 proper(U32(X)) -> U32(proper(X)) 35.09/10.12 proper(U41(X)) -> U41(proper(X)) 35.09/10.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.12 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.12 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(s(X)) -> s(proper(X)) 35.09/10.12 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.12 proper(0') -> ok(0') 35.09/10.12 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.12 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.12 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.12 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.12 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.12 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.12 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.12 U16(ok(X)) -> ok(U16(X)) 35.09/10.12 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.12 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.12 U23(ok(X)) -> ok(U23(X)) 35.09/10.12 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.12 U32(ok(X)) -> ok(U32(X)) 35.09/10.12 U41(ok(X)) -> ok(U41(X)) 35.09/10.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.12 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.12 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.12 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.12 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.12 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.12 s(ok(X)) -> ok(s(X)) 35.09/10.12 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.12 top(mark(X)) -> top(proper(X)) 35.09/10.12 top(ok(X)) -> top(active(X)) 35.09/10.12 35.09/10.12 Types: 35.09/10.12 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 tt :: tt:mark:0':ok 35.09/10.12 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 0' :: tt:mark:0':ok 35.09/10.12 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 top :: tt:mark:0':ok -> top 35.09/10.12 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.12 hole_top2_0 :: top 35.09/10.12 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.12 35.09/10.12 35.09/10.12 Lemmas: 35.09/10.12 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.12 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.12 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.12 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.12 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.12 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.12 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.12 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.12 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.12 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.12 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.12 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.12 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.12 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.12 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.12 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.12 U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n79646_0) 35.09/10.12 U41(gen_tt:mark:0':ok3_0(+(1, n86895_0))) -> *4_0, rt in Omega(n86895_0) 35.09/10.12 U51(gen_tt:mark:0':ok3_0(+(1, n90207_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n90207_0) 35.09/10.12 35.09/10.12 35.09/10.12 Generator Equations: 35.09/10.12 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.12 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.12 35.09/10.12 35.09/10.12 The following defined symbols remain to be analysed: 35.09/10.12 U61, active, proper, top 35.09/10.12 35.09/10.12 They will be analysed ascendingly in the following order: 35.09/10.12 U61 < active 35.09/10.12 active < top 35.09/10.12 U61 < proper 35.09/10.12 proper < top 35.09/10.12 35.09/10.12 ---------------------------------------- 35.09/10.12 35.09/10.12 (55) RewriteLemmaProof (LOWER BOUND(ID)) 35.09/10.12 Proved the following rewrite lemma: 35.09/10.12 U61(gen_tt:mark:0':ok3_0(+(1, n97970_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n97970_0) 35.09/10.12 35.09/10.12 Induction Base: 35.09/10.12 U61(gen_tt:mark:0':ok3_0(+(1, 0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) 35.09/10.12 35.09/10.12 Induction Step: 35.09/10.12 U61(gen_tt:mark:0':ok3_0(+(1, +(n97970_0, 1))), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) ->_R^Omega(1) 35.09/10.12 mark(U61(gen_tt:mark:0':ok3_0(+(1, n97970_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c))) ->_IH 35.09/10.12 mark(*4_0) 35.09/10.12 35.09/10.12 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 35.09/10.12 ---------------------------------------- 35.09/10.12 35.09/10.12 (56) 35.09/10.12 Obligation: 35.09/10.12 TRS: 35.09/10.12 Rules: 35.09/10.12 active(U11(tt, V1, V2)) -> mark(U12(isNatKind(V1), V1, V2)) 35.09/10.12 active(U12(tt, V1, V2)) -> mark(U13(isNatKind(V2), V1, V2)) 35.09/10.12 active(U13(tt, V1, V2)) -> mark(U14(isNatKind(V2), V1, V2)) 35.09/10.12 active(U14(tt, V1, V2)) -> mark(U15(isNat(V1), V2)) 35.09/10.12 active(U15(tt, V2)) -> mark(U16(isNat(V2))) 35.09/10.12 active(U16(tt)) -> mark(tt) 35.09/10.12 active(U21(tt, V1)) -> mark(U22(isNatKind(V1), V1)) 35.09/10.12 active(U22(tt, V1)) -> mark(U23(isNat(V1))) 35.09/10.12 active(U23(tt)) -> mark(tt) 35.09/10.12 active(U31(tt, V2)) -> mark(U32(isNatKind(V2))) 35.09/10.12 active(U32(tt)) -> mark(tt) 35.09/10.12 active(U41(tt)) -> mark(tt) 35.09/10.12 active(U51(tt, N)) -> mark(U52(isNatKind(N), N)) 35.09/10.12 active(U52(tt, N)) -> mark(N) 35.09/10.12 active(U61(tt, M, N)) -> mark(U62(isNatKind(M), M, N)) 35.09/10.12 active(U62(tt, M, N)) -> mark(U63(isNat(N), M, N)) 35.09/10.12 active(U63(tt, M, N)) -> mark(U64(isNatKind(N), M, N)) 35.09/10.12 active(U64(tt, M, N)) -> mark(s(plus(N, M))) 35.09/10.12 active(isNat(0')) -> mark(tt) 35.09/10.12 active(isNat(plus(V1, V2))) -> mark(U11(isNatKind(V1), V1, V2)) 35.09/10.12 active(isNat(s(V1))) -> mark(U21(isNatKind(V1), V1)) 35.09/10.12 active(isNatKind(0')) -> mark(tt) 35.09/10.12 active(isNatKind(plus(V1, V2))) -> mark(U31(isNatKind(V1), V2)) 35.09/10.12 active(isNatKind(s(V1))) -> mark(U41(isNatKind(V1))) 35.09/10.12 active(plus(N, 0')) -> mark(U51(isNat(N), N)) 35.09/10.12 active(plus(N, s(M))) -> mark(U61(isNat(M), M, N)) 35.09/10.12 active(U11(X1, X2, X3)) -> U11(active(X1), X2, X3) 35.09/10.12 active(U12(X1, X2, X3)) -> U12(active(X1), X2, X3) 35.09/10.12 active(U13(X1, X2, X3)) -> U13(active(X1), X2, X3) 35.09/10.12 active(U14(X1, X2, X3)) -> U14(active(X1), X2, X3) 35.09/10.12 active(U15(X1, X2)) -> U15(active(X1), X2) 35.09/10.12 active(U16(X)) -> U16(active(X)) 35.09/10.12 active(U21(X1, X2)) -> U21(active(X1), X2) 35.09/10.12 active(U22(X1, X2)) -> U22(active(X1), X2) 35.09/10.12 active(U23(X)) -> U23(active(X)) 35.09/10.12 active(U31(X1, X2)) -> U31(active(X1), X2) 35.09/10.12 active(U32(X)) -> U32(active(X)) 35.09/10.12 active(U41(X)) -> U41(active(X)) 35.09/10.12 active(U51(X1, X2)) -> U51(active(X1), X2) 35.09/10.12 active(U52(X1, X2)) -> U52(active(X1), X2) 35.09/10.12 active(U61(X1, X2, X3)) -> U61(active(X1), X2, X3) 35.09/10.12 active(U62(X1, X2, X3)) -> U62(active(X1), X2, X3) 35.09/10.12 active(U63(X1, X2, X3)) -> U63(active(X1), X2, X3) 35.09/10.12 active(U64(X1, X2, X3)) -> U64(active(X1), X2, X3) 35.09/10.12 active(s(X)) -> s(active(X)) 35.09/10.12 active(plus(X1, X2)) -> plus(active(X1), X2) 35.09/10.12 active(plus(X1, X2)) -> plus(X1, active(X2)) 35.09/10.12 U11(mark(X1), X2, X3) -> mark(U11(X1, X2, X3)) 35.09/10.12 U12(mark(X1), X2, X3) -> mark(U12(X1, X2, X3)) 35.09/10.12 U13(mark(X1), X2, X3) -> mark(U13(X1, X2, X3)) 35.09/10.12 U14(mark(X1), X2, X3) -> mark(U14(X1, X2, X3)) 35.09/10.12 U15(mark(X1), X2) -> mark(U15(X1, X2)) 35.09/10.12 U16(mark(X)) -> mark(U16(X)) 35.09/10.12 U21(mark(X1), X2) -> mark(U21(X1, X2)) 35.09/10.12 U22(mark(X1), X2) -> mark(U22(X1, X2)) 35.09/10.12 U23(mark(X)) -> mark(U23(X)) 35.09/10.12 U31(mark(X1), X2) -> mark(U31(X1, X2)) 35.09/10.12 U32(mark(X)) -> mark(U32(X)) 35.09/10.12 U41(mark(X)) -> mark(U41(X)) 35.09/10.12 U51(mark(X1), X2) -> mark(U51(X1, X2)) 35.09/10.12 U52(mark(X1), X2) -> mark(U52(X1, X2)) 35.09/10.12 U61(mark(X1), X2, X3) -> mark(U61(X1, X2, X3)) 35.09/10.12 U62(mark(X1), X2, X3) -> mark(U62(X1, X2, X3)) 35.09/10.12 U63(mark(X1), X2, X3) -> mark(U63(X1, X2, X3)) 35.09/10.12 U64(mark(X1), X2, X3) -> mark(U64(X1, X2, X3)) 35.09/10.12 s(mark(X)) -> mark(s(X)) 35.09/10.12 plus(mark(X1), X2) -> mark(plus(X1, X2)) 35.09/10.12 plus(X1, mark(X2)) -> mark(plus(X1, X2)) 35.09/10.12 proper(U11(X1, X2, X3)) -> U11(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(tt) -> ok(tt) 35.09/10.12 proper(U12(X1, X2, X3)) -> U12(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(isNatKind(X)) -> isNatKind(proper(X)) 35.09/10.12 proper(U13(X1, X2, X3)) -> U13(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U14(X1, X2, X3)) -> U14(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U15(X1, X2)) -> U15(proper(X1), proper(X2)) 35.09/10.12 proper(isNat(X)) -> isNat(proper(X)) 35.09/10.12 proper(U16(X)) -> U16(proper(X)) 35.09/10.12 proper(U21(X1, X2)) -> U21(proper(X1), proper(X2)) 35.09/10.12 proper(U22(X1, X2)) -> U22(proper(X1), proper(X2)) 35.09/10.12 proper(U23(X)) -> U23(proper(X)) 35.09/10.12 proper(U31(X1, X2)) -> U31(proper(X1), proper(X2)) 35.09/10.12 proper(U32(X)) -> U32(proper(X)) 35.09/10.12 proper(U41(X)) -> U41(proper(X)) 35.09/10.12 proper(U51(X1, X2)) -> U51(proper(X1), proper(X2)) 35.09/10.12 proper(U52(X1, X2)) -> U52(proper(X1), proper(X2)) 35.09/10.12 proper(U61(X1, X2, X3)) -> U61(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U62(X1, X2, X3)) -> U62(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U63(X1, X2, X3)) -> U63(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(U64(X1, X2, X3)) -> U64(proper(X1), proper(X2), proper(X3)) 35.09/10.12 proper(s(X)) -> s(proper(X)) 35.09/10.12 proper(plus(X1, X2)) -> plus(proper(X1), proper(X2)) 35.09/10.12 proper(0') -> ok(0') 35.09/10.12 U11(ok(X1), ok(X2), ok(X3)) -> ok(U11(X1, X2, X3)) 35.09/10.12 U12(ok(X1), ok(X2), ok(X3)) -> ok(U12(X1, X2, X3)) 35.09/10.12 isNatKind(ok(X)) -> ok(isNatKind(X)) 35.09/10.12 U13(ok(X1), ok(X2), ok(X3)) -> ok(U13(X1, X2, X3)) 35.09/10.12 U14(ok(X1), ok(X2), ok(X3)) -> ok(U14(X1, X2, X3)) 35.09/10.12 U15(ok(X1), ok(X2)) -> ok(U15(X1, X2)) 35.09/10.12 isNat(ok(X)) -> ok(isNat(X)) 35.09/10.12 U16(ok(X)) -> ok(U16(X)) 35.09/10.12 U21(ok(X1), ok(X2)) -> ok(U21(X1, X2)) 35.09/10.12 U22(ok(X1), ok(X2)) -> ok(U22(X1, X2)) 35.09/10.12 U23(ok(X)) -> ok(U23(X)) 35.09/10.12 U31(ok(X1), ok(X2)) -> ok(U31(X1, X2)) 35.09/10.12 U32(ok(X)) -> ok(U32(X)) 35.09/10.12 U41(ok(X)) -> ok(U41(X)) 35.09/10.12 U51(ok(X1), ok(X2)) -> ok(U51(X1, X2)) 35.09/10.12 U52(ok(X1), ok(X2)) -> ok(U52(X1, X2)) 35.09/10.12 U61(ok(X1), ok(X2), ok(X3)) -> ok(U61(X1, X2, X3)) 35.09/10.12 U62(ok(X1), ok(X2), ok(X3)) -> ok(U62(X1, X2, X3)) 35.09/10.12 U63(ok(X1), ok(X2), ok(X3)) -> ok(U63(X1, X2, X3)) 35.09/10.12 U64(ok(X1), ok(X2), ok(X3)) -> ok(U64(X1, X2, X3)) 35.09/10.12 s(ok(X)) -> ok(s(X)) 35.09/10.12 plus(ok(X1), ok(X2)) -> ok(plus(X1, X2)) 35.09/10.12 top(mark(X)) -> top(proper(X)) 35.09/10.12 top(ok(X)) -> top(active(X)) 35.09/10.12 35.09/10.12 Types: 35.09/10.12 active :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U11 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 tt :: tt:mark:0':ok 35.09/10.12 mark :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U12 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 isNatKind :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U13 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U14 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U15 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 isNat :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U16 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U21 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U22 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U23 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U31 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U32 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U41 :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U51 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U52 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U61 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U62 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U63 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 U64 :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 s :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 plus :: tt:mark:0':ok -> tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 0' :: tt:mark:0':ok 35.09/10.12 proper :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 ok :: tt:mark:0':ok -> tt:mark:0':ok 35.09/10.12 top :: tt:mark:0':ok -> top 35.09/10.12 hole_tt:mark:0':ok1_0 :: tt:mark:0':ok 35.09/10.12 hole_top2_0 :: top 35.09/10.12 gen_tt:mark:0':ok3_0 :: Nat -> tt:mark:0':ok 35.09/10.12 35.09/10.12 35.09/10.12 Lemmas: 35.09/10.12 U12(gen_tt:mark:0':ok3_0(+(1, n5_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n5_0) 35.09/10.12 U13(gen_tt:mark:0':ok3_0(+(1, n3519_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n3519_0) 35.09/10.12 U14(gen_tt:mark:0':ok3_0(+(1, n7631_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n7631_0) 35.09/10.12 U15(gen_tt:mark:0':ok3_0(+(1, n12352_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n12352_0) 35.09/10.12 U16(gen_tt:mark:0':ok3_0(+(1, n15653_0))) -> *4_0, rt in Omega(n15653_0) 35.09/10.12 U22(gen_tt:mark:0':ok3_0(+(1, n17015_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n17015_0) 35.09/10.12 U23(gen_tt:mark:0':ok3_0(+(1, n20800_0))) -> *4_0, rt in Omega(n20800_0) 35.09/10.12 U32(gen_tt:mark:0':ok3_0(+(1, n22413_0))) -> *4_0, rt in Omega(n22413_0) 35.09/10.12 U52(gen_tt:mark:0':ok3_0(+(1, n24127_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n24127_0) 35.09/10.12 U62(gen_tt:mark:0':ok3_0(+(1, n28634_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n28634_0) 35.09/10.12 U63(gen_tt:mark:0':ok3_0(+(1, n36295_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n36295_0) 35.09/10.12 U64(gen_tt:mark:0':ok3_0(+(1, n44565_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n44565_0) 35.09/10.12 s(gen_tt:mark:0':ok3_0(+(1, n53444_0))) -> *4_0, rt in Omega(n53444_0) 35.09/10.12 plus(gen_tt:mark:0':ok3_0(+(1, n56006_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n56006_0) 35.09/10.12 U11(gen_tt:mark:0':ok3_0(+(1, n62438_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n62438_0) 35.09/10.12 U21(gen_tt:mark:0':ok3_0(+(1, n72703_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n72703_0) 35.09/10.12 U31(gen_tt:mark:0':ok3_0(+(1, n79646_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n79646_0) 35.09/10.12 U41(gen_tt:mark:0':ok3_0(+(1, n86895_0))) -> *4_0, rt in Omega(n86895_0) 35.09/10.12 U51(gen_tt:mark:0':ok3_0(+(1, n90207_0)), gen_tt:mark:0':ok3_0(b)) -> *4_0, rt in Omega(n90207_0) 35.09/10.12 U61(gen_tt:mark:0':ok3_0(+(1, n97970_0)), gen_tt:mark:0':ok3_0(b), gen_tt:mark:0':ok3_0(c)) -> *4_0, rt in Omega(n97970_0) 35.09/10.12 35.09/10.12 35.09/10.12 Generator Equations: 35.09/10.12 gen_tt:mark:0':ok3_0(0) <=> tt 35.09/10.12 gen_tt:mark:0':ok3_0(+(x, 1)) <=> mark(gen_tt:mark:0':ok3_0(x)) 35.09/10.12 35.09/10.12 35.09/10.12 The following defined symbols remain to be analysed: 35.09/10.12 active, proper, top 35.09/10.12 35.09/10.12 They will be analysed ascendingly in the following order: 35.09/10.12 active < top 35.09/10.12 proper < top 35.09/10.17 EOF