16.11/10.94 WORST_CASE(Omega(n^1), O(n^2)) 16.11/10.96 proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat 16.11/10.96 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 16.11/10.96 16.11/10.96 16.11/10.96 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(7, 7 + Arg_0 * max(6, 3 * Arg_0)) + nat(Arg_0 * max(6, 3 * Arg_0)) * nat(Arg_0) + max(3, 3 * Arg_0) * nat(Arg_0) + max(3, 3 * Arg_0) + nat(6 * Arg_0) + nat(2 * Arg_0) + max(3, 3 + Arg_0)). 16.11/10.96 16.11/10.96 (0) CpxIntTrs 16.11/10.96 (1) Loat Proof [FINISHED, 1853 ms] 16.11/10.96 (2) BOUNDS(n^1, INF) 16.11/10.96 16.11/10.96 16.11/10.96 ---------------------------------------- 16.11/10.96 16.11/10.96 (0) 16.11/10.96 Obligation: 16.11/10.96 Complexity Int TRS consisting of the following rules: 16.11/10.96 eval_unperfect_start(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb0_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_bb0_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_0(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_0(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_x <= 0 16.11/10.96 eval_unperfect_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb1_in(v__y3_0, v_1, v_8, v_x, v_x, v_y2_1, v_x)) :|: v_x > 0 16.11/10.96 eval_unperfect_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y1_0 - 1 >= 0 && v_y1_0 - 1 <= 0 16.11/10.96 eval_unperfect_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb4_in(v__y3_0, v_y1_0 - 1, v_8, v_x, v_y1_0, v_x, v_y3_0)) :|: v_y1_0 - 1 < 0 16.11/10.96 eval_unperfect_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb4_in(v__y3_0, v_y1_0 - 1, v_8, v_x, v_y1_0, v_x, v_y3_0)) :|: v_y1_0 - 1 > 0 16.11/10.96 eval_unperfect_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y3_0 < 0 16.11/10.96 eval_unperfect_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y3_0 > 0 16.11/10.96 eval_unperfect_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y3_0 >= 0 && v_y3_0 <= 0 16.11/10.96 eval_unperfect_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_stop(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb5_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 >= v_1 16.11/10.96 eval_unperfect_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb6_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 < v_1 16.11/10.96 eval_unperfect_bb5_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1 - v_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_bb6_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_9(v__y3_0, v_1, v_y3_0 - v_1, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_9(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_11(v_8, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 >= 0 && v_y2_1 <= 0 16.11/10.96 eval_unperfect_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_11(v_y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 < 0 16.11/10.96 eval_unperfect_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_11(v_y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 > 0 16.11/10.96 eval_unperfect_11(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_12(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.11/10.96 eval_unperfect_12(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_unperfect_bb1_in(v__y3_0, v_1, v_8, v_x, v_1, v_y2_1, v__y3_0)) :|: TRUE 16.11/10.96 16.11/10.96 The start-symbols are:[eval_unperfect_start_7] 16.11/10.96 16.11/10.96 16.11/10.96 ---------------------------------------- 16.11/10.96 16.11/10.96 (1) Loat Proof (FINISHED) 16.11/10.96 16.11/10.96 16.11/10.96 ### Pre-processing the ITS problem ### 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Initial linear ITS problem 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 0: evalunperfectstart -> evalunperfectbb0in : [], cost: 1 16.11/10.96 16.11/10.96 1: evalunperfectbb0in -> evalunperfect0 : [], cost: 1 16.11/10.96 16.11/10.96 2: evalunperfect0 -> evalunperfect1 : [], cost: 1 16.11/10.96 16.11/10.96 3: evalunperfect1 -> evalunperfectbb3in : [ 0>=A ], cost: 1 16.11/10.96 16.11/10.96 4: evalunperfect1 -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 1 16.11/10.96 16.11/10.96 5: evalunperfectbb1in -> evalunperfectbb2in : [ B==1 ], cost: 1 16.11/10.96 16.11/10.96 6: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.11/10.96 16.11/10.96 7: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.11/10.96 16.11/10.96 8: evalunperfectbb2in -> evalunperfectbb3in : [ 0>=1+C ], cost: 1 16.11/10.96 16.11/10.96 9: evalunperfectbb2in -> evalunperfectbb3in : [ C>=1 ], cost: 1 16.11/10.96 16.11/10.96 10: evalunperfectbb2in -> evalunperfectbb3in : [ C==0 ], cost: 1 16.11/10.96 16.11/10.96 11: evalunperfectbb3in -> evalunperfectstop : [], cost: 1 16.11/10.96 16.11/10.96 12: evalunperfectbb4in -> evalunperfectbb5in : [ E>=D ], cost: 1 16.11/10.96 16.11/10.96 13: evalunperfectbb4in -> evalunperfectbb6in : [ D>=1+E ], cost: 1 16.11/10.96 16.11/10.96 14: evalunperfectbb5in -> evalunperfectbb4in : E'=-D+E, [], cost: 1 16.11/10.96 16.11/10.96 15: evalunperfectbb6in -> evalunperfect9 : F'=C-D, [], cost: 1 16.11/10.96 16.11/10.96 16: evalunperfect9 -> evalunperfect10 : [], cost: 1 16.11/10.96 16.11/10.96 17: evalunperfect10 -> evalunperfect11 : G'=F, [ E==0 ], cost: 1 16.11/10.96 16.11/10.96 18: evalunperfect10 -> evalunperfect11 : G'=C, [ 0>=1+E ], cost: 1 16.11/10.96 16.11/10.96 19: evalunperfect10 -> evalunperfect11 : G'=C, [ E>=1 ], cost: 1 16.11/10.96 16.11/10.96 20: evalunperfect11 -> evalunperfect12 : [], cost: 1 16.11/10.96 16.11/10.96 21: evalunperfect12 -> evalunperfectbb1in : B'=D, C'=G, [], cost: 1 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Removed unreachable and leaf rules: 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 0: evalunperfectstart -> evalunperfectbb0in : [], cost: 1 16.11/10.96 16.11/10.96 1: evalunperfectbb0in -> evalunperfect0 : [], cost: 1 16.11/10.96 16.11/10.96 2: evalunperfect0 -> evalunperfect1 : [], cost: 1 16.11/10.96 16.11/10.96 4: evalunperfect1 -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 1 16.11/10.96 16.11/10.96 6: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.11/10.96 16.11/10.96 7: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.11/10.96 16.11/10.96 12: evalunperfectbb4in -> evalunperfectbb5in : [ E>=D ], cost: 1 16.11/10.96 16.11/10.96 13: evalunperfectbb4in -> evalunperfectbb6in : [ D>=1+E ], cost: 1 16.11/10.96 16.11/10.96 14: evalunperfectbb5in -> evalunperfectbb4in : E'=-D+E, [], cost: 1 16.11/10.96 16.11/10.96 15: evalunperfectbb6in -> evalunperfect9 : F'=C-D, [], cost: 1 16.11/10.96 16.11/10.96 16: evalunperfect9 -> evalunperfect10 : [], cost: 1 16.11/10.96 16.11/10.96 17: evalunperfect10 -> evalunperfect11 : G'=F, [ E==0 ], cost: 1 16.11/10.96 16.11/10.96 18: evalunperfect10 -> evalunperfect11 : G'=C, [ 0>=1+E ], cost: 1 16.11/10.96 16.11/10.96 19: evalunperfect10 -> evalunperfect11 : G'=C, [ E>=1 ], cost: 1 16.11/10.96 16.11/10.96 20: evalunperfect11 -> evalunperfect12 : [], cost: 1 16.11/10.96 16.11/10.96 21: evalunperfect12 -> evalunperfectbb1in : B'=D, C'=G, [], cost: 1 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 ### Simplification by acceleration and chaining ### 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Eliminated locations (on linear paths): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 6: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.11/10.96 16.11/10.96 7: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.11/10.96 16.11/10.96 25: evalunperfectbb4in -> evalunperfectbb4in : E'=-D+E, [ E>=D ], cost: 2 16.11/10.96 16.11/10.96 27: evalunperfectbb4in -> evalunperfect10 : F'=C-D, [ D>=1+E ], cost: 3 16.11/10.96 16.11/10.96 17: evalunperfect10 -> evalunperfect11 : G'=F, [ E==0 ], cost: 1 16.11/10.96 16.11/10.96 18: evalunperfect10 -> evalunperfect11 : G'=C, [ 0>=1+E ], cost: 1 16.11/10.96 16.11/10.96 19: evalunperfect10 -> evalunperfect11 : G'=C, [ E>=1 ], cost: 1 16.11/10.96 16.11/10.96 28: evalunperfect11 -> evalunperfectbb1in : B'=D, C'=G, [], cost: 2 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Accelerating simple loops of location 7. 16.11/10.96 16.11/10.96 Accelerating the following rules: 16.11/10.96 16.11/10.96 25: evalunperfectbb4in -> evalunperfectbb4in : E'=-D+E, [ E>=D ], cost: 2 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Found no metering function for rule 25. 16.11/10.96 16.11/10.96 Removing the simple loops:. 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Accelerated all simple loops using metering functions (where possible): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 6: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.11/10.96 16.11/10.96 7: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.11/10.96 16.11/10.96 25: evalunperfectbb4in -> evalunperfectbb4in : E'=-D+E, [ E>=D ], cost: 2 16.11/10.96 16.11/10.96 27: evalunperfectbb4in -> evalunperfect10 : F'=C-D, [ D>=1+E ], cost: 3 16.11/10.96 16.11/10.96 17: evalunperfect10 -> evalunperfect11 : G'=F, [ E==0 ], cost: 1 16.11/10.96 16.11/10.96 18: evalunperfect10 -> evalunperfect11 : G'=C, [ 0>=1+E ], cost: 1 16.11/10.96 16.11/10.96 19: evalunperfect10 -> evalunperfect11 : G'=C, [ E>=1 ], cost: 1 16.11/10.96 16.11/10.96 28: evalunperfect11 -> evalunperfectbb1in : B'=D, C'=G, [], cost: 2 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Chained accelerated rules (with incoming rules): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 6: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.11/10.96 16.11/10.96 7: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.11/10.96 16.11/10.96 29: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=1+A-B, [ 0>=B && A>=-1+B ], cost: 3 16.11/10.96 16.11/10.96 30: evalunperfectbb1in -> evalunperfectbb4in : D'=-1+B, E'=1+A-B, [ B>=2 && A>=-1+B ], cost: 3 16.11/10.96 16.11/10.96 27: evalunperfectbb4in -> evalunperfect10 : F'=C-D, [ D>=1+E ], cost: 3 16.11/10.96 16.11/10.96 17: evalunperfect10 -> evalunperfect11 : G'=F, [ E==0 ], cost: 1 16.11/10.96 16.11/10.96 18: evalunperfect10 -> evalunperfect11 : G'=C, [ 0>=1+E ], cost: 1 16.11/10.96 16.11/10.96 19: evalunperfect10 -> evalunperfect11 : G'=C, [ E>=1 ], cost: 1 16.11/10.96 16.11/10.96 28: evalunperfect11 -> evalunperfectbb1in : B'=D, C'=G, [], cost: 2 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Eliminated locations (on tree-shaped paths): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 31: evalunperfectbb1in -> evalunperfect10 : D'=-1+B, E'=A, F'=1+C-B, [ 0>=B && -1+B>=1+A ], cost: 4 16.11/10.96 16.11/10.96 32: evalunperfectbb1in -> evalunperfect10 : D'=-1+B, E'=A, F'=1+C-B, [ B>=2 && -1+B>=1+A ], cost: 4 16.11/10.96 16.11/10.96 33: evalunperfectbb1in -> evalunperfect10 : D'=-1+B, E'=1+A-B, F'=1+C-B, [ B>=2 && A>=-1+B && -1+B>=2+A-B ], cost: 6 16.11/10.96 16.11/10.96 34: evalunperfect10 -> evalunperfectbb1in : B'=D, C'=F, G'=F, [ E==0 ], cost: 3 16.11/10.96 16.11/10.96 35: evalunperfect10 -> evalunperfectbb1in : B'=D, C'=C, G'=C, [ 0>=1+E ], cost: 3 16.11/10.96 16.11/10.96 36: evalunperfect10 -> evalunperfectbb1in : B'=D, C'=C, G'=C, [ E>=1 ], cost: 3 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Eliminated locations (on tree-shaped paths): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 37: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ 0>=B && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 38: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=1+C-B, D'=-1+B, E'=A, F'=1+C-B, G'=1+C-B, [ B>=2 && -1+B>=1+A && A==0 ], cost: 7 16.11/10.96 16.11/10.96 39: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 40: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && A>=1 ], cost: 7 16.11/10.96 16.11/10.96 41: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=1+C-B, D'=-1+B, E'=1+A-B, F'=1+C-B, G'=1+C-B, [ B>=2 && -1+B>=2+A-B && 1+A-B==0 ], cost: 9 16.11/10.96 16.11/10.96 42: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=1+A-B, F'=1+C-B, G'=C, [ B>=2 && -1+B>=2+A-B && 1+A-B>=1 ], cost: 9 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Applied pruning (of leafs and parallel rules): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 37: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ 0>=B && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 38: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=1+C-B, D'=-1+B, E'=A, F'=1+C-B, G'=1+C-B, [ B>=2 && -1+B>=1+A && A==0 ], cost: 7 16.11/10.96 16.11/10.96 39: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 40: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && A>=1 ], cost: 7 16.11/10.96 16.11/10.96 42: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=C, D'=-1+B, E'=1+A-B, F'=1+C-B, G'=C, [ B>=2 && -1+B>=2+A-B && 1+A-B>=1 ], cost: 9 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Accelerating simple loops of location 4. 16.11/10.96 16.11/10.96 Simplified some of the simple loops (and removed duplicate rules). 16.11/10.96 16.11/10.96 Accelerating the following rules: 16.11/10.96 16.11/10.96 37: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ 0>=B && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 38: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, C'=1+C-B, D'=-1+B, E'=A, F'=1+C-B, G'=1+C-B, [ B>=2 && -1+B>=1+A && A==0 ], cost: 7 16.11/10.96 16.11/10.96 39: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && 0>=1+A ], cost: 7 16.11/10.96 16.11/10.96 40: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, D'=-1+B, E'=A, F'=1+C-B, G'=C, [ B>=2 && -1+B>=1+A && A>=1 ], cost: 7 16.11/10.96 16.11/10.96 42: evalunperfectbb1in -> evalunperfectbb1in : B'=-1+B, D'=-1+B, E'=1+A-B, F'=1+C-B, G'=C, [ B>=2 && -1+B>=2+A-B && 1+A-B>=1 ], cost: 9 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Accelerated rule 37 with metering function -1-A+B, yielding the new rule 43. 16.11/10.96 16.11/10.96 Accelerated rule 38 with metering function -1-A+B, yielding the new rule 44. 16.11/10.96 16.11/10.96 Accelerated rule 39 with metering function -1+B, yielding the new rule 45. 16.11/10.96 16.11/10.96 Accelerated rule 40 with metering function -1-A+B, yielding the new rule 46. 16.11/10.96 16.11/10.96 Accelerated rule 42 with metering function meter (where 2*meter==-2-A+2*B), yielding the new rule 47. 16.11/10.96 16.11/10.96 Removing the simple loops: 37 38 39 40 42. 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Accelerated all simple loops using metering functions (where possible): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 43: evalunperfectbb1in -> evalunperfectbb1in : B'=1+A, D'=1+A, E'=A, F'=-1+C-A, G'=C, [ 0>=B && -1+B>=1+A && 0>=1+A ], cost: -7-7*A+7*B 16.11/10.96 16.11/10.96 44: evalunperfectbb1in -> evalunperfectbb1in : B'=1+A, C'=-5/2+C+1/2*(1+A-B)^2-3/2*A+(1+A-B)*B+3/2*B, D'=1+A, E'=A, F'=-7/2+C+1/2*(1+A-B)^2-3/2*A+(1+A-B)*B+3/2*B, G'=-7/2+C+1/2*(1+A-B)^2-3/2*A+(1+A-B)*B+3/2*B, [ B>=2 && -1+B>=1+A && A==0 ], cost: -7-7*A+7*B 16.11/10.96 16.11/10.96 45: evalunperfectbb1in -> evalunperfectbb1in : B'=1, D'=1, E'=A, F'=-1+C, G'=C, [ B>=2 && -1+B>=1+A && 0>=1+A ], cost: -7+7*B 16.11/10.96 16.11/10.96 46: evalunperfectbb1in -> evalunperfectbb1in : B'=1+A, D'=1+A, E'=A, F'=-1+C-A, G'=C, [ B>=2 && -1+B>=1+A && A>=1 ], cost: -7-7*A+7*B 16.11/10.96 16.11/10.96 47: evalunperfectbb1in -> evalunperfectbb1in : B'=-meter+B, D'=-meter+B, E'=meter+A-B, F'=C+meter-B, G'=C, [ B>=2 && -1+B>=2+A-B && 1+A-B>=1 && 2*meter==-2-A+2*B && meter>=1 ], cost: 9*meter 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Chained accelerated rules (with incoming rules): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 24: evalunperfectstart -> evalunperfectbb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.11/10.96 16.11/10.96 48: evalunperfectstart -> evalunperfectbb1in : B'=-meter+A, C'=A, D'=-meter+A, E'=meter, F'=meter, G'=A, [ -1+A>=2 && 2*meter==-2+A && meter>=1 ], cost: 4+9*meter 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Removed unreachable locations (and leaf rules with constant cost): 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 48: evalunperfectstart -> evalunperfectbb1in : B'=-meter+A, C'=A, D'=-meter+A, E'=meter, F'=meter, G'=A, [ -1+A>=2 && 2*meter==-2+A && meter>=1 ], cost: 4+9*meter 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 ### Computing asymptotic complexity ### 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Fully simplified ITS problem 16.11/10.96 16.11/10.96 Start location: evalunperfectstart 16.11/10.96 16.11/10.96 48: evalunperfectstart -> evalunperfectbb1in : B'=-meter+A, C'=A, D'=-meter+A, E'=meter, F'=meter, G'=A, [ -1+A>=2 && 2*meter==-2+A && meter>=1 ], cost: 4+9*meter 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Computing asymptotic complexity for rule 48 16.11/10.96 16.11/10.96 Solved the limit problem by the following transformations: 16.11/10.96 16.11/10.96 Created initial limit problem: 16.11/10.96 16.11/10.96 3+2*meter-A (+/+!), -1-2*meter+A (+/+!), 4+9*meter (+), -2+A (+/+!) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (C) using substitution {A==2+2*meter} 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 1 (+/+!), 2*meter (+/+!), 4+9*meter (+) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (B), deleting 1 (+/+!) 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 2*meter (+/+!), 4+9*meter (+) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 removing all constraints (solved by SMT) 16.11/10.96 16.11/10.96 resulting limit problem: [solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (C) using substitution {meter==n} 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 [solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Solved the limit problem by the following transformations: 16.11/10.96 16.11/10.96 Created initial limit problem: 16.11/10.96 16.11/10.96 3+2*meter-A (+/+!), -1-2*meter+A (+/+!), 4+9*meter (+), -2+A (+/+!) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (C) using substitution {A==2+2*meter} 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 1 (+/+!), 2*meter (+/+!), 4+9*meter (+) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (B), deleting 1 (+/+!) 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 2*meter (+/+!), 4+9*meter (+) [not solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 removing all constraints (solved by SMT) 16.11/10.96 16.11/10.96 resulting limit problem: [solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 applying transformation rule (C) using substitution {meter==n} 16.11/10.96 16.11/10.96 resulting limit problem: 16.11/10.96 16.11/10.96 [solved] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Solution: 16.11/10.96 16.11/10.96 meter / n 16.11/10.96 16.11/10.96 A / 2+2*n 16.11/10.96 16.11/10.96 Resulting cost 4+9*n has complexity: Poly(n^1) 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Found new complexity Poly(n^1). 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 Obtained the following overall complexity (w.r.t. the length of the input n): 16.11/10.96 16.11/10.96 Complexity: Poly(n^1) 16.11/10.96 16.11/10.96 Cpx degree: 1 16.11/10.96 16.11/10.96 Solved cost: 4+9*n 16.11/10.96 16.11/10.96 Rule cost: 4+9*meter 16.11/10.96 16.11/10.96 Rule guard: [ -1+A>=2 && 2*meter==-2+A ] 16.11/10.96 16.11/10.96 16.11/10.96 16.11/10.96 WORST_CASE(Omega(n^1),?) 16.11/10.96 16.11/10.96 16.11/10.96 ---------------------------------------- 16.11/10.96 16.11/10.96 (2) 16.11/10.96 BOUNDS(n^1, INF) 16.22/10.99 EOF