4.67/2.43 WORST_CASE(Omega(n^1), O(n^1)) 4.67/2.44 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 4.67/2.44 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.67/2.44 4.67/2.44 4.67/2.44 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). 4.67/2.44 4.67/2.44 (0) CpxIntTrs 4.67/2.44 (1) Koat Proof [FINISHED, 87 ms] 4.67/2.44 (2) BOUNDS(1, n^1) 4.67/2.44 (3) Loat Proof [FINISHED, 489 ms] 4.67/2.44 (4) BOUNDS(n^1, INF) 4.67/2.44 4.67/2.44 4.67/2.44 ---------------------------------------- 4.67/2.44 4.67/2.44 (0) 4.67/2.44 Obligation: 4.67/2.44 Complexity Int TRS consisting of the following rules: 4.67/2.44 f0(A, B, C) -> Com_1(f3(-(A), B, C)) :|: TRUE 4.67/2.44 f3(A, B, C) -> Com_1(f7(0, D, C)) :|: A >= 0 && A <= 0 4.67/2.44 f4(A, B, C) -> Com_1(f7(0, D, C)) :|: A >= 0 && A <= 0 4.67/2.44 f6(A, B, C) -> Com_1(f4(A, B, 1)) :|: A >= 1 4.67/2.44 f3(A, B, C) -> Com_1(f4(-(1) - A, B, 1)) :|: 0 >= A + 1 && 0 >= C 4.67/2.44 f3(A, B, C) -> Com_1(f4(-(1) - A, B, 1)) :|: 0 >= A + 1 && C >= 2 4.67/2.44 f3(A, B, C) -> Com_1(f4(-(1) - A, B, 1)) :|: A >= 1 && 0 >= C 4.67/2.44 f3(A, B, C) -> Com_1(f4(-(1) - A, B, 1)) :|: A >= 1 && C >= 2 4.67/2.44 f4(A, B, C) -> Com_1(f3(1 - A, B, 0)) :|: 0 >= A + 1 && C >= 1 && C <= 1 4.67/2.44 f4(A, B, C) -> Com_1(f3(1 - A, B, 0)) :|: A >= 1 && C >= 1 && C <= 1 4.67/2.44 f5(A, B, C) -> Com_1(f3(1 - A, B, 0)) :|: 0 >= A + 1 && C >= 1 && C <= 1 4.67/2.44 f5(A, B, C) -> Com_1(f3(1 - A, B, 0)) :|: A >= 1 && C >= 1 && C <= 1 4.67/2.44 4.67/2.44 The start-symbols are:[f6_3] 4.67/2.44 4.67/2.44 4.67/2.44 ---------------------------------------- 4.67/2.44 4.67/2.44 (1) Koat Proof (FINISHED) 4.67/2.44 YES(?, 2*ar_0 + 3) 4.67/2.44 4.67/2.44 4.67/2.44 4.67/2.44 Initial complexity problem: 4.67/2.44 4.67/2.44 1: T: 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f0(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0, ar_1, ar_2)) 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f6(ar_0, ar_1, ar_2) -> Com_1(f4(ar_0, ar_1, 1)) [ ar_0 >= 1 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ ar_2 >= 2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ ar_0 >= 1 /\ 0 >= ar_2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ ar_0 >= 1 /\ ar_2 >= 2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ 0 >= ar_0 + 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f5(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ 0 >= ar_0 + 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f5(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f6(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 4.67/2.44 4.67/2.44 start location: koat_start 4.67/2.44 4.67/2.44 leaf cost: 0 4.67/2.44 4.67/2.44 4.67/2.44 4.67/2.44 Testing for reachability in the complexity graph removes the following transitions from problem 1: 4.67/2.44 4.67/2.44 f0(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0, ar_1, ar_2)) 4.67/2.44 4.67/2.44 f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ ar_2 >= 2 ] 4.67/2.44 4.67/2.44 f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ ar_0 >= 1 /\ 0 >= ar_2 ] 4.67/2.44 4.67/2.44 f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ ar_0 >= 1 /\ ar_2 >= 2 ] 4.67/2.44 4.67/2.44 f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ 0 >= ar_0 + 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 f5(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ 0 >= ar_0 + 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 f5(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 We thus obtain the following problem: 4.67/2.44 4.67/2.44 2: T: 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f6(ar_0, ar_1, ar_2) -> Com_1(f4(ar_0, ar_1, 1)) [ ar_0 >= 1 ] 4.67/2.44 4.67/2.44 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f6(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 4.67/2.44 4.67/2.44 start location: koat_start 4.67/2.44 4.67/2.44 leaf cost: 0 4.67/2.44 4.67/2.44 4.67/2.44 4.67/2.44 Repeatedly propagating knowledge in problem 2 produces the following problem: 4.67/2.44 4.67/2.44 3: T: 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.44 4.67/2.44 (Comp: 1, Cost: 1) f6(ar_0, ar_1, ar_2) -> Com_1(f4(ar_0, ar_1, 1)) [ ar_0 >= 1 ] 4.67/2.44 4.67/2.44 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f6(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 4.67/2.44 4.67/2.44 start location: koat_start 4.67/2.44 4.67/2.44 leaf cost: 0 4.67/2.44 4.67/2.44 4.67/2.44 4.67/2.44 A polynomial rank function with 4.67/2.44 4.67/2.44 Pol(f4) = 1 4.67/2.44 4.67/2.44 Pol(f7) = 0 4.67/2.44 4.67/2.44 Pol(f3) = 1 4.67/2.44 4.67/2.44 Pol(f6) = 1 4.67/2.44 4.67/2.44 Pol(koat_start) = 1 4.67/2.44 4.67/2.44 orients all transitions weakly and the transitions 4.67/2.44 4.67/2.44 f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.44 4.67/2.44 strictly and produces the following problem: 4.67/2.44 4.67/2.44 4: T: 4.67/2.44 4.67/2.44 (Comp: 1, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.45 4.67/2.45 (Comp: ?, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.45 4.67/2.45 (Comp: ?, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 1) f6(ar_0, ar_1, ar_2) -> Com_1(f4(ar_0, ar_1, 1)) [ ar_0 >= 1 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f6(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 4.67/2.45 4.67/2.45 start location: koat_start 4.67/2.45 4.67/2.45 leaf cost: 0 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 A polynomial rank function with 4.67/2.45 4.67/2.45 Pol(f4) = V_1 4.67/2.45 4.67/2.45 Pol(f7) = 0 4.67/2.45 4.67/2.45 Pol(f3) = -V_1 4.67/2.45 4.67/2.45 Pol(f6) = V_1 4.67/2.45 4.67/2.45 Pol(koat_start) = V_1 4.67/2.45 4.67/2.45 orients all transitions weakly and the transitions 4.67/2.45 4.67/2.45 f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.45 4.67/2.45 f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.45 4.67/2.45 strictly and produces the following problem: 4.67/2.45 4.67/2.45 5: T: 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.45 4.67/2.45 (Comp: ar_0, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f4(-ar_0 - 1, ar_1, 1)) [ 0 >= ar_0 + 1 /\ 0 >= ar_2 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 1) f3(ar_0, ar_1, ar_2) -> Com_1(f7(0, d, ar_2)) [ ar_0 = 0 ] 4.67/2.45 4.67/2.45 (Comp: ar_0, Cost: 1) f4(ar_0, ar_1, ar_2) -> Com_1(f3(-ar_0 + 1, ar_1, 0)) [ ar_0 >= 1 /\ ar_2 = 1 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 1) f6(ar_0, ar_1, ar_2) -> Com_1(f4(ar_0, ar_1, 1)) [ ar_0 >= 1 ] 4.67/2.45 4.67/2.45 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(f6(ar_0, ar_1, ar_2)) [ 0 <= 0 ] 4.67/2.45 4.67/2.45 start location: koat_start 4.67/2.45 4.67/2.45 leaf cost: 0 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Complexity upper bound 2*ar_0 + 3 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Time: 0.106 sec (SMT: 0.098 sec) 4.67/2.45 4.67/2.45 4.67/2.45 ---------------------------------------- 4.67/2.45 4.67/2.45 (2) 4.67/2.45 BOUNDS(1, n^1) 4.67/2.45 4.67/2.45 ---------------------------------------- 4.67/2.45 4.67/2.45 (3) Loat Proof (FINISHED) 4.67/2.45 4.67/2.45 4.67/2.45 ### Pre-processing the ITS problem ### 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Initial linear ITS problem 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 0: f0 -> f3 : A'=-A, [], cost: 1 4.67/2.45 4.67/2.45 1: f3 -> f7 : A'=0, B'=free, [ A==0 ], cost: 1 4.67/2.45 4.67/2.45 4: f3 -> f4 : A'=-1-A, C'=1, [ 0>=1+A && 0>=C ], cost: 1 4.67/2.45 4.67/2.45 5: f3 -> f4 : A'=-1-A, C'=1, [ 0>=1+A && C>=2 ], cost: 1 4.67/2.45 4.67/2.45 6: f3 -> f4 : A'=-1-A, C'=1, [ A>=1 && 0>=C ], cost: 1 4.67/2.45 4.67/2.45 7: f3 -> f4 : A'=-1-A, C'=1, [ A>=1 && C>=2 ], cost: 1 4.67/2.45 4.67/2.45 2: f4 -> f7 : A'=0, B'=free_1, [ A==0 ], cost: 1 4.67/2.45 4.67/2.45 8: f4 -> f3 : A'=1-A, C'=0, [ 0>=1+A && C==1 ], cost: 1 4.67/2.45 4.67/2.45 9: f4 -> f3 : A'=1-A, C'=0, [ A>=1 && C==1 ], cost: 1 4.67/2.45 4.67/2.45 3: f6 -> f4 : C'=1, [ A>=1 ], cost: 1 4.67/2.45 4.67/2.45 10: f5 -> f3 : A'=1-A, C'=0, [ 0>=1+A && C==1 ], cost: 1 4.67/2.45 4.67/2.45 11: f5 -> f3 : A'=1-A, C'=0, [ A>=1 && C==1 ], cost: 1 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Removed unreachable and leaf rules: 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 4: f3 -> f4 : A'=-1-A, C'=1, [ 0>=1+A && 0>=C ], cost: 1 4.67/2.45 4.67/2.45 5: f3 -> f4 : A'=-1-A, C'=1, [ 0>=1+A && C>=2 ], cost: 1 4.67/2.45 4.67/2.45 6: f3 -> f4 : A'=-1-A, C'=1, [ A>=1 && 0>=C ], cost: 1 4.67/2.45 4.67/2.45 7: f3 -> f4 : A'=-1-A, C'=1, [ A>=1 && C>=2 ], cost: 1 4.67/2.45 4.67/2.45 8: f4 -> f3 : A'=1-A, C'=0, [ 0>=1+A && C==1 ], cost: 1 4.67/2.45 4.67/2.45 9: f4 -> f3 : A'=1-A, C'=0, [ A>=1 && C==1 ], cost: 1 4.67/2.45 4.67/2.45 3: f6 -> f4 : C'=1, [ A>=1 ], cost: 1 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 ### Simplification by acceleration and chaining ### 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Eliminated locations (on tree-shaped paths): 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 12: f4 -> f4 : A'=-2+A, C'=1, [ 0>=1+A && C==1 ], cost: 2 4.67/2.45 4.67/2.45 13: f4 -> f4 : A'=-2+A, C'=1, [ C==1 && 0>=2-A ], cost: 2 4.67/2.45 4.67/2.45 3: f6 -> f4 : C'=1, [ A>=1 ], cost: 1 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Accelerating simple loops of location 2. 4.67/2.45 4.67/2.45 Accelerating the following rules: 4.67/2.45 4.67/2.45 12: f4 -> f4 : A'=-2+A, C'=1, [ 0>=1+A && C==1 ], cost: 2 4.67/2.45 4.67/2.45 13: f4 -> f4 : A'=-2+A, C'=1, [ C==1 && 0>=2-A ], cost: 2 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Accelerated rule 12 with NONTERM, yielding the new rule 14. 4.67/2.45 4.67/2.45 Accelerated rule 13 with metering function meter (where 2*meter==-1+A), yielding the new rule 15. 4.67/2.45 4.67/2.45 Removing the simple loops: 12 13. 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Accelerated all simple loops using metering functions (where possible): 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 14: f4 -> [6] : [ 0>=1+A && C==1 ], cost: INF 4.67/2.45 4.67/2.45 15: f4 -> f4 : A'=A-2*meter, C'=1, [ C==1 && 0>=2-A && 2*meter==-1+A && meter>=1 ], cost: 2*meter 4.67/2.45 4.67/2.45 3: f6 -> f4 : C'=1, [ A>=1 ], cost: 1 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Chained accelerated rules (with incoming rules): 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 3: f6 -> f4 : C'=1, [ A>=1 ], cost: 1 4.67/2.45 4.67/2.45 16: f6 -> f4 : A'=A-2*meter, C'=1, [ 0>=2-A && 2*meter==-1+A && meter>=1 ], cost: 1+2*meter 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Removed unreachable locations (and leaf rules with constant cost): 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 16: f6 -> f4 : A'=A-2*meter, C'=1, [ 0>=2-A && 2*meter==-1+A && meter>=1 ], cost: 1+2*meter 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 ### Computing asymptotic complexity ### 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Fully simplified ITS problem 4.67/2.45 4.67/2.45 Start location: f6 4.67/2.45 4.67/2.45 16: f6 -> f4 : A'=A-2*meter, C'=1, [ 0>=2-A && 2*meter==-1+A && meter>=1 ], cost: 1+2*meter 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Computing asymptotic complexity for rule 16 4.67/2.45 4.67/2.45 Solved the limit problem by the following transformations: 4.67/2.45 4.67/2.45 Created initial limit problem: 4.67/2.45 4.67/2.45 -1+A (+/+!), A-2*meter (+/+!), 1+2*meter (+), 2-A+2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (C) using substitution {A==1+2*meter} 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 1 (+/+!), 1+2*meter (+), 2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (B), deleting 1 (+/+!) 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 1+2*meter (+), 2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 removing all constraints (solved by SMT) 4.67/2.45 4.67/2.45 resulting limit problem: [solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (C) using substitution {meter==n} 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 [solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Solved the limit problem by the following transformations: 4.67/2.45 4.67/2.45 Created initial limit problem: 4.67/2.45 4.67/2.45 -1+A (+/+!), A-2*meter (+/+!), 1+2*meter (+), 2-A+2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (C) using substitution {A==1+2*meter} 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 1 (+/+!), 1+2*meter (+), 2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (B), deleting 1 (+/+!) 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 1+2*meter (+), 2*meter (+/+!) [not solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 removing all constraints (solved by SMT) 4.67/2.45 4.67/2.45 resulting limit problem: [solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 applying transformation rule (C) using substitution {meter==n} 4.67/2.45 4.67/2.45 resulting limit problem: 4.67/2.45 4.67/2.45 [solved] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Solution: 4.67/2.45 4.67/2.45 A / 1+2*n 4.67/2.45 4.67/2.45 meter / n 4.67/2.45 4.67/2.45 Resulting cost 1+2*n has complexity: Poly(n^1) 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Found new complexity Poly(n^1). 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 Obtained the following overall complexity (w.r.t. the length of the input n): 4.67/2.45 4.67/2.45 Complexity: Poly(n^1) 4.67/2.45 4.67/2.45 Cpx degree: 1 4.67/2.45 4.67/2.45 Solved cost: 1+2*n 4.67/2.45 4.67/2.45 Rule cost: 1+2*meter 4.67/2.45 4.67/2.45 Rule guard: [ 0>=2-A && 2*meter==-1+A ] 4.67/2.45 4.67/2.45 4.67/2.45 4.67/2.45 WORST_CASE(Omega(n^1),?) 4.67/2.45 4.67/2.45 4.67/2.45 ---------------------------------------- 4.67/2.45 4.67/2.45 (4) 4.67/2.45 BOUNDS(n^1, INF) 4.76/2.48 EOF