4.11/2.26 WORST_CASE(Omega(n^1), O(n^1)) 4.23/2.26 proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat 4.23/2.26 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.23/2.26 4.23/2.26 4.23/2.26 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(1, 1 + Arg_0 + Arg_1)). 4.23/2.26 4.23/2.26 (0) CpxIntTrs 4.23/2.26 (1) Koat2 Proof [FINISHED, 46 ms] 4.23/2.26 (2) BOUNDS(1, max(1, 1 + Arg_0 + Arg_1)) 4.23/2.26 (3) Loat Proof [FINISHED, 630 ms] 4.23/2.26 (4) BOUNDS(n^1, INF) 4.23/2.26 4.23/2.26 4.23/2.26 ---------------------------------------- 4.23/2.26 4.23/2.26 (0) 4.23/2.26 Obligation: 4.23/2.26 Complexity Int TRS consisting of the following rules: 4.23/2.26 f0(A, B) -> Com_1(f1(A, B)) :|: A >= 1 4.23/2.26 f1(A, B) -> Com_1(f1(A, B - A)) :|: A >= 1 && B >= 0 4.23/2.26 4.23/2.26 The start-symbols are:[f0_2] 4.23/2.26 4.23/2.26 4.23/2.26 ---------------------------------------- 4.23/2.26 4.23/2.26 (1) Koat2 Proof (FINISHED) 4.23/2.26 YES( ?, max([1, 1+Arg_0+Arg_1]) {O(n)}) 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Initial Complexity Problem: 4.23/2.26 4.23/2.26 Start: f0 4.23/2.26 4.23/2.26 Program_Vars: Arg_0, Arg_1 4.23/2.26 4.23/2.26 Temp_Vars: 4.23/2.26 4.23/2.26 Locations: f0, f1 4.23/2.26 4.23/2.26 Transitions: 4.23/2.26 4.23/2.26 f0(Arg_0,Arg_1) -> f1(Arg_0,Arg_1):|:1 <= Arg_0 4.23/2.26 4.23/2.26 f1(Arg_0,Arg_1) -> f1(Arg_0,Arg_1-Arg_0):|:1 <= Arg_0 && 1 <= Arg_0 && 0 <= Arg_1 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Timebounds: 4.23/2.26 4.23/2.26 Overall timebound: max([1, 1+Arg_0+Arg_1]) {O(n)} 4.23/2.26 4.23/2.26 0: f0->f1: 1 {O(1)} 4.23/2.26 4.23/2.26 1: f1->f1: max([0, Arg_0+Arg_1]) {O(n)} 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Costbounds: 4.23/2.26 4.23/2.26 Overall costbound: max([1, 1+Arg_0+Arg_1]) {O(n)} 4.23/2.26 4.23/2.26 0: f0->f1: 1 {O(1)} 4.23/2.26 4.23/2.26 1: f1->f1: max([0, Arg_0+Arg_1]) {O(n)} 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Sizebounds: 4.23/2.26 4.23/2.26 `Lower: 4.23/2.26 4.23/2.26 0: f0->f1, Arg_0: 1 {O(1)} 4.23/2.26 4.23/2.26 0: f0->f1, Arg_1: Arg_1 {O(n)} 4.23/2.26 4.23/2.26 1: f1->f1, Arg_0: 1 {O(1)} 4.23/2.26 4.23/2.26 1: f1->f1, Arg_1: -(Arg_0) {O(n)} 4.23/2.26 4.23/2.26 `Upper: 4.23/2.26 4.23/2.26 0: f0->f1, Arg_0: Arg_0 {O(n)} 4.23/2.26 4.23/2.26 0: f0->f1, Arg_1: Arg_1 {O(n)} 4.23/2.26 4.23/2.26 1: f1->f1, Arg_0: Arg_0 {O(n)} 4.23/2.26 4.23/2.26 1: f1->f1, Arg_1: Arg_1 {O(n)} 4.23/2.26 4.23/2.26 4.23/2.26 ---------------------------------------- 4.23/2.26 4.23/2.26 (2) 4.23/2.26 BOUNDS(1, max(1, 1 + Arg_0 + Arg_1)) 4.23/2.26 4.23/2.26 ---------------------------------------- 4.23/2.26 4.23/2.26 (3) Loat Proof (FINISHED) 4.23/2.26 4.23/2.26 4.23/2.26 ### Pre-processing the ITS problem ### 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Initial linear ITS problem 4.23/2.26 4.23/2.26 Start location: f0 4.23/2.26 4.23/2.26 0: f0 -> f1 : [ A>=1 ], cost: 1 4.23/2.26 4.23/2.26 1: f1 -> f1 : B'=-A+B, [ A>=1 && B>=0 ], cost: 1 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 ### Simplification by acceleration and chaining ### 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Accelerating simple loops of location 1. 4.23/2.26 4.23/2.26 Accelerating the following rules: 4.23/2.26 4.23/2.26 1: f1 -> f1 : B'=-A+B, [ A>=1 && B>=0 ], cost: 1 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Accelerated rule 1 with backward acceleration, yielding the new rule 2. 4.23/2.26 4.23/2.26 Removing the simple loops: 1. 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Accelerated all simple loops using metering functions (where possible): 4.23/2.26 4.23/2.26 Start location: f0 4.23/2.26 4.23/2.26 0: f0 -> f1 : [ A>=1 ], cost: 1 4.23/2.26 4.23/2.26 2: f1 -> f1 : B'=-k*A+B, [ A>=1 && B>=0 && k>0 && -(-1+k)*A+B>=0 ], cost: k 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Chained accelerated rules (with incoming rules): 4.23/2.26 4.23/2.26 Start location: f0 4.23/2.26 4.23/2.26 0: f0 -> f1 : [ A>=1 ], cost: 1 4.23/2.26 4.23/2.26 3: f0 -> f1 : B'=-k*A+B, [ A>=1 && B>=0 && k>0 && -(-1+k)*A+B>=0 ], cost: 1+k 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Removed unreachable locations (and leaf rules with constant cost): 4.23/2.26 4.23/2.26 Start location: f0 4.23/2.26 4.23/2.26 3: f0 -> f1 : B'=-k*A+B, [ A>=1 && B>=0 && k>0 && -(-1+k)*A+B>=0 ], cost: 1+k 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 ### Computing asymptotic complexity ### 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Fully simplified ITS problem 4.23/2.26 4.23/2.26 Start location: f0 4.23/2.26 4.23/2.26 3: f0 -> f1 : B'=-k*A+B, [ A>=1 && B>=0 && k>0 && -(-1+k)*A+B>=0 ], cost: 1+k 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Computing asymptotic complexity for rule 3 4.23/2.26 4.23/2.26 Solved the limit problem by the following transformations: 4.23/2.26 4.23/2.26 Created initial limit problem: 4.23/2.26 4.23/2.26 1+B (+/+!), 1-(-1+k)*A+B (+/+!), k (+/+!), 1+k (+), A (+/+!) [not solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 removing all constraints (solved by SMT) 4.23/2.26 4.23/2.26 resulting limit problem: [solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 applying transformation rule (C) using substitution {k==n,A==1,B==2*n} 4.23/2.26 4.23/2.26 resulting limit problem: 4.23/2.26 4.23/2.26 [solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Solved the limit problem by the following transformations: 4.23/2.26 4.23/2.26 Created initial limit problem: 4.23/2.26 4.23/2.26 1+B (+/+!), 1-(-1+k)*A+B (+/+!), k (+/+!), 1+k (+), A (+/+!) [not solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 applying transformation rule (C) using substitution {A==1} 4.23/2.26 4.23/2.26 resulting limit problem: 4.23/2.26 4.23/2.26 1 (+/+!), 2-k+B (+/+!), 1+B (+/+!), k (+/+!), 1+k (+) [not solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 applying transformation rule (B), deleting 1 (+/+!) 4.23/2.26 4.23/2.26 resulting limit problem: 4.23/2.26 4.23/2.26 2-k+B (+/+!), 1+B (+/+!), k (+/+!), 1+k (+) [not solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 removing all constraints (solved by SMT) 4.23/2.26 4.23/2.26 resulting limit problem: [solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 applying transformation rule (C) using substitution {k==n,B==n} 4.23/2.26 4.23/2.26 resulting limit problem: 4.23/2.26 4.23/2.26 [solved] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Solution: 4.23/2.26 4.23/2.26 k / n 4.23/2.26 4.23/2.26 A / 1 4.23/2.26 4.23/2.26 B / 2*n 4.23/2.26 4.23/2.26 Resulting cost 1+n has complexity: Poly(n^1) 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Found new complexity Poly(n^1). 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 Obtained the following overall complexity (w.r.t. the length of the input n): 4.23/2.26 4.23/2.26 Complexity: Poly(n^1) 4.23/2.26 4.23/2.26 Cpx degree: 1 4.23/2.26 4.23/2.26 Solved cost: 1+n 4.23/2.26 4.23/2.26 Rule cost: 1+k 4.23/2.26 4.23/2.26 Rule guard: [ A>=1 && B>=0 && k>0 && -(-1+k)*A+B>=0 ] 4.23/2.26 4.23/2.26 4.23/2.26 4.23/2.26 WORST_CASE(Omega(n^1),?) 4.23/2.26 4.23/2.26 4.23/2.26 ---------------------------------------- 4.23/2.26 4.23/2.26 (4) 4.23/2.26 BOUNDS(n^1, INF) 4.23/2.29 EOF