/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.koat /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), ?) proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, INF). (0) CpxIntTrs (1) Loat Proof [FINISHED, 990 ms] (2) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: eval_aaron3_start(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb0_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_bb0_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_0(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_0(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_1(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_1(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_2(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_2(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_3(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_3(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_4(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_4(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_5(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_5(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_6(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_6(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_7(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_7(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_8(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_8(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb1_in(v_x, v_y, v_z, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_bb1_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb2_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v__01 >= v__02 eval_aaron3_bb1_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb5_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v__01 < v__02 eval_aaron3_bb2_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_9(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_9(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_10(v__01, v__02, v__04, nondef_0, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_10(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb3_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v_1 > 0 eval_aaron3_10(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb4_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v_1 <= 0 eval_aaron3_bb3_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_12(v__01, v__02, v__04, v_1, v__04 - 1, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_12(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_13(v__01, v__02, v__04, v_1, v_3, nondef_1, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_13(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb5_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v_4 > v__01 + v_3 eval_aaron3_13(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb1_in(v_4, v__02, v_3, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: v_4 <= v__01 + v_3 eval_aaron3_bb4_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_bb1_in(v__01, v__02 + 1, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE eval_aaron3_bb5_in(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z) -> Com_1(eval_aaron3_stop(v__01, v__02, v__04, v_1, v_3, v_4, v_tx, v_x, v_y, v_z)) :|: TRUE The start-symbols are:[eval_aaron3_start_10] ---------------------------------------- (1) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: evalaaron3start 0: evalaaron3start -> evalaaron3bb0in : [], cost: 1 1: evalaaron3bb0in -> evalaaron30 : [], cost: 1 2: evalaaron30 -> evalaaron31 : [], cost: 1 3: evalaaron31 -> evalaaron32 : [], cost: 1 4: evalaaron32 -> evalaaron33 : [], cost: 1 5: evalaaron33 -> evalaaron34 : [], cost: 1 6: evalaaron34 -> evalaaron35 : [], cost: 1 7: evalaaron35 -> evalaaron36 : [], cost: 1 8: evalaaron36 -> evalaaron37 : [], cost: 1 9: evalaaron37 -> evalaaron38 : [], cost: 1 10: evalaaron38 -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 1 11: evalaaron3bb1in -> evalaaron3bb2in : [ A>=C ], cost: 1 12: evalaaron3bb1in -> evalaaron3bb5in : [ C>=1+A ], cost: 1 13: evalaaron3bb2in -> evalaaron39 : [], cost: 1 14: evalaaron39 -> evalaaron310 : G'=free, [], cost: 1 15: evalaaron310 -> evalaaron3bb3in : [ G>=1 ], cost: 1 16: evalaaron310 -> evalaaron3bb4in : [ 0>=G ], cost: 1 17: evalaaron3bb3in -> evalaaron312 : H'=-1+E, [], cost: 1 18: evalaaron312 -> evalaaron313 : Q'=free_1, [], cost: 1 19: evalaaron313 -> evalaaron3bb5in : [ Q>=1+A+H ], cost: 1 20: evalaaron313 -> evalaaron3bb1in : A'=Q, E'=H, [ A+H>=Q ], cost: 1 21: evalaaron3bb4in -> evalaaron3bb1in : C'=1+C, [], cost: 1 22: evalaaron3bb5in -> evalaaron3stop : [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 0: evalaaron3start -> evalaaron3bb0in : [], cost: 1 Removed unreachable and leaf rules: Start location: evalaaron3start 0: evalaaron3start -> evalaaron3bb0in : [], cost: 1 1: evalaaron3bb0in -> evalaaron30 : [], cost: 1 2: evalaaron30 -> evalaaron31 : [], cost: 1 3: evalaaron31 -> evalaaron32 : [], cost: 1 4: evalaaron32 -> evalaaron33 : [], cost: 1 5: evalaaron33 -> evalaaron34 : [], cost: 1 6: evalaaron34 -> evalaaron35 : [], cost: 1 7: evalaaron35 -> evalaaron36 : [], cost: 1 8: evalaaron36 -> evalaaron37 : [], cost: 1 9: evalaaron37 -> evalaaron38 : [], cost: 1 10: evalaaron38 -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 1 11: evalaaron3bb1in -> evalaaron3bb2in : [ A>=C ], cost: 1 13: evalaaron3bb2in -> evalaaron39 : [], cost: 1 14: evalaaron39 -> evalaaron310 : G'=free, [], cost: 1 15: evalaaron310 -> evalaaron3bb3in : [ G>=1 ], cost: 1 16: evalaaron310 -> evalaaron3bb4in : [ 0>=G ], cost: 1 17: evalaaron3bb3in -> evalaaron312 : H'=-1+E, [], cost: 1 18: evalaaron312 -> evalaaron313 : Q'=free_1, [], cost: 1 20: evalaaron313 -> evalaaron3bb1in : A'=Q, E'=H, [ A+H>=Q ], cost: 1 21: evalaaron3bb4in -> evalaaron3bb1in : C'=1+C, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: evalaaron3start 32: evalaaron3start -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 11 34: evalaaron3bb1in -> evalaaron310 : G'=free, [ A>=C ], cost: 3 36: evalaaron310 -> evalaaron3bb1in : C'=1+C, [ 0>=G ], cost: 2 38: evalaaron310 -> evalaaron3bb1in : A'=free_1, E'=-1+E, H'=-1+E, Q'=free_1, [ G>=1 && -1+A+E>=free_1 ], cost: 4 Eliminated locations (on tree-shaped paths): Start location: evalaaron3start 32: evalaaron3start -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 11 39: evalaaron3bb1in -> evalaaron3bb1in : C'=1+C, G'=free, [ A>=C && 0>=free ], cost: 5 40: evalaaron3bb1in -> evalaaron3bb1in : A'=free_1, E'=-1+E, G'=free, H'=-1+E, Q'=free_1, [ A>=C && free>=1 && -1+A+E>=free_1 ], cost: 7 Accelerating simple loops of location 11. Accelerating the following rules: 39: evalaaron3bb1in -> evalaaron3bb1in : C'=1+C, G'=free, [ A>=C && 0>=free ], cost: 5 40: evalaaron3bb1in -> evalaaron3bb1in : A'=free_1, E'=-1+E, G'=free, H'=-1+E, Q'=free_1, [ A>=C && free>=1 && -1+A+E>=free_1 ], cost: 7 Accelerated rule 39 with metering function 1-C+A, yielding the new rule 41. Accelerated rule 40 with metering function -1+E (after strengthening guard), yielding the new rule 42. Removing the simple loops: 39. Accelerated all simple loops using metering functions (where possible): Start location: evalaaron3start 32: evalaaron3start -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 11 40: evalaaron3bb1in -> evalaaron3bb1in : A'=free_1, E'=-1+E, G'=free, H'=-1+E, Q'=free_1, [ A>=C && free>=1 && -1+A+E>=free_1 ], cost: 7 41: evalaaron3bb1in -> evalaaron3bb1in : C'=1+A, G'=free, [ A>=C && 0>=free ], cost: 5-5*C+5*A 42: evalaaron3bb1in -> evalaaron3bb1in : A'=free_1, E'=1, G'=free, H'=1, Q'=free_1, [ A>=C && free>=1 && -1+A+E>=free_1 && free_1>=C && -2+E+free_1>=free_1 ], cost: -7+7*E Chained accelerated rules (with incoming rules): Start location: evalaaron3start 32: evalaaron3start -> evalaaron3bb1in : A'=B, C'=D, E'=F, [], cost: 11 43: evalaaron3start -> evalaaron3bb1in : A'=free_1, C'=D, E'=-1+F, G'=free, H'=-1+F, Q'=free_1, [ B>=D && free>=1 && -1+F+B>=free_1 ], cost: 18 44: evalaaron3start -> evalaaron3bb1in : A'=B, C'=1+B, E'=F, G'=free, [ B>=D && 0>=free ], cost: 16-5*D+5*B 45: evalaaron3start -> evalaaron3bb1in : A'=free_1, C'=D, E'=1, G'=free, H'=1, Q'=free_1, [ B>=D && free>=1 && -1+F+B>=free_1 && free_1>=D && -2+F+free_1>=free_1 ], cost: 4+7*F Removed unreachable locations (and leaf rules with constant cost): Start location: evalaaron3start 44: evalaaron3start -> evalaaron3bb1in : A'=B, C'=1+B, E'=F, G'=free, [ B>=D && 0>=free ], cost: 16-5*D+5*B 45: evalaaron3start -> evalaaron3bb1in : A'=free_1, C'=D, E'=1, G'=free, H'=1, Q'=free_1, [ B>=D && free>=1 && -1+F+B>=free_1 && free_1>=D && -2+F+free_1>=free_1 ], cost: 4+7*F ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: evalaaron3start 44: evalaaron3start -> evalaaron3bb1in : A'=B, C'=1+B, E'=F, G'=free, [ B>=D && 0>=free ], cost: 16-5*D+5*B 45: evalaaron3start -> evalaaron3bb1in : A'=free_1, C'=D, E'=1, G'=free, H'=1, Q'=free_1, [ B>=D && free>=1 && -1+F+B>=free_1 && free_1>=D && -2+F+free_1>=free_1 ], cost: 4+7*F Computing asymptotic complexity for rule 44 Solved the limit problem by the following transformations: Created initial limit problem: 16-5*D+5*B (+), 1-D+B (+/+!), 1-free (+/+!) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {D==0,free==-n,B==n} resulting limit problem: [solved] Solution: D / 0 free / -n B / n Resulting cost 16+5*n has complexity: Poly(n^1) Found new complexity Poly(n^1). Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Poly(n^1) Cpx degree: 1 Solved cost: 16+5*n Rule cost: 16-5*D+5*B Rule guard: [ B>=D && 0>=free ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (2) BOUNDS(n^1, INF)