4.02/1.88 WORST_CASE(Omega(n^2), O(n^2)) 4.02/1.89 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 4.02/1.89 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.02/1.89 4.02/1.89 4.02/1.89 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^2, n^2). 4.02/1.89 4.02/1.89 (0) CpxIntTrs 4.02/1.89 (1) Koat Proof [FINISHED, 118 ms] 4.02/1.89 (2) BOUNDS(1, n^2) 4.02/1.89 (3) Loat Proof [FINISHED, 324 ms] 4.02/1.89 (4) BOUNDS(n^2, INF) 4.02/1.89 4.02/1.89 4.02/1.89 ---------------------------------------- 4.02/1.89 4.02/1.89 (0) 4.02/1.89 Obligation: 4.02/1.89 Complexity Int TRS consisting of the following rules: 4.02/1.89 l0(A, B, C, D) -> Com_1(l1(0, B, C, D)) :|: TRUE 4.02/1.89 l1(A, B, C, D) -> Com_1(l2(A, B, 0, 0)) :|: B >= 1 4.02/1.89 l2(A, B, C, D) -> Com_1(l2(A, B, C + 1, D + C)) :|: B >= C + 1 4.02/1.89 l2(A, B, C, D) -> Com_1(l1(A + D, B - 1, C, D)) :|: C >= B 4.02/1.89 4.02/1.89 The start-symbols are:[l0_4] 4.02/1.89 4.02/1.89 4.02/1.89 ---------------------------------------- 4.02/1.89 4.02/1.89 (1) Koat Proof (FINISHED) 4.02/1.89 YES(?, 8*ar_1 + 2*ar_1^2 + 7) 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Initial complexity problem: 4.02/1.89 4.02/1.89 1: T: 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3)) 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 4.02/1.89 4.02/1.89 start location: koat_start 4.02/1.89 4.02/1.89 leaf cost: 0 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Repeatedly propagating knowledge in problem 1 produces the following problem: 4.02/1.89 4.02/1.89 2: T: 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 1) l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3)) 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 4.02/1.89 4.02/1.89 start location: koat_start 4.02/1.89 4.02/1.89 leaf cost: 0 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 A polynomial rank function with 4.02/1.89 4.02/1.89 Pol(l0) = V_2 + 1 4.02/1.89 4.02/1.89 Pol(l1) = V_2 + 1 4.02/1.89 4.02/1.89 Pol(l2) = V_2 4.02/1.89 4.02/1.89 Pol(koat_start) = V_2 + 1 4.02/1.89 4.02/1.89 orients all transitions weakly and the transition 4.02/1.89 4.02/1.89 l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 strictly and produces the following problem: 4.02/1.89 4.02/1.89 3: T: 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 1) l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3)) 4.02/1.89 4.02/1.89 (Comp: ar_1 + 1, Cost: 1) l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 4.02/1.89 4.02/1.89 start location: koat_start 4.02/1.89 4.02/1.89 leaf cost: 0 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 A polynomial rank function with 4.02/1.89 4.02/1.89 Pol(l2) = 1 4.02/1.89 4.02/1.89 Pol(l1) = 0 4.02/1.89 4.02/1.89 and size complexities 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-0) = ar_0 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-1) = ar_1 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-2) = ar_2 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-3) = ar_3 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-1) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-2) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-3) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-1) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-2) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-3) = ? 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-1) = ? 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-2) = 0 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-3) = 0 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-0) = 0 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-1) = ar_1 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-2) = ar_2 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-3) = ar_3 4.02/1.89 4.02/1.89 orients the transitions 4.02/1.89 4.02/1.89 l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 weakly and the transition 4.02/1.89 4.02/1.89 l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 strictly and produces the following problem: 4.02/1.89 4.02/1.89 4: T: 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 1) l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3)) 4.02/1.89 4.02/1.89 (Comp: ar_1 + 1, Cost: 1) l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 (Comp: ?, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 (Comp: ar_1 + 1, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 4.02/1.89 4.02/1.89 start location: koat_start 4.02/1.89 4.02/1.89 leaf cost: 0 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 A polynomial rank function with 4.02/1.89 4.02/1.89 Pol(l2) = V_2 - V_3 4.02/1.89 4.02/1.89 and size complexities 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-0) = ar_0 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-1) = ar_1 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-2) = ar_2 4.02/1.89 4.02/1.89 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-3) = ar_3 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-1) = 2*ar_1 + 4 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-2) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ]", 0-3) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-1) = 2*ar_1 + 4 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-2) = ? 4.02/1.89 4.02/1.89 S("l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ]", 0-3) = ? 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-0) = ? 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-1) = 2*ar_1 + 4 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-2) = 0 4.02/1.89 4.02/1.89 S("l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ]", 0-3) = 0 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-0) = 0 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-1) = ar_1 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-2) = ar_2 4.02/1.89 4.02/1.89 S("l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3))", 0-3) = ar_3 4.02/1.89 4.02/1.89 orients the transitions 4.02/1.89 4.02/1.89 l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 weakly and the transition 4.02/1.89 4.02/1.89 l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 strictly and produces the following problem: 4.02/1.89 4.02/1.89 5: T: 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 1) l0(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(0, ar_1, ar_2, ar_3)) 4.02/1.89 4.02/1.89 (Comp: ar_1 + 1, Cost: 1) l1(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, 0, 0)) [ ar_1 >= 1 ] 4.02/1.89 4.02/1.89 (Comp: 2*ar_1^2 + 6*ar_1 + 4, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l2(ar_0, ar_1, ar_2 + 1, ar_3 + ar_2)) [ ar_1 >= ar_2 + 1 ] 4.02/1.89 4.02/1.89 (Comp: ar_1 + 1, Cost: 1) l2(ar_0, ar_1, ar_2, ar_3) -> Com_1(l1(ar_0 + ar_3, ar_1 - 1, ar_2, ar_3)) [ ar_2 >= ar_1 ] 4.02/1.89 4.02/1.89 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(l0(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 4.02/1.89 4.02/1.89 start location: koat_start 4.02/1.89 4.02/1.89 leaf cost: 0 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Complexity upper bound 8*ar_1 + 2*ar_1^2 + 7 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Time: 0.132 sec (SMT: 0.124 sec) 4.02/1.89 4.02/1.89 4.02/1.89 ---------------------------------------- 4.02/1.89 4.02/1.89 (2) 4.02/1.89 BOUNDS(1, n^2) 4.02/1.89 4.02/1.89 ---------------------------------------- 4.02/1.89 4.02/1.89 (3) Loat Proof (FINISHED) 4.02/1.89 4.02/1.89 4.02/1.89 ### Pre-processing the ITS problem ### 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Initial linear ITS problem 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 1: l1 -> l2 : C'=0, D'=0, [ B>=1 ], cost: 1 4.02/1.89 4.02/1.89 2: l2 -> l2 : C'=1+C, D'=C+D, [ B>=1+C ], cost: 1 4.02/1.89 4.02/1.89 3: l2 -> l1 : A'=D+A, B'=-1+B, [ C>=B ], cost: 1 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 ### Simplification by acceleration and chaining ### 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerating simple loops of location 2. 4.02/1.89 4.02/1.89 Accelerating the following rules: 4.02/1.89 4.02/1.89 2: l2 -> l2 : C'=1+C, D'=C+D, [ B>=1+C ], cost: 1 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerated rule 2 with metering function -C+B, yielding the new rule 4. 4.02/1.89 4.02/1.89 Removing the simple loops: 2. 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerated all simple loops using metering functions (where possible): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 1: l1 -> l2 : C'=0, D'=0, [ B>=1 ], cost: 1 4.02/1.89 4.02/1.89 3: l2 -> l1 : A'=D+A, B'=-1+B, [ C>=B ], cost: 1 4.02/1.89 4.02/1.89 4: l2 -> l2 : C'=B, D'=-1-1/2*C-C*(C-B)+1/2*(C-B)^2+D+1/2*B, [ B>=1+C ], cost: -C+B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Chained accelerated rules (with incoming rules): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 1: l1 -> l2 : C'=0, D'=0, [ B>=1 ], cost: 1 4.02/1.89 4.02/1.89 5: l1 -> l2 : C'=B, D'=-1+1/2*B^2+1/2*B, [ B>=1 ], cost: 1+B 4.02/1.89 4.02/1.89 3: l2 -> l1 : A'=D+A, B'=-1+B, [ C>=B ], cost: 1 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Eliminated locations (on tree-shaped paths): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 6: l1 -> l1 : A'=-1+1/2*B^2+A+1/2*B, B'=-1+B, C'=B, D'=-1+1/2*B^2+1/2*B, [ B>=1 ], cost: 2+B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerating simple loops of location 1. 4.02/1.89 4.02/1.89 Accelerating the following rules: 4.02/1.89 4.02/1.89 6: l1 -> l1 : A'=-1+1/2*B^2+A+1/2*B, B'=-1+B, C'=B, D'=-1+1/2*B^2+1/2*B, [ B>=1 ], cost: 2+B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerated rule 6 with metering function B, yielding the new rule 7. 4.02/1.89 4.02/1.89 Removing the simple loops: 6. 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Accelerated all simple loops using metering functions (where possible): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 7: l1 -> l1 : A'=1+1/6*B^3+A-7/6*B, B'=0, C'=1, D'=0, [ B>=1 ], cost: 1/2*B^2+5/2*B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Chained accelerated rules (with incoming rules): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 0: l0 -> l1 : A'=0, [], cost: 1 4.02/1.89 4.02/1.89 8: l0 -> l1 : A'=1+1/6*B^3-7/6*B, B'=0, C'=1, D'=0, [ B>=1 ], cost: 1+1/2*B^2+5/2*B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Removed unreachable locations (and leaf rules with constant cost): 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 8: l0 -> l1 : A'=1+1/6*B^3-7/6*B, B'=0, C'=1, D'=0, [ B>=1 ], cost: 1+1/2*B^2+5/2*B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 ### Computing asymptotic complexity ### 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Fully simplified ITS problem 4.02/1.89 4.02/1.89 Start location: l0 4.02/1.89 4.02/1.89 8: l0 -> l1 : A'=1+1/6*B^3-7/6*B, B'=0, C'=1, D'=0, [ B>=1 ], cost: 1+1/2*B^2+5/2*B 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Computing asymptotic complexity for rule 8 4.02/1.89 4.02/1.89 Solved the limit problem by the following transformations: 4.02/1.89 4.02/1.89 Created initial limit problem: 4.02/1.89 4.02/1.89 1+1/2*B^2+5/2*B (+), B (+/+!) [not solved] 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 removing all constraints (solved by SMT) 4.02/1.89 4.02/1.89 resulting limit problem: [solved] 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 applying transformation rule (C) using substitution {B==n} 4.02/1.89 4.02/1.89 resulting limit problem: 4.02/1.89 4.02/1.89 [solved] 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Solution: 4.02/1.89 4.02/1.89 B / n 4.02/1.89 4.02/1.89 Resulting cost 1+5/2*n+1/2*n^2 has complexity: Poly(n^2) 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Found new complexity Poly(n^2). 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 Obtained the following overall complexity (w.r.t. the length of the input n): 4.02/1.89 4.02/1.89 Complexity: Poly(n^2) 4.02/1.89 4.02/1.89 Cpx degree: 2 4.02/1.89 4.02/1.89 Solved cost: 1+5/2*n+1/2*n^2 4.02/1.89 4.02/1.89 Rule cost: 1+1/2*B^2+5/2*B 4.02/1.89 4.02/1.89 Rule guard: [ B>=1 ] 4.02/1.89 4.02/1.89 4.02/1.89 4.02/1.89 WORST_CASE(Omega(n^2),?) 4.02/1.89 4.02/1.89 4.02/1.89 ---------------------------------------- 4.02/1.89 4.02/1.89 (4) 4.02/1.89 BOUNDS(n^2, INF) 4.02/1.91 EOF