3.74/1.87 WORST_CASE(Omega(n^1), O(n^1)) 3.74/1.88 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 3.74/1.88 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.74/1.88 3.74/1.88 3.74/1.88 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). 3.74/1.88 3.74/1.88 (0) CpxIntTrs 3.74/1.88 (1) Koat Proof [FINISHED, 26 ms] 3.74/1.88 (2) BOUNDS(1, n^1) 3.74/1.88 (3) Loat Proof [FINISHED, 220 ms] 3.74/1.88 (4) BOUNDS(n^1, INF) 3.74/1.88 3.74/1.88 3.74/1.88 ---------------------------------------- 3.74/1.88 3.74/1.88 (0) 3.74/1.88 Obligation: 3.74/1.88 Complexity Int TRS consisting of the following rules: 3.74/1.88 f300(A, B, C) -> Com_1(f300(-(1) + A, -(2) + A, C)) :|: A >= 1 && B + A >= 1 && B >= 1 3.74/1.88 f300(A, B, C) -> Com_1(f1(A, B, D)) :|: A >= 1 && 0 >= B + A && B >= 1 3.74/1.88 f300(A, B, C) -> Com_1(f1(A, B, D)) :|: B >= 1 && 0 >= A 3.74/1.88 f300(A, B, C) -> Com_1(f1(A, B, D)) :|: 0 >= B 3.74/1.88 f2(A, B, C) -> Com_1(f300(A, B, C)) :|: TRUE 3.74/1.88 3.74/1.88 The start-symbols are:[f2_3] 3.74/1.88 3.74/1.88 3.74/1.88 ---------------------------------------- 3.74/1.88 3.74/1.88 (1) Koat Proof (FINISHED) 3.74/1.88 YES(?, ar_0 + 3) 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Initial complexity problem: 3.74/1.88 3.74/1.88 1: T: 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_0 >= 1 /\ 0 >= ar_1 + ar_0 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_1 >= 1 /\ 0 >= ar_0 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f2(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0, ar_1, ar_2)) 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f2(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 3.74/1.88 3.74/1.88 start location: koat_start 3.74/1.88 3.74/1.88 leaf cost: 0 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Testing for reachability in the complexity graph removes the following transition from problem 1: 3.74/1.88 3.74/1.88 f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_0 >= 1 /\ 0 >= ar_1 + ar_0 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 We thus obtain the following problem: 3.74/1.88 3.74/1.88 2: T: 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_1 >= 1 /\ 0 >= ar_0 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f2(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0, ar_1, ar_2)) 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f2(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 3.74/1.88 3.74/1.88 start location: koat_start 3.74/1.88 3.74/1.88 leaf cost: 0 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Repeatedly propagating knowledge in problem 2 produces the following problem: 3.74/1.88 3.74/1.88 3: T: 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_1 >= 1 /\ 0 >= ar_0 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f2(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0, ar_1, ar_2)) 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f2(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 3.74/1.88 3.74/1.88 start location: koat_start 3.74/1.88 3.74/1.88 leaf cost: 0 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 A polynomial rank function with 3.74/1.88 3.74/1.88 Pol(f300) = 1 3.74/1.88 3.74/1.88 Pol(f1) = 0 3.74/1.88 3.74/1.88 Pol(f2) = 1 3.74/1.88 3.74/1.88 Pol(koat_start) = 1 3.74/1.88 3.74/1.88 orients all transitions weakly and the transition 3.74/1.88 3.74/1.88 f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 strictly and produces the following problem: 3.74/1.88 3.74/1.88 4: T: 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_1 >= 1 /\ 0 >= ar_0 ] 3.74/1.88 3.74/1.88 (Comp: ?, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f2(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0, ar_1, ar_2)) 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f2(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 3.74/1.88 3.74/1.88 start location: koat_start 3.74/1.88 3.74/1.88 leaf cost: 0 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 A polynomial rank function with 3.74/1.88 3.74/1.88 Pol(f300) = V_1 3.74/1.88 3.74/1.88 Pol(f1) = V_1 3.74/1.88 3.74/1.88 Pol(f2) = V_1 3.74/1.88 3.74/1.88 Pol(koat_start) = V_1 3.74/1.88 3.74/1.88 orients all transitions weakly and the transition 3.74/1.88 3.74/1.88 f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 strictly and produces the following problem: 3.74/1.88 3.74/1.88 5: T: 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ 0 >= ar_1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f1(ar_0, ar_1, d)) [ ar_1 >= 1 /\ 0 >= ar_0 ] 3.74/1.88 3.74/1.88 (Comp: ar_0, Cost: 1) f300(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0 - 1, ar_0 - 2, ar_2)) [ ar_0 >= 1 /\ ar_1 + ar_0 >= 1 /\ ar_1 >= 1 ] 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 1) f2(ar_0, ar_1, ar_2) -> Com_1(f300(ar_0, ar_1, ar_2)) 3.74/1.88 3.74/1.88 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f2(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 3.74/1.88 3.74/1.88 start location: koat_start 3.74/1.88 3.74/1.88 leaf cost: 0 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Complexity upper bound ar_0 + 3 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Time: 0.071 sec (SMT: 0.066 sec) 3.74/1.88 3.74/1.88 3.74/1.88 ---------------------------------------- 3.74/1.88 3.74/1.88 (2) 3.74/1.88 BOUNDS(1, n^1) 3.74/1.88 3.74/1.88 ---------------------------------------- 3.74/1.88 3.74/1.88 (3) Loat Proof (FINISHED) 3.74/1.88 3.74/1.88 3.74/1.88 ### Pre-processing the ITS problem ### 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Initial linear ITS problem 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 0: f300 -> f300 : A'=-1+A, B'=-2+A, [ A>=1 && A+B>=1 && B>=1 ], cost: 1 3.74/1.88 3.74/1.88 1: f300 -> f1 : C'=free, [ A>=1 && 0>=A+B && B>=1 ], cost: 1 3.74/1.88 3.74/1.88 2: f300 -> f1 : C'=free_1, [ B>=1 && 0>=A ], cost: 1 3.74/1.88 3.74/1.88 3: f300 -> f1 : C'=free_2, [ 0>=B ], cost: 1 3.74/1.88 3.74/1.88 4: f2 -> f300 : [], cost: 1 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Removed unreachable and leaf rules: 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 0: f300 -> f300 : A'=-1+A, B'=-2+A, [ A>=1 && A+B>=1 && B>=1 ], cost: 1 3.74/1.88 3.74/1.88 4: f2 -> f300 : [], cost: 1 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 ### Simplification by acceleration and chaining ### 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Accelerating simple loops of location 0. 3.74/1.88 3.74/1.88 Accelerating the following rules: 3.74/1.88 3.74/1.88 0: f300 -> f300 : A'=-1+A, B'=-2+A, [ A>=1 && A+B>=1 && B>=1 ], cost: 1 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Accelerated rule 0 with backward acceleration, yielding the new rule 5. 3.74/1.88 3.74/1.88 Accelerated rule 0 with backward acceleration, yielding the new rule 6. 3.74/1.88 3.74/1.88 Accelerated rule 0 with backward acceleration, yielding the new rule 7. 3.74/1.88 3.74/1.88 Removing the simple loops: 0. 3.74/1.88 3.74/1.88 Also removing duplicate rules:. 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Accelerated all simple loops using metering functions (where possible): 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 6: f300 -> f300 : A'=0, B'=-1, [ 0>=1 ], cost: A 3.74/1.88 3.74/1.88 7: f300 -> f300 : A'=1, B'=0, [ A+B>=1 && B>=1 && -1+A>0 ], cost: -1+A 3.74/1.88 3.74/1.88 4: f2 -> f300 : [], cost: 1 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Chained accelerated rules (with incoming rules): 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 4: f2 -> f300 : [], cost: 1 3.74/1.88 3.74/1.88 8: f2 -> f300 : A'=1, B'=0, [ A+B>=1 && B>=1 && -1+A>0 ], cost: A 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Removed unreachable locations (and leaf rules with constant cost): 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 8: f2 -> f300 : A'=1, B'=0, [ A+B>=1 && B>=1 && -1+A>0 ], cost: A 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 ### Computing asymptotic complexity ### 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Fully simplified ITS problem 3.74/1.88 3.74/1.88 Start location: f2 3.74/1.88 3.74/1.88 8: f2 -> f300 : A'=1, B'=0, [ A+B>=1 && B>=1 && -1+A>0 ], cost: A 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Computing asymptotic complexity for rule 8 3.74/1.88 3.74/1.88 Simplified the guard: 3.74/1.88 3.74/1.88 8: f2 -> f300 : A'=1, B'=0, [ B>=1 && -1+A>0 ], cost: A 3.74/1.88 3.74/1.88 Solved the limit problem by the following transformations: 3.74/1.88 3.74/1.88 Created initial limit problem: 3.74/1.88 3.74/1.88 -1+A (+/+!), A (+), B (+/+!) [not solved] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 applying transformation rule (C) using substitution {B==1} 3.74/1.88 3.74/1.88 resulting limit problem: 3.74/1.88 3.74/1.88 1 (+/+!), -1+A (+/+!), A (+) [not solved] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 applying transformation rule (B), deleting 1 (+/+!) 3.74/1.88 3.74/1.88 resulting limit problem: 3.74/1.88 3.74/1.88 -1+A (+/+!), A (+) [not solved] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 removing all constraints (solved by SMT) 3.74/1.88 3.74/1.88 resulting limit problem: [solved] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 applying transformation rule (C) using substitution {A==n} 3.74/1.88 3.74/1.88 resulting limit problem: 3.74/1.88 3.74/1.88 [solved] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Solution: 3.74/1.88 3.74/1.88 A / n 3.74/1.88 3.74/1.88 B / 1 3.74/1.88 3.74/1.88 Resulting cost n has complexity: Poly(n^1) 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Found new complexity Poly(n^1). 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 Obtained the following overall complexity (w.r.t. the length of the input n): 3.74/1.88 3.74/1.88 Complexity: Poly(n^1) 3.74/1.88 3.74/1.88 Cpx degree: 1 3.74/1.88 3.74/1.88 Solved cost: n 3.74/1.88 3.74/1.88 Rule cost: A 3.74/1.88 3.74/1.88 Rule guard: [ B>=1 && -1+A>0 ] 3.74/1.88 3.74/1.88 3.74/1.88 3.74/1.88 WORST_CASE(Omega(n^1),?) 3.74/1.88 3.74/1.88 3.74/1.88 ---------------------------------------- 3.74/1.88 3.74/1.88 (4) 3.74/1.88 BOUNDS(n^1, INF) 3.93/1.90 EOF