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