21.48/6.95 WORST_CASE(Omega(n^1), O(n^1)) 21.48/6.96 proof of /export/starexec/sandbox/benchmark/theBenchmark.xml 21.48/6.96 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 21.48/6.96 21.48/6.96 21.48/6.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 21.48/6.96 21.48/6.96 (0) CpxTRS 21.48/6.96 (1) RcToIrcProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (2) CpxTRS 21.48/6.96 (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (4) CpxWeightedTrs 21.48/6.96 (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (6) CpxTypedWeightedTrs 21.48/6.96 (7) CompletionProof [UPPER BOUND(ID), 0 ms] 21.48/6.96 (8) CpxTypedWeightedCompleteTrs 21.48/6.96 (9) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (10) CpxTypedWeightedCompleteTrs 21.48/6.96 (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] 21.48/6.96 (12) CpxRNTS 21.48/6.96 (13) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (14) CpxRNTS 21.48/6.96 (15) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] 21.48/6.96 (16) CpxRNTS 21.48/6.96 (17) ResultPropagationProof [UPPER BOUND(ID), 0 ms] 21.48/6.96 (18) CpxRNTS 21.48/6.96 (19) IntTrsBoundProof [UPPER BOUND(ID), 1198 ms] 21.48/6.96 (20) CpxRNTS 21.48/6.96 (21) IntTrsBoundProof [UPPER BOUND(ID), 481 ms] 21.48/6.96 (22) CpxRNTS 21.48/6.96 (23) FinalProof [FINISHED, 0 ms] 21.48/6.96 (24) BOUNDS(1, n^1) 21.48/6.96 (25) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] 21.48/6.96 (26) TRS for Loop Detection 21.48/6.96 (27) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] 21.48/6.96 (28) BEST 21.48/6.96 (29) proven lower bound 21.48/6.96 (30) LowerBoundPropagationProof [FINISHED, 0 ms] 21.48/6.96 (31) BOUNDS(n^1, INF) 21.48/6.96 (32) TRS for Loop Detection 21.48/6.96 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (0) 21.48/6.96 Obligation: 21.48/6.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 21.48/6.96 21.48/6.96 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 21.48/6.96 div(x, y) -> quot(x, y, y) 21.48/6.96 quot(0, s(y), z) -> 0 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) 21.48/6.96 21.48/6.96 S is empty. 21.48/6.96 Rewrite Strategy: FULL 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (1) RcToIrcProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Converted rc-obligation to irc-obligation. 21.48/6.96 21.48/6.96 As the TRS does not nest defined symbols, we have rc = irc. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (2) 21.48/6.96 Obligation: 21.48/6.96 The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). 21.48/6.96 21.48/6.96 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 21.48/6.96 div(x, y) -> quot(x, y, y) 21.48/6.96 quot(0, s(y), z) -> 0 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) 21.48/6.96 21.48/6.96 S is empty. 21.48/6.96 Rewrite Strategy: INNERMOST 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Transformed relative TRS to weighted TRS 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (4) 21.48/6.96 Obligation: 21.48/6.96 The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^1). 21.48/6.96 21.48/6.96 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 [1] 21.48/6.96 div(x, y) -> quot(x, y, y) [1] 21.48/6.96 quot(0, s(y), z) -> 0 [1] 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) [1] 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) [1] 21.48/6.96 21.48/6.96 Rewrite Strategy: INNERMOST 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Infered types. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (6) 21.48/6.96 Obligation: 21.48/6.96 Runtime Complexity Weighted TRS with Types. 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 [1] 21.48/6.96 div(x, y) -> quot(x, y, y) [1] 21.48/6.96 quot(0, s(y), z) -> 0 [1] 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) [1] 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) [1] 21.48/6.96 21.48/6.96 The TRS has the following type information: 21.48/6.96 div :: 0:s -> 0:s -> 0:s 21.48/6.96 0 :: 0:s 21.48/6.96 quot :: 0:s -> 0:s -> 0:s -> 0:s 21.48/6.96 s :: 0:s -> 0:s 21.48/6.96 21.48/6.96 Rewrite Strategy: INNERMOST 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (7) CompletionProof (UPPER BOUND(ID)) 21.48/6.96 The transformation into a RNTS is sound, since: 21.48/6.96 21.48/6.96 (a) The obligation is a constructor system where every type has a constant constructor, 21.48/6.96 21.48/6.96 (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: 21.48/6.96 21.48/6.96 div_2 21.48/6.96 quot_3 21.48/6.96 21.48/6.96 (c) The following functions are completely defined: 21.48/6.96 none 21.48/6.96 21.48/6.96 Due to the following rules being added: 21.48/6.96 none 21.48/6.96 21.48/6.96 And the following fresh constants: none 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (8) 21.48/6.96 Obligation: 21.48/6.96 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 21.48/6.96 21.48/6.96 Runtime Complexity Weighted TRS with Types. 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 [1] 21.48/6.96 div(x, y) -> quot(x, y, y) [1] 21.48/6.96 quot(0, s(y), z) -> 0 [1] 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) [1] 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) [1] 21.48/6.96 21.48/6.96 The TRS has the following type information: 21.48/6.96 div :: 0:s -> 0:s -> 0:s 21.48/6.96 0 :: 0:s 21.48/6.96 quot :: 0:s -> 0:s -> 0:s -> 0:s 21.48/6.96 s :: 0:s -> 0:s 21.48/6.96 21.48/6.96 Rewrite Strategy: INNERMOST 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (9) NarrowingProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Narrowed the inner basic terms of all right-hand sides by a single narrowing step. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (10) 21.48/6.96 Obligation: 21.48/6.96 Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: 21.48/6.96 21.48/6.96 Runtime Complexity Weighted TRS with Types. 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 [1] 21.48/6.96 div(x, y) -> quot(x, y, y) [1] 21.48/6.96 quot(0, s(y), z) -> 0 [1] 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) [1] 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) [1] 21.48/6.96 21.48/6.96 The TRS has the following type information: 21.48/6.96 div :: 0:s -> 0:s -> 0:s 21.48/6.96 0 :: 0:s 21.48/6.96 quot :: 0:s -> 0:s -> 0:s -> 0:s 21.48/6.96 s :: 0:s -> 0:s 21.48/6.96 21.48/6.96 Rewrite Strategy: INNERMOST 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) 21.48/6.96 Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. 21.48/6.96 The constant constructors are abstracted as follows: 21.48/6.96 21.48/6.96 0 => 0 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (12) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(x, y, y) :|: z' = x, z'' = y, x >= 0, y >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' = y, y >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(x, y, z) :|: z' = 1 + x, z1 = z, z >= 0, x >= 0, y >= 0, z'' = 1 + y 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 = z, z >= 0, y >= 0, z'' = 1 + y, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(x, 1 + z) :|: z'' = 0, z >= 0, z' = x, x >= 0, z1 = 1 + z 21.48/6.96 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (13) SimplificationProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Simplified the RNTS by moving equalities from the constraints into the right-hand sides. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (14) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(z', z'', z'') :|: z' >= 0, z'' >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(z' - 1, z'' - 1, z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' - 1 >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(z', 1 + (z1 - 1)) :|: z'' = 0, z1 - 1 >= 0, z' >= 0 21.48/6.96 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (15) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) 21.48/6.96 Found the following analysis order by SCC decomposition: 21.48/6.96 21.48/6.96 { div, quot } 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (16) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(z', z'', z'') :|: z' >= 0, z'' >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(z' - 1, z'' - 1, z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' - 1 >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(z', 1 + (z1 - 1)) :|: z'' = 0, z1 - 1 >= 0, z' >= 0 21.48/6.96 21.48/6.96 Function symbols to be analyzed: {div,quot} 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (17) ResultPropagationProof (UPPER BOUND(ID)) 21.48/6.96 Applied inner abstraction using the recently inferred runtime/size bounds where possible. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (18) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(z', z'', z'') :|: z' >= 0, z'' >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(z' - 1, z'' - 1, z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' - 1 >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(z', 1 + (z1 - 1)) :|: z'' = 0, z1 - 1 >= 0, z' >= 0 21.48/6.96 21.48/6.96 Function symbols to be analyzed: {div,quot} 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (19) IntTrsBoundProof (UPPER BOUND(ID)) 21.48/6.96 21.48/6.96 Computed SIZE bound using KoAT for: div 21.48/6.96 after applying outer abstraction to obtain an ITS, 21.48/6.96 resulting in: O(n^1) with polynomial bound: z' 21.48/6.96 21.48/6.96 Computed SIZE bound using KoAT for: quot 21.48/6.96 after applying outer abstraction to obtain an ITS, 21.48/6.96 resulting in: O(n^1) with polynomial bound: 1 + z' 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (20) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(z', z'', z'') :|: z' >= 0, z'' >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(z' - 1, z'' - 1, z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' - 1 >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(z', 1 + (z1 - 1)) :|: z'' = 0, z1 - 1 >= 0, z' >= 0 21.48/6.96 21.48/6.96 Function symbols to be analyzed: {div,quot} 21.48/6.96 Previous analysis results are: 21.48/6.96 div: runtime: ?, size: O(n^1) [z'] 21.48/6.96 quot: runtime: ?, size: O(n^1) [1 + z'] 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (21) IntTrsBoundProof (UPPER BOUND(ID)) 21.48/6.96 21.48/6.96 Computed RUNTIME bound using KoAT for: div 21.48/6.96 after applying outer abstraction to obtain an ITS, 21.48/6.96 resulting in: O(n^1) with polynomial bound: 3 + 3*z' 21.48/6.96 21.48/6.96 Computed RUNTIME bound using KoAT for: quot 21.48/6.96 after applying outer abstraction to obtain an ITS, 21.48/6.96 resulting in: O(n^1) with polynomial bound: 5 + 3*z' + z'' 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (22) 21.48/6.96 Obligation: 21.48/6.96 Complexity RNTS consisting of the following rules: 21.48/6.96 21.48/6.96 div(z', z'') -{ 1 }-> quot(z', z'', z'') :|: z' >= 0, z'' >= 0 21.48/6.96 div(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> quot(z' - 1, z'' - 1, z1) :|: z1 >= 0, z' - 1 >= 0, z'' - 1 >= 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 0 :|: z1 >= 0, z'' - 1 >= 0, z' = 0 21.48/6.96 quot(z', z'', z1) -{ 1 }-> 1 + div(z', 1 + (z1 - 1)) :|: z'' = 0, z1 - 1 >= 0, z' >= 0 21.48/6.96 21.48/6.96 Function symbols to be analyzed: 21.48/6.96 Previous analysis results are: 21.48/6.96 div: runtime: O(n^1) [3 + 3*z'], size: O(n^1) [z'] 21.48/6.96 quot: runtime: O(n^1) [5 + 3*z' + z''], size: O(n^1) [1 + z'] 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (23) FinalProof (FINISHED) 21.48/6.96 Computed overall runtime complexity 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (24) 21.48/6.96 BOUNDS(1, n^1) 21.48/6.96 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (25) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) 21.48/6.96 Transformed a relative TRS into a decreasing-loop problem. 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (26) 21.48/6.96 Obligation: 21.48/6.96 Analyzing the following TRS for decreasing loops: 21.48/6.96 21.48/6.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 21.48/6.96 21.48/6.96 21.48/6.96 The TRS R consists of the following rules: 21.48/6.96 21.48/6.96 div(0, y) -> 0 21.48/6.96 div(x, y) -> quot(x, y, y) 21.48/6.96 quot(0, s(y), z) -> 0 21.48/6.96 quot(s(x), s(y), z) -> quot(x, y, z) 21.48/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) 21.48/6.96 21.48/6.96 S is empty. 21.48/6.96 Rewrite Strategy: FULL 21.48/6.96 ---------------------------------------- 21.48/6.96 21.48/6.96 (27) DecreasingLoopProof (LOWER BOUND(ID)) 21.48/6.96 The following loop(s) give(s) rise to the lower bound Omega(n^1): 21.48/6.96 21.48/6.96 The rewrite sequence 21.48/6.96 21.48/6.96 quot(s(x), s(y), z) ->^+ quot(x, y, z) 21.48/6.96 21.48/6.96 gives rise to a decreasing loop by considering the right hand sides subterm at position []. 21.68/6.96 21.68/6.96 The pumping substitution is [x / s(x), y / s(y)]. 21.68/6.96 21.68/6.96 The result substitution is [ ]. 21.68/6.96 21.68/6.96 21.68/6.96 21.68/6.96 21.68/6.96 ---------------------------------------- 21.68/6.96 21.68/6.96 (28) 21.68/6.96 Complex Obligation (BEST) 21.68/6.96 21.68/6.96 ---------------------------------------- 21.68/6.96 21.68/6.96 (29) 21.68/6.96 Obligation: 21.68/6.96 Proved the lower bound n^1 for the following obligation: 21.68/6.96 21.68/6.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 21.68/6.96 21.68/6.96 21.68/6.96 The TRS R consists of the following rules: 21.68/6.96 21.68/6.96 div(0, y) -> 0 21.68/6.96 div(x, y) -> quot(x, y, y) 21.68/6.96 quot(0, s(y), z) -> 0 21.68/6.96 quot(s(x), s(y), z) -> quot(x, y, z) 21.68/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) 21.68/6.96 21.68/6.96 S is empty. 21.68/6.96 Rewrite Strategy: FULL 21.68/6.96 ---------------------------------------- 21.68/6.96 21.68/6.96 (30) LowerBoundPropagationProof (FINISHED) 21.68/6.96 Propagated lower bound. 21.68/6.96 ---------------------------------------- 21.68/6.96 21.68/6.96 (31) 21.68/6.96 BOUNDS(n^1, INF) 21.68/6.96 21.68/6.96 ---------------------------------------- 21.68/6.96 21.68/6.96 (32) 21.68/6.96 Obligation: 21.68/6.96 Analyzing the following TRS for decreasing loops: 21.68/6.96 21.68/6.96 The Runtime Complexity (full) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). 21.68/6.96 21.68/6.96 21.68/6.96 The TRS R consists of the following rules: 21.68/6.96 21.68/6.96 div(0, y) -> 0 21.68/6.96 div(x, y) -> quot(x, y, y) 21.68/6.96 quot(0, s(y), z) -> 0 21.68/6.96 quot(s(x), s(y), z) -> quot(x, y, z) 21.68/6.96 quot(x, 0, s(z)) -> s(div(x, s(z))) 21.68/6.96 21.68/6.96 S is empty. 21.68/6.96 Rewrite Strategy: FULL 21.72/7.24 EOF