4.82/2.32 WORST_CASE(Omega(n^1), O(n^1)) 4.89/2.33 proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat 4.89/2.33 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.89/2.33 4.89/2.33 4.89/2.33 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). 4.89/2.33 4.89/2.33 (0) CpxIntTrs 4.89/2.33 (1) Koat Proof [FINISHED, 205 ms] 4.89/2.33 (2) BOUNDS(1, n^1) 4.89/2.33 (3) Loat Proof [FINISHED, 630 ms] 4.89/2.33 (4) BOUNDS(n^1, INF) 4.89/2.33 4.89/2.33 4.89/2.33 ---------------------------------------- 4.89/2.33 4.89/2.33 (0) 4.89/2.33 Obligation: 4.89/2.33 Complexity Int TRS consisting of the following rules: 4.89/2.33 evalwisestart(A, B) -> Com_1(evalwiseentryin(A, B)) :|: TRUE 4.89/2.33 evalwiseentryin(A, B) -> Com_1(evalwisereturnin(A, B)) :|: 0 >= A + 1 4.89/2.33 evalwiseentryin(A, B) -> Com_1(evalwisereturnin(A, B)) :|: 0 >= B + 1 4.89/2.33 evalwiseentryin(A, B) -> Com_1(evalwisebb6in(B, A)) :|: A >= 0 && B >= 0 4.89/2.33 evalwisebb6in(A, B) -> Com_1(evalwisebb3in(A, B)) :|: B >= A + 3 4.89/2.33 evalwisebb6in(A, B) -> Com_1(evalwisebb3in(A, B)) :|: A >= B + 3 4.89/2.33 evalwisebb6in(A, B) -> Com_1(evalwisereturnin(A, B)) :|: 2 + A >= B && 2 + B >= A 4.89/2.33 evalwisebb3in(A, B) -> Com_1(evalwisebb4in(A, B)) :|: A >= B + 1 4.89/2.33 evalwisebb3in(A, B) -> Com_1(evalwisebb5in(A, B)) :|: B >= A 4.89/2.33 evalwisebb4in(A, B) -> Com_1(evalwisebb6in(A, B + 1)) :|: TRUE 4.89/2.33 evalwisebb5in(A, B) -> Com_1(evalwisebb6in(A + 1, B)) :|: TRUE 4.89/2.33 evalwisereturnin(A, B) -> Com_1(evalwisestop(A, B)) :|: TRUE 4.89/2.33 4.89/2.33 The start-symbols are:[evalwisestart_2] 4.89/2.33 4.89/2.33 4.89/2.33 ---------------------------------------- 4.89/2.33 4.89/2.33 (1) Koat Proof (FINISHED) 4.89/2.33 YES(?, 18*ar_1 + 18*ar_0 + 20) 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Initial complexity problem: 4.89/2.33 4.89/2.33 1: T: 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Repeatedly propagating knowledge in problem 1 produces the following problem: 4.89/2.33 4.89/2.33 2: T: 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 A polynomial rank function with 4.89/2.33 4.89/2.33 Pol(evalwisestart) = 2 4.89/2.33 4.89/2.33 Pol(evalwiseentryin) = 2 4.89/2.33 4.89/2.33 Pol(evalwisereturnin) = 1 4.89/2.33 4.89/2.33 Pol(evalwisebb6in) = 2 4.89/2.33 4.89/2.33 Pol(evalwisebb3in) = 2 4.89/2.33 4.89/2.33 Pol(evalwisebb4in) = 2 4.89/2.33 4.89/2.33 Pol(evalwisebb5in) = 2 4.89/2.33 4.89/2.33 Pol(evalwisestop) = 0 4.89/2.33 4.89/2.33 Pol(koat_start) = 2 4.89/2.33 4.89/2.33 orients all transitions weakly and the transitions 4.89/2.33 4.89/2.33 evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 strictly and produces the following problem: 4.89/2.33 4.89/2.33 3: T: 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Applied AI with 'oct' on problem 3 to obtain the following invariants: 4.89/2.33 4.89/2.33 For symbol evalwisebb3in: X_2 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ X_1 >= 0 4.89/2.33 4.89/2.33 For symbol evalwisebb4in: X_1 - X_2 - 1 >= 0 /\ X_2 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ X_1 - 2 >= 0 4.89/2.33 4.89/2.33 For symbol evalwisebb5in: X_2 - 1 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ -X_1 + X_2 >= 0 /\ X_1 >= 0 4.89/2.33 4.89/2.33 For symbol evalwisebb6in: X_2 >= 0 /\ X_1 + X_2 >= 0 /\ X_1 >= 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 This yielded the following problem: 4.89/2.33 4.89/2.33 4: T: 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 >= 0 /\ ar_0 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 - 2 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 A polynomial rank function with 4.89/2.33 4.89/2.33 Pol(evalwisebb5in) = -3*V_1 + 3*V_2 + 1 4.89/2.33 4.89/2.33 Pol(evalwisebb6in) = -3*V_1 + 3*V_2 + 3 4.89/2.33 4.89/2.33 Pol(evalwisebb3in) = -3*V_1 + 3*V_2 + 2 4.89/2.33 4.89/2.33 and size complexities 4.89/2.33 4.89/2.33 S("evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1))", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1))", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\\ ar_1 >= 0 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\\ ar_1 >= 0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 + 3 ]", 0-0) = ? 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 + 3 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 3 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 3 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 + 2 >= ar_1 /\\ ar_1 + 2 >= ar_0 ]", 0-0) = ? 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 + 2 >= ar_1 /\\ ar_1 + 2 >= ar_0 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 1 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 1 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 ]", 0-0) = ? 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\\ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 - 2 >= 0 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\\ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 - 2 >= 0 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 ]", 0-0) = ? 4.89/2.33 4.89/2.33 S("evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1))", 0-0) = ? 4.89/2.33 4.89/2.33 S("evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1))", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 orients the transitions 4.89/2.33 4.89/2.33 evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 >= 0 /\ ar_0 >= 0 ] 4.89/2.33 4.89/2.33 evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 weakly and the transitions 4.89/2.33 4.89/2.33 evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 >= 0 /\ ar_0 >= 0 ] 4.89/2.33 4.89/2.33 evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 strictly and produces the following problem: 4.89/2.33 4.89/2.33 5: T: 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 >= 0 /\ ar_0 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 - 2 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: ?, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 A polynomial rank function with 4.89/2.33 4.89/2.33 Pol(evalwisebb6in) = 3*V_1 - 3*V_2 + 1 4.89/2.33 4.89/2.33 Pol(evalwisebb3in) = 3*V_1 - 3*V_2 4.89/2.33 4.89/2.33 Pol(evalwisebb4in) = 3*V_1 - 3*V_2 - 1 4.89/2.33 4.89/2.33 and size complexities 4.89/2.33 4.89/2.33 S("evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1))", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1))", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\\ ar_1 >= 0 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\\ ar_1 >= 0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 + 3 ]", 0-0) = 4*ar_0 + 4*ar_1 + 48 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 + 3 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 3 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 3 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 + 2 >= ar_1 /\\ ar_1 + 2 >= ar_0 ]", 0-0) = 4*ar_0 + 4*ar_1 + 192 4.89/2.33 4.89/2.33 S("evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 /\\ ar_0 + 2 >= ar_1 /\\ ar_1 + 2 >= ar_0 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 1 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_0 >= ar_1 + 1 ]", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 ]", 0-0) = 4*ar_0 + 4*ar_1 + 48 4.89/2.33 4.89/2.33 S("evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 >= 0 /\\ ar_1 >= ar_0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\\ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 - 2 >= 0 ]", 0-0) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\\ ar_1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ ar_0 - 2 >= 0 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 S("evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 ]", 0-0) = 4*ar_0 + 4*ar_1 + 48 4.89/2.33 4.89/2.33 S("evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 >= 0 /\\ ar_0 >= 0 ]", 0-1) = ar_0 4.89/2.33 4.89/2.33 S("evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1))", 0-0) = 4*ar_0 + 4*ar_1 + 768 4.89/2.33 4.89/2.33 S("evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1))", 0-1) = ar_0 + ar_1 4.89/2.33 4.89/2.33 S("koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ]", 0-0) = ar_0 4.89/2.33 4.89/2.33 S("koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ]", 0-1) = ar_1 4.89/2.33 4.89/2.33 orients the transitions 4.89/2.33 4.89/2.33 evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 - 2 >= 0 ] 4.89/2.33 4.89/2.33 evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 weakly and the transitions 4.89/2.33 4.89/2.33 evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 - 2 >= 0 ] 4.89/2.33 4.89/2.33 evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 strictly and produces the following problem: 4.89/2.33 4.89/2.33 6: T: 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1) -> Com_1(evalwisestart(ar_0, ar_1)) [ 0 <= 0 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisereturnin(ar_0, ar_1) -> Com_1(evalwisestop(ar_0, ar_1)) 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb5in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0 + 1, ar_1)) [ ar_1 - 1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 >= 0 /\ ar_0 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 1, Cost: 1) evalwisebb4in(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_0, ar_1 + 1)) [ ar_0 - ar_1 - 1 >= 0 /\ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 - 2 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb5in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 1, Cost: 1) evalwisebb3in(ar_0, ar_1) -> Com_1(evalwisebb4in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 2, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 + 2 >= ar_1 /\ ar_1 + 2 >= ar_0 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 1, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_0 >= ar_1 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 3*ar_1 + 3*ar_0 + 3, Cost: 1) evalwisebb6in(ar_0, ar_1) -> Com_1(evalwisebb3in(ar_0, ar_1)) [ ar_1 >= 0 /\ ar_0 + ar_1 >= 0 /\ ar_0 >= 0 /\ ar_1 >= ar_0 + 3 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisebb6in(ar_1, ar_0)) [ ar_0 >= 0 /\ ar_1 >= 0 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_1 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwiseentryin(ar_0, ar_1) -> Com_1(evalwisereturnin(ar_0, ar_1)) [ 0 >= ar_0 + 1 ] 4.89/2.33 4.89/2.33 (Comp: 1, Cost: 1) evalwisestart(ar_0, ar_1) -> Com_1(evalwiseentryin(ar_0, ar_1)) 4.89/2.33 4.89/2.33 start location: koat_start 4.89/2.33 4.89/2.33 leaf cost: 0 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Complexity upper bound 18*ar_1 + 18*ar_0 + 20 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Time: 0.246 sec (SMT: 0.210 sec) 4.89/2.33 4.89/2.33 4.89/2.33 ---------------------------------------- 4.89/2.33 4.89/2.33 (2) 4.89/2.33 BOUNDS(1, n^1) 4.89/2.33 4.89/2.33 ---------------------------------------- 4.89/2.33 4.89/2.33 (3) Loat Proof (FINISHED) 4.89/2.33 4.89/2.33 4.89/2.33 ### Pre-processing the ITS problem ### 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Initial linear ITS problem 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 0: evalwisestart -> evalwiseentryin : [], cost: 1 4.89/2.33 4.89/2.33 1: evalwiseentryin -> evalwisereturnin : [ 0>=1+A ], cost: 1 4.89/2.33 4.89/2.33 2: evalwiseentryin -> evalwisereturnin : [ 0>=1+B ], cost: 1 4.89/2.33 4.89/2.33 3: evalwiseentryin -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 1 4.89/2.33 4.89/2.33 4: evalwisebb6in -> evalwisebb3in : [ B>=3+A ], cost: 1 4.89/2.33 4.89/2.33 5: evalwisebb6in -> evalwisebb3in : [ A>=3+B ], cost: 1 4.89/2.33 4.89/2.33 6: evalwisebb6in -> evalwisereturnin : [ 2+A>=B && 2+B>=A ], cost: 1 4.89/2.33 4.89/2.33 7: evalwisebb3in -> evalwisebb4in : [ A>=1+B ], cost: 1 4.89/2.33 4.89/2.33 8: evalwisebb3in -> evalwisebb5in : [ B>=A ], cost: 1 4.89/2.33 4.89/2.33 9: evalwisebb4in -> evalwisebb6in : B'=1+B, [], cost: 1 4.89/2.33 4.89/2.33 10: evalwisebb5in -> evalwisebb6in : A'=1+A, [], cost: 1 4.89/2.33 4.89/2.33 11: evalwisereturnin -> evalwisestop : [], cost: 1 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Removed unreachable and leaf rules: 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 0: evalwisestart -> evalwiseentryin : [], cost: 1 4.89/2.33 4.89/2.33 3: evalwiseentryin -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 1 4.89/2.33 4.89/2.33 4: evalwisebb6in -> evalwisebb3in : [ B>=3+A ], cost: 1 4.89/2.33 4.89/2.33 5: evalwisebb6in -> evalwisebb3in : [ A>=3+B ], cost: 1 4.89/2.33 4.89/2.33 7: evalwisebb3in -> evalwisebb4in : [ A>=1+B ], cost: 1 4.89/2.33 4.89/2.33 8: evalwisebb3in -> evalwisebb5in : [ B>=A ], cost: 1 4.89/2.33 4.89/2.33 9: evalwisebb4in -> evalwisebb6in : B'=1+B, [], cost: 1 4.89/2.33 4.89/2.33 10: evalwisebb5in -> evalwisebb6in : A'=1+A, [], cost: 1 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 ### Simplification by acceleration and chaining ### 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Eliminated locations (on linear paths): 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 12: evalwisestart -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 2 4.89/2.33 4.89/2.33 4: evalwisebb6in -> evalwisebb3in : [ B>=3+A ], cost: 1 4.89/2.33 4.89/2.33 5: evalwisebb6in -> evalwisebb3in : [ A>=3+B ], cost: 1 4.89/2.33 4.89/2.33 13: evalwisebb3in -> evalwisebb6in : B'=1+B, [ A>=1+B ], cost: 2 4.89/2.33 4.89/2.33 14: evalwisebb3in -> evalwisebb6in : A'=1+A, [ B>=A ], cost: 2 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Eliminated locations (on tree-shaped paths): 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 12: evalwisestart -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 2 4.89/2.33 4.89/2.33 15: evalwisebb6in -> evalwisebb6in : A'=1+A, [ B>=3+A ], cost: 3 4.89/2.33 4.89/2.33 16: evalwisebb6in -> evalwisebb6in : B'=1+B, [ A>=3+B ], cost: 3 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Accelerating simple loops of location 2. 4.89/2.33 4.89/2.33 Accelerating the following rules: 4.89/2.33 4.89/2.33 15: evalwisebb6in -> evalwisebb6in : A'=1+A, [ B>=3+A ], cost: 3 4.89/2.33 4.89/2.33 16: evalwisebb6in -> evalwisebb6in : B'=1+B, [ A>=3+B ], cost: 3 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Accelerated rule 15 with metering function -2-A+B, yielding the new rule 17. 4.89/2.33 4.89/2.33 Accelerated rule 16 with metering function -2+A-B, yielding the new rule 18. 4.89/2.33 4.89/2.33 Removing the simple loops: 15 16. 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Accelerated all simple loops using metering functions (where possible): 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 12: evalwisestart -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 2 4.89/2.33 4.89/2.33 17: evalwisebb6in -> evalwisebb6in : A'=-2+B, [ B>=3+A ], cost: -6-3*A+3*B 4.89/2.33 4.89/2.33 18: evalwisebb6in -> evalwisebb6in : B'=-2+A, [ A>=3+B ], cost: -6+3*A-3*B 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Chained accelerated rules (with incoming rules): 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 12: evalwisestart -> evalwisebb6in : A'=B, B'=A, [ A>=0 && B>=0 ], cost: 2 4.89/2.33 4.89/2.33 19: evalwisestart -> evalwisebb6in : A'=-2+A, B'=A, [ A>=0 && B>=0 && A>=3+B ], cost: -4+3*A-3*B 4.89/2.33 4.89/2.33 20: evalwisestart -> evalwisebb6in : A'=B, B'=-2+B, [ A>=0 && B>=0 && B>=3+A ], cost: -4-3*A+3*B 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Removed unreachable locations (and leaf rules with constant cost): 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 19: evalwisestart -> evalwisebb6in : A'=-2+A, B'=A, [ A>=0 && B>=0 && A>=3+B ], cost: -4+3*A-3*B 4.89/2.33 4.89/2.33 20: evalwisestart -> evalwisebb6in : A'=B, B'=-2+B, [ A>=0 && B>=0 && B>=3+A ], cost: -4-3*A+3*B 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 ### Computing asymptotic complexity ### 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Fully simplified ITS problem 4.89/2.33 4.89/2.33 Start location: evalwisestart 4.89/2.33 4.89/2.33 19: evalwisestart -> evalwisebb6in : A'=-2+A, B'=A, [ A>=0 && B>=0 && A>=3+B ], cost: -4+3*A-3*B 4.89/2.33 4.89/2.33 20: evalwisestart -> evalwisebb6in : A'=B, B'=-2+B, [ A>=0 && B>=0 && B>=3+A ], cost: -4-3*A+3*B 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Computing asymptotic complexity for rule 19 4.89/2.33 4.89/2.33 Simplified the guard: 4.89/2.33 4.89/2.33 19: evalwisestart -> evalwisebb6in : A'=-2+A, B'=A, [ B>=0 && A>=3+B ], cost: -4+3*A-3*B 4.89/2.33 4.89/2.33 Solved the limit problem by the following transformations: 4.89/2.33 4.89/2.33 Created initial limit problem: 4.89/2.33 4.89/2.33 1+B (+/+!), -2+A-B (+/+!), -4+3*A-3*B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (C) using substitution {B==0} 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 1 (+/+!), -4+3*A (+), -2+A (+/+!) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (C) using substitution {A==3+B} 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 1 (+/+!), 1+B (+/+!), 5+3*B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (B), deleting 1 (+/+!) 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 1+B (+/+!), 5+3*B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (D), replacing 1+B (+/+!) by B (+) 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 5+3*B (+), B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (D), replacing 5+3*B (+) by 3*B (+) 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 3*B (+), B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (A), replacing 3*B (+) by B (+) and 3 (+!) using + limit vector (+,+!) 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 3 (+!), B (+) [not solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 applying transformation rule (B), deleting 3 (+!) 4.89/2.33 4.89/2.33 resulting limit problem: 4.89/2.33 4.89/2.33 B (+) [solved] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Solution: 4.89/2.33 4.89/2.33 A / 3+n 4.89/2.33 4.89/2.33 B / 0 4.89/2.33 4.89/2.33 Resulting cost 5+3*n has complexity: Poly(n^1) 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Found new complexity Poly(n^1). 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 Obtained the following overall complexity (w.r.t. the length of the input n): 4.89/2.33 4.89/2.33 Complexity: Poly(n^1) 4.89/2.33 4.89/2.33 Cpx degree: 1 4.89/2.33 4.89/2.33 Solved cost: 5+3*n 4.89/2.33 4.89/2.33 Rule cost: -4+3*A-3*B 4.89/2.33 4.89/2.33 Rule guard: [ B>=0 && A>=3+B ] 4.89/2.33 4.89/2.33 4.89/2.33 4.89/2.33 WORST_CASE(Omega(n^1),?) 4.89/2.33 4.89/2.33 4.89/2.33 ---------------------------------------- 4.89/2.33 4.89/2.33 (4) 4.89/2.33 BOUNDS(n^1, INF) 4.91/2.36 EOF