30.72/10.13 WORST_CASE(Omega(n^2), O(n^2)) 30.72/10.14 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 30.72/10.14 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 30.72/10.14 30.72/10.14 30.72/10.14 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^2, n^2). 30.72/10.14 30.72/10.14 (0) CpxTRS 30.72/10.14 (1) NestedDefinedSymbolProof [UPPER BOUND(ID), 0 ms] 30.72/10.14 (2) CpxTRS 30.72/10.14 (3) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (4) CpxTRS 30.72/10.14 (5) CpxTrsToCdtProof [UPPER BOUND(ID), 4 ms] 30.72/10.14 (6) CdtProblem 30.72/10.14 (7) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (8) CdtProblem 30.72/10.14 (9) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (10) CdtProblem 30.72/10.14 (11) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 72 ms] 30.72/10.14 (12) CdtProblem 30.72/10.14 (13) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (14) CdtProblem 30.72/10.14 (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 45 ms] 30.72/10.14 (16) CdtProblem 30.72/10.14 (17) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (18) BOUNDS(1, 1) 30.72/10.14 (19) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (20) CpxTRS 30.72/10.14 (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 30.72/10.14 (22) typed CpxTrs 30.72/10.14 (23) OrderProof [LOWER BOUND(ID), 0 ms] 30.72/10.14 (24) typed CpxTrs 30.72/10.14 (25) RewriteLemmaProof [LOWER BOUND(ID), 297 ms] 30.72/10.14 (26) BEST 30.72/10.14 (27) proven lower bound 30.72/10.14 (28) LowerBoundPropagationProof [FINISHED, 0 ms] 30.72/10.14 (29) BOUNDS(n^1, INF) 30.72/10.14 (30) typed CpxTrs 30.72/10.14 (31) RewriteLemmaProof [LOWER BOUND(ID), 76 ms] 30.72/10.14 (32) BEST 30.72/10.14 (33) proven lower bound 30.72/10.14 (34) LowerBoundPropagationProof [FINISHED, 0 ms] 30.72/10.14 (35) BOUNDS(n^2, INF) 30.72/10.14 (36) typed CpxTrs 30.72/10.14 (37) RewriteLemmaProof [LOWER BOUND(ID), 28 ms] 30.72/10.14 (38) typed CpxTrs 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (0) 30.72/10.14 Obligation: 30.72/10.14 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^2, n^2). 30.72/10.14 30.72/10.14 30.72/10.14 The TRS R consists of the following rules: 30.72/10.14 30.72/10.14 plus(x, 0) -> x 30.72/10.14 plus(0, y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0, y) -> 0 30.72/10.14 times(s(0), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0, y) -> 0 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0, s(y), z) -> 0 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0, s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 S is empty. 30.72/10.14 Rewrite Strategy: FULL 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (1) NestedDefinedSymbolProof (UPPER BOUND(ID)) 30.72/10.14 The following defined symbols can occur below the 1th argument of plus: plus, times 30.72/10.14 30.72/10.14 Hence, the left-hand sides of the following rules are not basic-reachable and can be removed: 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (2) 30.72/10.14 Obligation: 30.72/10.14 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(1, n^2). 30.72/10.14 30.72/10.14 30.72/10.14 The TRS R consists of the following rules: 30.72/10.14 30.72/10.14 plus(x, 0) -> x 30.72/10.14 plus(0, y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0, y) -> 0 30.72/10.14 times(s(0), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0, y) -> 0 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0, s(y), z) -> 0 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0, s(z)) -> s(div(x, s(z))) 30.72/10.14 30.72/10.14 S is empty. 30.72/10.14 Rewrite Strategy: FULL 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (3) RcToIrcProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 Converted rc-obligation to irc-obligation. 30.72/10.14 30.72/10.14 The duplicating contexts are: 30.72/10.14 times(s(x), []) 30.72/10.14 div(x, []) 30.72/10.14 30.72/10.14 30.72/10.14 The defined contexts are: 30.72/10.14 plus(x0, []) 30.72/10.14 30.72/10.14 30.72/10.14 As the TRS is an overlay system and the defined contexts and the duplicating contexts don't overlap, we have rc = irc. 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (4) 30.72/10.14 Obligation: 30.72/10.14 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^2). 30.72/10.14 30.72/10.14 30.72/10.14 The TRS R consists of the following rules: 30.72/10.14 30.72/10.14 plus(x, 0) -> x 30.72/10.14 plus(0, y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0, y) -> 0 30.72/10.14 times(s(0), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0, y) -> 0 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0, s(y), z) -> 0 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0, s(z)) -> s(div(x, s(z))) 30.72/10.14 30.72/10.14 S is empty. 30.72/10.14 Rewrite Strategy: INNERMOST 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (5) CpxTrsToCdtProof (UPPER BOUND(ID)) 30.72/10.14 Converted Cpx (relative) TRS to CDT 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (6) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 div(0, z0) -> 0 30.72/10.14 div(z0, z1) -> quot(z0, z1, z1) 30.72/10.14 quot(0, s(z0), z1) -> 0 30.72/10.14 quot(s(z0), s(z1), z2) -> quot(z0, z1, z2) 30.72/10.14 quot(z0, 0, s(z1)) -> s(div(z0, s(z1))) 30.72/10.14 Tuples: 30.72/10.14 PLUS(z0, 0) -> c 30.72/10.14 PLUS(0, z0) -> c1 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(0, z0) -> c3 30.72/10.14 TIMES(s(0), z0) -> c4 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(0, z0) -> c6 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(0, s(z0), z1) -> c8 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples: 30.72/10.14 PLUS(z0, 0) -> c 30.72/10.14 PLUS(0, z0) -> c1 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(0, z0) -> c3 30.72/10.14 TIMES(s(0), z0) -> c4 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(0, z0) -> c6 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(0, s(z0), z1) -> c8 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 K tuples:none 30.72/10.14 Defined Rule Symbols: plus_2, times_2, div_2, quot_3 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c, c1, c2_1, c3, c4, c5_2, c6, c7_1, c8, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 Removed 6 trailing nodes: 30.72/10.14 PLUS(0, z0) -> c1 30.72/10.14 QUOT(0, s(z0), z1) -> c8 30.72/10.14 DIV(0, z0) -> c6 30.72/10.14 TIMES(s(0), z0) -> c4 30.72/10.14 TIMES(0, z0) -> c3 30.72/10.14 PLUS(z0, 0) -> c 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (8) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 div(0, z0) -> 0 30.72/10.14 div(z0, z1) -> quot(z0, z1, z1) 30.72/10.14 quot(0, s(z0), z1) -> 0 30.72/10.14 quot(s(z0), s(z1), z2) -> quot(z0, z1, z2) 30.72/10.14 quot(z0, 0, s(z1)) -> s(div(z0, s(z1))) 30.72/10.14 Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 K tuples:none 30.72/10.14 Defined Rule Symbols: plus_2, times_2, div_2, quot_3 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c2_1, c5_2, c7_1, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (9) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 The following rules are not usable and were removed: 30.72/10.14 div(0, z0) -> 0 30.72/10.14 div(z0, z1) -> quot(z0, z1, z1) 30.72/10.14 quot(0, s(z0), z1) -> 0 30.72/10.14 quot(s(z0), s(z1), z2) -> quot(z0, z1, z2) 30.72/10.14 quot(z0, 0, s(z1)) -> s(div(z0, s(z1))) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (10) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 K tuples:none 30.72/10.14 Defined Rule Symbols: times_2, plus_2 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c2_1, c5_2, c7_1, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) 30.72/10.14 Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 We considered the (Usable) Rules:none 30.72/10.14 And the Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 The order we found is given by the following interpretation: 30.72/10.14 30.72/10.14 Polynomial interpretation : 30.72/10.14 30.72/10.14 POL(0) = [1] 30.72/10.14 POL(DIV(x_1, x_2)) = x_1 + x_2 30.72/10.14 POL(PLUS(x_1, x_2)) = 0 30.72/10.14 POL(QUOT(x_1, x_2, x_3)) = x_1 + x_3 30.72/10.14 POL(TIMES(x_1, x_2)) = x_1 30.72/10.14 POL(c10(x_1)) = x_1 30.72/10.14 POL(c2(x_1)) = x_1 30.72/10.14 POL(c5(x_1, x_2)) = x_1 + x_2 30.72/10.14 POL(c7(x_1)) = x_1 30.72/10.14 POL(c9(x_1)) = x_1 30.72/10.14 POL(plus(x_1, x_2)) = [1] + x_1 + x_2 30.72/10.14 POL(s(x_1)) = [1] + x_1 30.72/10.14 POL(times(x_1, x_2)) = [1] + x_1 + x_2 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (12) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 K tuples: 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 Defined Rule Symbols: times_2, plus_2 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c2_1, c5_2, c7_1, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (13) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 The following tuples could be moved from S to K by knowledge propagation: 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (14) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 K tuples: 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 Defined Rule Symbols: times_2, plus_2 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c2_1, c5_2, c7_1, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) 30.72/10.14 Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 We considered the (Usable) Rules:none 30.72/10.14 And the Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 The order we found is given by the following interpretation: 30.72/10.14 30.72/10.14 Polynomial interpretation : 30.72/10.14 30.72/10.14 POL(0) = 0 30.72/10.14 POL(DIV(x_1, x_2)) = 0 30.72/10.14 POL(PLUS(x_1, x_2)) = [2] + x_1 30.72/10.14 POL(QUOT(x_1, x_2, x_3)) = 0 30.72/10.14 POL(TIMES(x_1, x_2)) = x_1*x_2 + x_1^2 30.72/10.14 POL(c10(x_1)) = x_1 30.72/10.14 POL(c2(x_1)) = x_1 30.72/10.14 POL(c5(x_1, x_2)) = x_1 + x_2 30.72/10.14 POL(c7(x_1)) = x_1 30.72/10.14 POL(c9(x_1)) = x_1 30.72/10.14 POL(plus(x_1, x_2)) = [2]x_1 + x_2 30.72/10.14 POL(s(x_1)) = [2] + x_1 30.72/10.14 POL(times(x_1, x_2)) = x_1*x_2 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (16) 30.72/10.14 Obligation: 30.72/10.14 Complexity Dependency Tuples Problem 30.72/10.14 30.72/10.14 Rules: 30.72/10.14 times(0, z0) -> 0 30.72/10.14 times(s(0), z0) -> z0 30.72/10.14 times(s(z0), z1) -> plus(z1, times(z0, z1)) 30.72/10.14 plus(z0, 0) -> z0 30.72/10.14 plus(0, z0) -> z0 30.72/10.14 plus(s(z0), z1) -> s(plus(z0, z1)) 30.72/10.14 Tuples: 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 S tuples:none 30.72/10.14 K tuples: 30.72/10.14 TIMES(s(z0), z1) -> c5(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) 30.72/10.14 QUOT(s(z0), s(z1), z2) -> c9(QUOT(z0, z1, z2)) 30.72/10.14 QUOT(z0, 0, s(z1)) -> c10(DIV(z0, s(z1))) 30.72/10.14 DIV(z0, z1) -> c7(QUOT(z0, z1, z1)) 30.72/10.14 PLUS(s(z0), z1) -> c2(PLUS(z0, z1)) 30.72/10.14 Defined Rule Symbols: times_2, plus_2 30.72/10.14 30.72/10.14 Defined Pair Symbols: PLUS_2, TIMES_2, DIV_2, QUOT_3 30.72/10.14 30.72/10.14 Compound Symbols: c2_1, c5_2, c7_1, c9_1, c10_1 30.72/10.14 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (17) SIsEmptyProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 The set S is empty 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (18) 30.72/10.14 BOUNDS(1, 1) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (19) RenamingProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 Renamed function symbols to avoid clashes with predefined symbol. 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (20) 30.72/10.14 Obligation: 30.72/10.14 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^2, INF). 30.72/10.14 30.72/10.14 30.72/10.14 The TRS R consists of the following rules: 30.72/10.14 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 S is empty. 30.72/10.14 Rewrite Strategy: FULL 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 30.72/10.14 Infered types. 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (22) 30.72/10.14 Obligation: 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (23) OrderProof (LOWER BOUND(ID)) 30.72/10.14 Heuristically decided to analyse the following defined symbols: 30.72/10.14 plus, times, div, quot 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 plus < times 30.72/10.14 times < div 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (24) 30.72/10.14 Obligation: 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 plus, times, div, quot 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 plus < times 30.72/10.14 times < div 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (25) RewriteLemmaProof (LOWER BOUND(ID)) 30.72/10.14 Proved the following rewrite lemma: 30.72/10.14 plus(gen_0':s2_0(n4_0), gen_0':s2_0(b)) -> gen_0':s2_0(+(n4_0, b)), rt in Omega(1 + n4_0) 30.72/10.14 30.72/10.14 Induction Base: 30.72/10.14 plus(gen_0':s2_0(0), gen_0':s2_0(b)) ->_R^Omega(1) 30.72/10.14 gen_0':s2_0(b) 30.72/10.14 30.72/10.14 Induction Step: 30.72/10.14 plus(gen_0':s2_0(+(n4_0, 1)), gen_0':s2_0(b)) ->_R^Omega(1) 30.72/10.14 s(plus(gen_0':s2_0(n4_0), gen_0':s2_0(b))) ->_IH 30.72/10.14 s(gen_0':s2_0(+(b, c5_0))) 30.72/10.14 30.72/10.14 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (26) 30.72/10.14 Complex Obligation (BEST) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (27) 30.72/10.14 Obligation: 30.72/10.14 Proved the lower bound n^1 for the following obligation: 30.72/10.14 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 plus, times, div, quot 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 plus < times 30.72/10.14 times < div 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (28) LowerBoundPropagationProof (FINISHED) 30.72/10.14 Propagated lower bound. 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (29) 30.72/10.14 BOUNDS(n^1, INF) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (30) 30.72/10.14 Obligation: 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Lemmas: 30.72/10.14 plus(gen_0':s2_0(n4_0), gen_0':s2_0(b)) -> gen_0':s2_0(+(n4_0, b)), rt in Omega(1 + n4_0) 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 times, div, quot 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 times < div 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (31) RewriteLemmaProof (LOWER BOUND(ID)) 30.72/10.14 Proved the following rewrite lemma: 30.72/10.14 times(gen_0':s2_0(n577_0), gen_0':s2_0(b)) -> gen_0':s2_0(*(n577_0, b)), rt in Omega(1 + b*n577_0 + n577_0) 30.72/10.14 30.72/10.14 Induction Base: 30.72/10.14 times(gen_0':s2_0(0), gen_0':s2_0(b)) ->_R^Omega(1) 30.72/10.14 0' 30.72/10.14 30.72/10.14 Induction Step: 30.72/10.14 times(gen_0':s2_0(+(n577_0, 1)), gen_0':s2_0(b)) ->_R^Omega(1) 30.72/10.14 plus(gen_0':s2_0(b), times(gen_0':s2_0(n577_0), gen_0':s2_0(b))) ->_IH 30.72/10.14 plus(gen_0':s2_0(b), gen_0':s2_0(*(c578_0, b))) ->_L^Omega(1 + b) 30.72/10.14 gen_0':s2_0(+(b, *(n577_0, b))) 30.72/10.14 30.72/10.14 We have rt in Omega(n^2) and sz in O(n). Thus, we have irc_R in Omega(n^2). 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (32) 30.72/10.14 Complex Obligation (BEST) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (33) 30.72/10.14 Obligation: 30.72/10.14 Proved the lower bound n^2 for the following obligation: 30.72/10.14 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Lemmas: 30.72/10.14 plus(gen_0':s2_0(n4_0), gen_0':s2_0(b)) -> gen_0':s2_0(+(n4_0, b)), rt in Omega(1 + n4_0) 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 times, div, quot 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 times < div 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (34) LowerBoundPropagationProof (FINISHED) 30.72/10.14 Propagated lower bound. 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (35) 30.72/10.14 BOUNDS(n^2, INF) 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (36) 30.72/10.14 Obligation: 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Lemmas: 30.72/10.14 plus(gen_0':s2_0(n4_0), gen_0':s2_0(b)) -> gen_0':s2_0(+(n4_0, b)), rt in Omega(1 + n4_0) 30.72/10.14 times(gen_0':s2_0(n577_0), gen_0':s2_0(b)) -> gen_0':s2_0(*(n577_0, b)), rt in Omega(1 + b*n577_0 + n577_0) 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 quot, div 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 div = quot 30.72/10.14 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (37) RewriteLemmaProof (LOWER BOUND(ID)) 30.72/10.14 Proved the following rewrite lemma: 30.72/10.14 quot(gen_0':s2_0(n1370_0), gen_0':s2_0(+(1, n1370_0)), gen_0':s2_0(c)) -> gen_0':s2_0(0), rt in Omega(1 + n1370_0) 30.72/10.14 30.72/10.14 Induction Base: 30.72/10.14 quot(gen_0':s2_0(0), gen_0':s2_0(+(1, 0)), gen_0':s2_0(c)) ->_R^Omega(1) 30.72/10.14 0' 30.72/10.14 30.72/10.14 Induction Step: 30.72/10.14 quot(gen_0':s2_0(+(n1370_0, 1)), gen_0':s2_0(+(1, +(n1370_0, 1))), gen_0':s2_0(c)) ->_R^Omega(1) 30.72/10.14 quot(gen_0':s2_0(n1370_0), gen_0':s2_0(+(1, n1370_0)), gen_0':s2_0(c)) ->_IH 30.72/10.14 gen_0':s2_0(0) 30.72/10.14 30.72/10.14 We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). 30.72/10.14 ---------------------------------------- 30.72/10.14 30.72/10.14 (38) 30.72/10.14 Obligation: 30.72/10.14 TRS: 30.72/10.14 Rules: 30.72/10.14 plus(x, 0') -> x 30.72/10.14 plus(0', y) -> y 30.72/10.14 plus(s(x), y) -> s(plus(x, y)) 30.72/10.14 times(0', y) -> 0' 30.72/10.14 times(s(0'), y) -> y 30.72/10.14 times(s(x), y) -> plus(y, times(x, y)) 30.72/10.14 div(0', y) -> 0' 30.72/10.14 div(x, y) -> quot(x, y, y) 30.72/10.14 quot(0', s(y), z) -> 0' 30.72/10.14 quot(s(x), s(y), z) -> quot(x, y, z) 30.72/10.14 quot(x, 0', s(z)) -> s(div(x, s(z))) 30.72/10.14 div(div(x, y), z) -> div(x, times(y, z)) 30.72/10.14 30.72/10.14 Types: 30.72/10.14 plus :: 0':s -> 0':s -> 0':s 30.72/10.14 0' :: 0':s 30.72/10.14 s :: 0':s -> 0':s 30.72/10.14 times :: 0':s -> 0':s -> 0':s 30.72/10.14 div :: 0':s -> 0':s -> 0':s 30.72/10.14 quot :: 0':s -> 0':s -> 0':s -> 0':s 30.72/10.14 hole_0':s1_0 :: 0':s 30.72/10.14 gen_0':s2_0 :: Nat -> 0':s 30.72/10.14 30.72/10.14 30.72/10.14 Lemmas: 30.72/10.14 plus(gen_0':s2_0(n4_0), gen_0':s2_0(b)) -> gen_0':s2_0(+(n4_0, b)), rt in Omega(1 + n4_0) 30.72/10.14 times(gen_0':s2_0(n577_0), gen_0':s2_0(b)) -> gen_0':s2_0(*(n577_0, b)), rt in Omega(1 + b*n577_0 + n577_0) 30.72/10.14 quot(gen_0':s2_0(n1370_0), gen_0':s2_0(+(1, n1370_0)), gen_0':s2_0(c)) -> gen_0':s2_0(0), rt in Omega(1 + n1370_0) 30.72/10.14 30.72/10.14 30.72/10.14 Generator Equations: 30.72/10.14 gen_0':s2_0(0) <=> 0' 30.72/10.14 gen_0':s2_0(+(x, 1)) <=> s(gen_0':s2_0(x)) 30.72/10.14 30.72/10.14 30.72/10.14 The following defined symbols remain to be analysed: 30.72/10.14 div 30.72/10.14 30.72/10.14 They will be analysed ascendingly in the following order: 30.72/10.14 div = quot 30.90/10.18 EOF