16.20/11.11 WORST_CASE(Omega(n^1), O(n^2)) 16.20/11.13 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 16.20/11.13 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 16.20/11.13 16.20/11.13 16.20/11.13 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(7 + Arg_0 * max(18, 9 * Arg_0), 7) + nat(Arg_0 * max(18, 9 * Arg_0)) * nat(Arg_0) + max(3, 3 * Arg_0) * nat(Arg_0) + max(6 * Arg_0, 6) + nat(7 * Arg_0) + max(3, 3 + Arg_0)). 16.20/11.13 16.20/11.13 (0) CpxIntTrs 16.20/11.13 (1) Loat Proof [FINISHED, 1817 ms] 16.20/11.13 (2) BOUNDS(n^1, INF) 16.20/11.13 16.20/11.13 16.20/11.13 ---------------------------------------- 16.20/11.13 16.20/11.13 (0) 16.20/11.13 Obligation: 16.20/11.13 Complexity Int TRS consisting of the following rules: 16.20/11.13 eval_perfect2_start(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_bb0_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_bb0_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_0(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_0(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_x <= 0 16.20/11.13 eval_perfect2_1(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_bb1_in(v__y3_0, v_1, v_8, v_x, v_x, v_y2_1, v_x)) :|: v_x > 0 16.20/11.13 eval_perfect2_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb1_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb2_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb3_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_stop(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_bb5_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_bb4_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1 - v_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_bb6_in(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_9(v__y3_0, v_1, v_y3_0 - v_1, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_9(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_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.20/11.13 eval_perfect2_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_11(v_y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 < 0 16.20/11.13 eval_perfect2_10(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_11(v_y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: v_y2_1 > 0 16.20/11.13 eval_perfect2_11(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_12(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0)) :|: TRUE 16.20/11.13 eval_perfect2_12(v__y3_0, v_1, v_8, v_x, v_y1_0, v_y2_1, v_y3_0) -> Com_1(eval_perfect2_bb1_in(v__y3_0, v_1, v_8, v_x, v_1, v_y2_1, v__y3_0)) :|: TRUE 16.20/11.13 16.20/11.13 The start-symbols are:[eval_perfect2_start_7] 16.20/11.13 16.20/11.13 16.20/11.13 ---------------------------------------- 16.20/11.13 16.20/11.13 (1) Loat Proof (FINISHED) 16.20/11.13 16.20/11.13 16.20/11.13 ### Pre-processing the ITS problem ### 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Initial linear ITS problem 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 0: evalperfect2start -> evalperfect2bb0in : [], cost: 1 16.20/11.13 16.20/11.13 1: evalperfect2bb0in -> evalperfect20 : [], cost: 1 16.20/11.13 16.20/11.13 2: evalperfect20 -> evalperfect21 : [], cost: 1 16.20/11.13 16.20/11.13 3: evalperfect21 -> evalperfect2bb3in : [ 0>=A ], cost: 1 16.20/11.13 16.20/11.13 4: evalperfect21 -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 1 16.20/11.13 16.20/11.13 5: evalperfect2bb1in -> evalperfect2bb2in : [ B==1 ], cost: 1 16.20/11.13 16.20/11.13 6: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.20/11.13 16.20/11.13 7: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.20/11.13 16.20/11.13 8: evalperfect2bb2in -> evalperfect2bb3in : [ 0>=1+C ], cost: 1 16.20/11.13 16.20/11.13 9: evalperfect2bb2in -> evalperfect2bb3in : [ C>=1 ], cost: 1 16.20/11.13 16.20/11.13 10: evalperfect2bb2in -> evalperfect2bb3in : [ C==0 ], cost: 1 16.20/11.13 16.20/11.13 11: evalperfect2bb3in -> evalperfect2stop : [], cost: 1 16.20/11.13 16.20/11.13 12: evalperfect2bb4in -> evalperfect2bb5in : [ E>=D ], cost: 1 16.20/11.13 16.20/11.13 13: evalperfect2bb4in -> evalperfect2bb6in : [ D>=1+E ], cost: 1 16.20/11.13 16.20/11.13 14: evalperfect2bb5in -> evalperfect2bb4in : E'=-D+E, [], cost: 1 16.20/11.13 16.20/11.13 15: evalperfect2bb6in -> evalperfect29 : F'=C-D, [], cost: 1 16.20/11.13 16.20/11.13 16: evalperfect29 -> evalperfect210 : [], cost: 1 16.20/11.13 16.20/11.13 17: evalperfect210 -> evalperfect211 : G'=F, [ E==0 ], cost: 1 16.20/11.13 16.20/11.13 18: evalperfect210 -> evalperfect211 : G'=C, [ 0>=1+E ], cost: 1 16.20/11.13 16.20/11.13 19: evalperfect210 -> evalperfect211 : G'=C, [ E>=1 ], cost: 1 16.20/11.13 16.20/11.13 20: evalperfect211 -> evalperfect212 : [], cost: 1 16.20/11.13 16.20/11.13 21: evalperfect212 -> evalperfect2bb1in : B'=D, C'=G, [], cost: 1 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Removed unreachable and leaf rules: 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 0: evalperfect2start -> evalperfect2bb0in : [], cost: 1 16.20/11.13 16.20/11.13 1: evalperfect2bb0in -> evalperfect20 : [], cost: 1 16.20/11.13 16.20/11.13 2: evalperfect20 -> evalperfect21 : [], cost: 1 16.20/11.13 16.20/11.13 4: evalperfect21 -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 1 16.20/11.13 16.20/11.13 6: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.20/11.13 16.20/11.13 7: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.20/11.13 16.20/11.13 12: evalperfect2bb4in -> evalperfect2bb5in : [ E>=D ], cost: 1 16.20/11.13 16.20/11.13 13: evalperfect2bb4in -> evalperfect2bb6in : [ D>=1+E ], cost: 1 16.20/11.13 16.20/11.13 14: evalperfect2bb5in -> evalperfect2bb4in : E'=-D+E, [], cost: 1 16.20/11.13 16.20/11.13 15: evalperfect2bb6in -> evalperfect29 : F'=C-D, [], cost: 1 16.20/11.13 16.20/11.13 16: evalperfect29 -> evalperfect210 : [], cost: 1 16.20/11.13 16.20/11.13 17: evalperfect210 -> evalperfect211 : G'=F, [ E==0 ], cost: 1 16.20/11.13 16.20/11.13 18: evalperfect210 -> evalperfect211 : G'=C, [ 0>=1+E ], cost: 1 16.20/11.13 16.20/11.13 19: evalperfect210 -> evalperfect211 : G'=C, [ E>=1 ], cost: 1 16.20/11.13 16.20/11.13 20: evalperfect211 -> evalperfect212 : [], cost: 1 16.20/11.13 16.20/11.13 21: evalperfect212 -> evalperfect2bb1in : B'=D, C'=G, [], cost: 1 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 ### Simplification by acceleration and chaining ### 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Eliminated locations (on linear paths): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 6: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.20/11.13 16.20/11.13 7: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.20/11.13 16.20/11.13 25: evalperfect2bb4in -> evalperfect2bb4in : E'=-D+E, [ E>=D ], cost: 2 16.20/11.13 16.20/11.13 27: evalperfect2bb4in -> evalperfect210 : F'=C-D, [ D>=1+E ], cost: 3 16.20/11.13 16.20/11.13 17: evalperfect210 -> evalperfect211 : G'=F, [ E==0 ], cost: 1 16.20/11.13 16.20/11.13 18: evalperfect210 -> evalperfect211 : G'=C, [ 0>=1+E ], cost: 1 16.20/11.13 16.20/11.13 19: evalperfect210 -> evalperfect211 : G'=C, [ E>=1 ], cost: 1 16.20/11.13 16.20/11.13 28: evalperfect211 -> evalperfect2bb1in : B'=D, C'=G, [], cost: 2 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Accelerating simple loops of location 7. 16.20/11.13 16.20/11.13 Accelerating the following rules: 16.20/11.13 16.20/11.13 25: evalperfect2bb4in -> evalperfect2bb4in : E'=-D+E, [ E>=D ], cost: 2 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Found no metering function for rule 25. 16.20/11.13 16.20/11.13 Removing the simple loops:. 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Accelerated all simple loops using metering functions (where possible): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 6: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.20/11.13 16.20/11.13 7: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.20/11.13 16.20/11.13 25: evalperfect2bb4in -> evalperfect2bb4in : E'=-D+E, [ E>=D ], cost: 2 16.20/11.13 16.20/11.13 27: evalperfect2bb4in -> evalperfect210 : F'=C-D, [ D>=1+E ], cost: 3 16.20/11.13 16.20/11.13 17: evalperfect210 -> evalperfect211 : G'=F, [ E==0 ], cost: 1 16.20/11.13 16.20/11.13 18: evalperfect210 -> evalperfect211 : G'=C, [ 0>=1+E ], cost: 1 16.20/11.13 16.20/11.13 19: evalperfect210 -> evalperfect211 : G'=C, [ E>=1 ], cost: 1 16.20/11.13 16.20/11.13 28: evalperfect211 -> evalperfect2bb1in : B'=D, C'=G, [], cost: 2 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Chained accelerated rules (with incoming rules): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 6: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ 0>=B ], cost: 1 16.20/11.13 16.20/11.13 7: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=A, [ B>=2 ], cost: 1 16.20/11.13 16.20/11.13 29: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=1+A-B, [ 0>=B && A>=-1+B ], cost: 3 16.20/11.13 16.20/11.13 30: evalperfect2bb1in -> evalperfect2bb4in : D'=-1+B, E'=1+A-B, [ B>=2 && A>=-1+B ], cost: 3 16.20/11.13 16.20/11.13 27: evalperfect2bb4in -> evalperfect210 : F'=C-D, [ D>=1+E ], cost: 3 16.20/11.13 16.20/11.13 17: evalperfect210 -> evalperfect211 : G'=F, [ E==0 ], cost: 1 16.20/11.13 16.20/11.13 18: evalperfect210 -> evalperfect211 : G'=C, [ 0>=1+E ], cost: 1 16.20/11.13 16.20/11.13 19: evalperfect210 -> evalperfect211 : G'=C, [ E>=1 ], cost: 1 16.20/11.13 16.20/11.13 28: evalperfect211 -> evalperfect2bb1in : B'=D, C'=G, [], cost: 2 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Eliminated locations (on tree-shaped paths): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 31: evalperfect2bb1in -> evalperfect210 : D'=-1+B, E'=A, F'=1+C-B, [ 0>=B && -1+B>=1+A ], cost: 4 16.20/11.13 16.20/11.13 32: evalperfect2bb1in -> evalperfect210 : D'=-1+B, E'=A, F'=1+C-B, [ B>=2 && -1+B>=1+A ], cost: 4 16.20/11.13 16.20/11.13 33: evalperfect2bb1in -> evalperfect210 : D'=-1+B, E'=1+A-B, F'=1+C-B, [ B>=2 && A>=-1+B && -1+B>=2+A-B ], cost: 6 16.20/11.13 16.20/11.13 34: evalperfect210 -> evalperfect2bb1in : B'=D, C'=F, G'=F, [ E==0 ], cost: 3 16.20/11.13 16.20/11.13 35: evalperfect210 -> evalperfect2bb1in : B'=D, C'=C, G'=C, [ 0>=1+E ], cost: 3 16.20/11.13 16.20/11.13 36: evalperfect210 -> evalperfect2bb1in : B'=D, C'=C, G'=C, [ E>=1 ], cost: 3 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Eliminated locations (on tree-shaped paths): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 37: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 38: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 39: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 40: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 41: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 42: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Applied pruning (of leafs and parallel rules): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 37: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 38: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 39: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 40: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 42: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Accelerating simple loops of location 4. 16.20/11.13 16.20/11.13 Simplified some of the simple loops (and removed duplicate rules). 16.20/11.13 16.20/11.13 Accelerating the following rules: 16.20/11.13 16.20/11.13 37: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 38: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 39: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 40: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 42: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Accelerated rule 37 with metering function -1-A+B, yielding the new rule 43. 16.20/11.13 16.20/11.13 Accelerated rule 38 with metering function -1-A+B, yielding the new rule 44. 16.20/11.13 16.20/11.13 Accelerated rule 39 with metering function -1+B, yielding the new rule 45. 16.20/11.13 16.20/11.13 Accelerated rule 40 with metering function -1-A+B, yielding the new rule 46. 16.20/11.13 16.20/11.13 Accelerated rule 42 with metering function meter (where 2*meter==-2-A+2*B), yielding the new rule 47. 16.20/11.13 16.20/11.13 Removing the simple loops: 37 38 39 40 42. 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Accelerated all simple loops using metering functions (where possible): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 43: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 44: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 45: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 46: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 47: evalperfect2bb1in -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Chained accelerated rules (with incoming rules): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 24: evalperfect2start -> evalperfect2bb1in : B'=A, C'=A, [ A>=1 ], cost: 4 16.20/11.13 16.20/11.13 48: evalperfect2start -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Removed unreachable locations (and leaf rules with constant cost): 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 48: evalperfect2start -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 ### Computing asymptotic complexity ### 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Fully simplified ITS problem 16.20/11.13 16.20/11.13 Start location: evalperfect2start 16.20/11.13 16.20/11.13 48: evalperfect2start -> evalperfect2bb1in : 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.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Computing asymptotic complexity for rule 48 16.20/11.13 16.20/11.13 Solved the limit problem by the following transformations: 16.20/11.13 16.20/11.13 Created initial limit problem: 16.20/11.13 16.20/11.13 3+2*meter-A (+/+!), -1-2*meter+A (+/+!), 4+9*meter (+), -2+A (+/+!) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (C) using substitution {A==2+2*meter} 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 1 (+/+!), 2*meter (+/+!), 4+9*meter (+) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (B), deleting 1 (+/+!) 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 2*meter (+/+!), 4+9*meter (+) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 removing all constraints (solved by SMT) 16.20/11.13 16.20/11.13 resulting limit problem: [solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (C) using substitution {meter==n} 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 [solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Solved the limit problem by the following transformations: 16.20/11.13 16.20/11.13 Created initial limit problem: 16.20/11.13 16.20/11.13 3+2*meter-A (+/+!), -1-2*meter+A (+/+!), 4+9*meter (+), -2+A (+/+!) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (C) using substitution {A==2+2*meter} 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 1 (+/+!), 2*meter (+/+!), 4+9*meter (+) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (B), deleting 1 (+/+!) 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 2*meter (+/+!), 4+9*meter (+) [not solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 removing all constraints (solved by SMT) 16.20/11.13 16.20/11.13 resulting limit problem: [solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 applying transformation rule (C) using substitution {meter==n} 16.20/11.13 16.20/11.13 resulting limit problem: 16.20/11.13 16.20/11.13 [solved] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Solution: 16.20/11.13 16.20/11.13 meter / n 16.20/11.13 16.20/11.13 A / 2+2*n 16.20/11.13 16.20/11.13 Resulting cost 4+9*n has complexity: Poly(n^1) 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Found new complexity Poly(n^1). 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 Obtained the following overall complexity (w.r.t. the length of the input n): 16.20/11.13 16.20/11.13 Complexity: Poly(n^1) 16.20/11.13 16.20/11.13 Cpx degree: 1 16.20/11.13 16.20/11.13 Solved cost: 4+9*n 16.20/11.13 16.20/11.13 Rule cost: 4+9*meter 16.20/11.13 16.20/11.13 Rule guard: [ -1+A>=2 && 2*meter==-2+A ] 16.20/11.13 16.20/11.13 16.20/11.13 16.20/11.13 WORST_CASE(Omega(n^1),?) 16.20/11.13 16.20/11.13 16.20/11.13 ---------------------------------------- 16.20/11.13 16.20/11.13 (2) 16.20/11.13 BOUNDS(n^1, INF) 16.40/11.16 EOF