4.95/2.39 WORST_CASE(Omega(n^1), O(n^1)) 4.95/2.40 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 4.95/2.40 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.95/2.40 4.95/2.40 4.95/2.40 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(1, 1 + Arg_0 + -1 * Arg_1) + nat(Arg_0 + -1 * Arg_0 * Arg_1 + -1 * Arg_2 * Arg_0 + Arg_0^2 + Arg_2 * Arg_1 + -1 * Arg_2) + nat(Arg_0 + -1 * Arg_2) + nat(Arg_0 + -1 * Arg_1) + nat(1 + Arg_0 + -1 * Arg_1)). 4.95/2.40 4.95/2.40 (0) CpxIntTrs 4.95/2.40 (1) Loat Proof [FINISHED, 654 ms] 4.95/2.40 (2) BOUNDS(n^1, INF) 4.95/2.40 4.95/2.40 4.95/2.40 ---------------------------------------- 4.95/2.40 4.95/2.40 (0) 4.95/2.40 Obligation: 4.95/2.40 Complexity Int TRS consisting of the following rules: 4.95/2.40 eval1(A, B, C) -> Com_1(eval2(A, B, C)) :|: A >= B + 1 4.95/2.40 eval2(A, B, C) -> Com_1(eval1(A, B + 1, C)) :|: A >= C + 1 4.95/2.40 eval2(A, B, C) -> Com_1(eval1(A, B, C + 1)) :|: A >= C + 1 4.95/2.40 eval2(A, B, C) -> Com_1(eval1(A - 1, B, C)) :|: C >= A 4.95/2.40 start(A, B, C) -> Com_1(eval1(A, B, C)) :|: TRUE 4.95/2.40 4.95/2.40 The start-symbols are:[start_3] 4.95/2.40 4.95/2.40 4.95/2.40 ---------------------------------------- 4.95/2.40 4.95/2.40 (1) Loat Proof (FINISHED) 4.95/2.40 4.95/2.40 4.95/2.40 ### Pre-processing the ITS problem ### 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Initial linear ITS problem 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 0: eval1 -> eval2 : [ A>=1+B ], cost: 1 4.95/2.40 4.95/2.40 1: eval2 -> eval1 : B'=1+B, [ A>=1+C ], cost: 1 4.95/2.40 4.95/2.40 2: eval2 -> eval1 : C'=1+C, [ A>=1+C ], cost: 1 4.95/2.40 4.95/2.40 3: eval2 -> eval1 : A'=-1+A, [ C>=A ], cost: 1 4.95/2.40 4.95/2.40 4: start -> eval1 : [], cost: 1 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 ### Simplification by acceleration and chaining ### 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Eliminated locations (on tree-shaped paths): 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 5: eval1 -> eval1 : B'=1+B, [ A>=1+B && A>=1+C ], cost: 2 4.95/2.40 4.95/2.40 6: eval1 -> eval1 : C'=1+C, [ A>=1+B && A>=1+C ], cost: 2 4.95/2.40 4.95/2.40 7: eval1 -> eval1 : A'=-1+A, [ A>=1+B && C>=A ], cost: 2 4.95/2.40 4.95/2.40 4: start -> eval1 : [], cost: 1 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Accelerating simple loops of location 0. 4.95/2.40 4.95/2.40 Accelerating the following rules: 4.95/2.40 4.95/2.40 5: eval1 -> eval1 : B'=1+B, [ A>=1+B && A>=1+C ], cost: 2 4.95/2.40 4.95/2.40 6: eval1 -> eval1 : C'=1+C, [ A>=1+B && A>=1+C ], cost: 2 4.95/2.40 4.95/2.40 7: eval1 -> eval1 : A'=-1+A, [ A>=1+B && C>=A ], cost: 2 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Accelerated rule 5 with metering function A-B, yielding the new rule 8. 4.95/2.40 4.95/2.40 Accelerated rule 6 with metering function -C+A, yielding the new rule 9. 4.95/2.40 4.95/2.40 Accelerated rule 7 with metering function A-B, yielding the new rule 10. 4.95/2.40 4.95/2.40 Removing the simple loops: 5 6 7. 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Accelerated all simple loops using metering functions (where possible): 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 8: eval1 -> eval1 : B'=A, [ A>=1+B && A>=1+C ], cost: 2*A-2*B 4.95/2.40 4.95/2.40 9: eval1 -> eval1 : C'=A, [ A>=1+B && A>=1+C ], cost: -2*C+2*A 4.95/2.40 4.95/2.40 10: eval1 -> eval1 : A'=B, [ A>=1+B && C>=A ], cost: 2*A-2*B 4.95/2.40 4.95/2.40 4: start -> eval1 : [], cost: 1 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Chained accelerated rules (with incoming rules): 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 4: start -> eval1 : [], cost: 1 4.95/2.40 4.95/2.40 11: start -> eval1 : B'=A, [ A>=1+B && A>=1+C ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 12: start -> eval1 : C'=A, [ A>=1+B && A>=1+C ], cost: 1-2*C+2*A 4.95/2.40 4.95/2.40 13: start -> eval1 : A'=B, [ A>=1+B && C>=A ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Removed unreachable locations (and leaf rules with constant cost): 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 11: start -> eval1 : B'=A, [ A>=1+B && A>=1+C ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 12: start -> eval1 : C'=A, [ A>=1+B && A>=1+C ], cost: 1-2*C+2*A 4.95/2.40 4.95/2.40 13: start -> eval1 : A'=B, [ A>=1+B && C>=A ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 ### Computing asymptotic complexity ### 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Fully simplified ITS problem 4.95/2.40 4.95/2.40 Start location: start 4.95/2.40 4.95/2.40 11: start -> eval1 : B'=A, [ A>=1+B && A>=1+C ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 12: start -> eval1 : C'=A, [ A>=1+B && A>=1+C ], cost: 1-2*C+2*A 4.95/2.40 4.95/2.40 13: start -> eval1 : A'=B, [ A>=1+B && C>=A ], cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Computing asymptotic complexity for rule 11 4.95/2.40 4.95/2.40 Solved the limit problem by the following transformations: 4.95/2.40 4.95/2.40 Created initial limit problem: 4.95/2.40 4.95/2.40 -C+A (+/+!), A-B (+/+!), 1+2*A-2*B (+) [not solved] 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 removing all constraints (solved by SMT) 4.95/2.40 4.95/2.40 resulting limit problem: [solved] 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 applying transformation rule (C) using substitution {C==0,A==1,B==-n} 4.95/2.40 4.95/2.40 resulting limit problem: 4.95/2.40 4.95/2.40 [solved] 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Solution: 4.95/2.40 4.95/2.40 C / 0 4.95/2.40 4.95/2.40 A / 1 4.95/2.40 4.95/2.40 B / -n 4.95/2.40 4.95/2.40 Resulting cost 3+2*n has complexity: Poly(n^1) 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Found new complexity Poly(n^1). 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 Obtained the following overall complexity (w.r.t. the length of the input n): 4.95/2.40 4.95/2.40 Complexity: Poly(n^1) 4.95/2.40 4.95/2.40 Cpx degree: 1 4.95/2.40 4.95/2.40 Solved cost: 3+2*n 4.95/2.40 4.95/2.40 Rule cost: 1+2*A-2*B 4.95/2.40 4.95/2.40 Rule guard: [ A>=1+B && A>=1+C ] 4.95/2.40 4.95/2.40 4.95/2.40 4.95/2.40 WORST_CASE(Omega(n^1),?) 4.95/2.40 4.95/2.40 4.95/2.40 ---------------------------------------- 4.95/2.40 4.95/2.40 (2) 4.95/2.40 BOUNDS(n^1, INF) 5.04/2.42 EOF