/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.koat /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^1)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(3, 5 + Arg_0) + max(1, 3 + Arg_0)). (0) CpxIntTrs (1) Koat2 Proof [FINISHED, 137 ms] (2) BOUNDS(1, max(3, 5 + Arg_0) + max(1, 3 + Arg_0)) (3) Loat Proof [FINISHED, 205 ms] (4) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: evaleasy2start(A) -> Com_1(evaleasy2entryin(A)) :|: TRUE evaleasy2entryin(A) -> Com_1(evaleasy2bb1in(A)) :|: TRUE evaleasy2bb1in(A) -> Com_1(evaleasy2bbin(A)) :|: A >= 1 evaleasy2bb1in(A) -> Com_1(evaleasy2returnin(A)) :|: 0 >= A evaleasy2bbin(A) -> Com_1(evaleasy2bb1in(A - 1)) :|: TRUE evaleasy2returnin(A) -> Com_1(evaleasy2stop(A)) :|: TRUE The start-symbols are:[evaleasy2start_1] ---------------------------------------- (1) Koat2 Proof (FINISHED) YES( ?, 3+max([0, 2+Arg_0])+max([1, 3+Arg_0]) {O(n)}) Initial Complexity Problem: Start: evaleasy2start Program_Vars: Arg_0 Temp_Vars: Locations: evaleasy2bb1in, evaleasy2bbin, evaleasy2entryin, evaleasy2returnin, evaleasy2start, evaleasy2stop Transitions: 2: evaleasy2bb1in->evaleasy2bbin 3: evaleasy2bb1in->evaleasy2returnin 4: evaleasy2bbin->evaleasy2bb1in 1: evaleasy2entryin->evaleasy2bb1in 5: evaleasy2returnin->evaleasy2stop 0: evaleasy2start->evaleasy2entryin Timebounds: Overall timebound: 3+max([0, 2+Arg_0])+max([1, 3+Arg_0]) {O(n)} 2: evaleasy2bb1in->evaleasy2bbin: max([0, 2+Arg_0]) {O(n)} 3: evaleasy2bb1in->evaleasy2returnin: 1 {O(1)} 4: evaleasy2bbin->evaleasy2bb1in: max([0, 2+Arg_0]) {O(n)} 1: evaleasy2entryin->evaleasy2bb1in: 1 {O(1)} 5: evaleasy2returnin->evaleasy2stop: 1 {O(1)} 0: evaleasy2start->evaleasy2entryin: 1 {O(1)} Costbounds: Overall costbound: 3+max([0, 2+Arg_0])+max([1, 3+Arg_0]) {O(n)} 2: evaleasy2bb1in->evaleasy2bbin: max([0, 2+Arg_0]) {O(n)} 3: evaleasy2bb1in->evaleasy2returnin: 1 {O(1)} 4: evaleasy2bbin->evaleasy2bb1in: max([0, 2+Arg_0]) {O(n)} 1: evaleasy2entryin->evaleasy2bb1in: 1 {O(1)} 5: evaleasy2returnin->evaleasy2stop: 1 {O(1)} 0: evaleasy2start->evaleasy2entryin: 1 {O(1)} Sizebounds: `Lower: 2: evaleasy2bb1in->evaleasy2bbin, Arg_0: 1 {O(1)} 3: evaleasy2bb1in->evaleasy2returnin, Arg_0: min([0, Arg_0]) {O(n)} 4: evaleasy2bbin->evaleasy2bb1in, Arg_0: 0 {O(1)} 1: evaleasy2entryin->evaleasy2bb1in, Arg_0: Arg_0 {O(n)} 5: evaleasy2returnin->evaleasy2stop, Arg_0: min([0, Arg_0]) {O(n)} 0: evaleasy2start->evaleasy2entryin, Arg_0: Arg_0 {O(n)} `Upper: 2: evaleasy2bb1in->evaleasy2bbin, Arg_0: Arg_0 {O(n)} 3: evaleasy2bb1in->evaleasy2returnin, Arg_0: 0 {O(1)} 4: evaleasy2bbin->evaleasy2bb1in, Arg_0: Arg_0 {O(n)} 1: evaleasy2entryin->evaleasy2bb1in, Arg_0: Arg_0 {O(n)} 5: evaleasy2returnin->evaleasy2stop, Arg_0: 0 {O(1)} 0: evaleasy2start->evaleasy2entryin, Arg_0: Arg_0 {O(n)} ---------------------------------------- (2) BOUNDS(1, max(3, 5 + Arg_0) + max(1, 3 + Arg_0)) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: evaleasy2start 0: evaleasy2start -> evaleasy2entryin : [], cost: 1 1: evaleasy2entryin -> evaleasy2bb1in : [], cost: 1 2: evaleasy2bb1in -> evaleasy2bbin : [ A>=1 ], cost: 1 3: evaleasy2bb1in -> evaleasy2returnin : [ 0>=A ], cost: 1 4: evaleasy2bbin -> evaleasy2bb1in : A'=-1+A, [], cost: 1 5: evaleasy2returnin -> evaleasy2stop : [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 0: evaleasy2start -> evaleasy2entryin : [], cost: 1 Removed unreachable and leaf rules: Start location: evaleasy2start 0: evaleasy2start -> evaleasy2entryin : [], cost: 1 1: evaleasy2entryin -> evaleasy2bb1in : [], cost: 1 2: evaleasy2bb1in -> evaleasy2bbin : [ A>=1 ], cost: 1 4: evaleasy2bbin -> evaleasy2bb1in : A'=-1+A, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: evaleasy2start 6: evaleasy2start -> evaleasy2bb1in : [], cost: 2 7: evaleasy2bb1in -> evaleasy2bb1in : A'=-1+A, [ A>=1 ], cost: 2 Accelerating simple loops of location 2. Accelerating the following rules: 7: evaleasy2bb1in -> evaleasy2bb1in : A'=-1+A, [ A>=1 ], cost: 2 Accelerated rule 7 with metering function A, yielding the new rule 8. Removing the simple loops: 7. Accelerated all simple loops using metering functions (where possible): Start location: evaleasy2start 6: evaleasy2start -> evaleasy2bb1in : [], cost: 2 8: evaleasy2bb1in -> evaleasy2bb1in : A'=0, [ A>=1 ], cost: 2*A Chained accelerated rules (with incoming rules): Start location: evaleasy2start 6: evaleasy2start -> evaleasy2bb1in : [], cost: 2 9: evaleasy2start -> evaleasy2bb1in : A'=0, [ A>=1 ], cost: 2+2*A Removed unreachable locations (and leaf rules with constant cost): Start location: evaleasy2start 9: evaleasy2start -> evaleasy2bb1in : A'=0, [ A>=1 ], cost: 2+2*A ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: evaleasy2start 9: evaleasy2start -> evaleasy2bb1in : A'=0, [ A>=1 ], cost: 2+2*A Computing asymptotic complexity for rule 9 Solved the limit problem by the following transformations: Created initial limit problem: A (+/+!), 2+2*A (+) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {A==n} resulting limit problem: [solved] Solution: A / n Resulting cost 2+2*n has complexity: Poly(n^1) Found new complexity Poly(n^1). Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Poly(n^1) Cpx degree: 1 Solved cost: 2+2*n Rule cost: 2+2*A Rule guard: [ A>=1 ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (4) BOUNDS(n^1, INF)