/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.koat /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(?, O(n^1)) proof of /export/starexec/sandbox/benchmark/theBenchmark.koat # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(1, 2 + max(5, 1 + 2 * Arg_1) * nat(Arg_0) + max(2 * Arg_1, 4) + max(12, 8 + 2 * Arg_1)). (0) CpxIntTrs (1) Koat Proof [FINISHED, 243 ms] (2) BOUNDS(1, n^1) (3) Loat Proof [FINISHED, 420 ms] (4) BOUNDS(1, INF) (5) Koat2 Proof [FINISHED, 832 ms] (6) BOUNDS(1, 2 + max(5, 1 + 2 * Arg_1) * nat(Arg_0) + max(2 * Arg_1, 4) + max(12, 8 + 2 * Arg_1)) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: eval_speedpldi4_start(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb0_in(v_i_0, v_m, v_n)) :|: TRUE eval_speedpldi4_bb0_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_0(v_i_0, v_m, v_n)) :|: TRUE eval_speedpldi4_0(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_1(v_i_0, v_m, v_n)) :|: TRUE eval_speedpldi4_1(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_2(v_i_0, v_m, v_n)) :|: TRUE eval_speedpldi4_2(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb3_in(v_i_0, v_m, v_n)) :|: v_m <= 0 eval_speedpldi4_2(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb3_in(v_i_0, v_m, v_n)) :|: v_n <= v_m eval_speedpldi4_2(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb1_in(v_n, v_m, v_n)) :|: v_m > 0 && v_n > v_m eval_speedpldi4_bb1_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb2_in(v_i_0, v_m, v_n)) :|: v_i_0 > 0 eval_speedpldi4_bb1_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb3_in(v_i_0, v_m, v_n)) :|: v_i_0 <= 0 eval_speedpldi4_bb2_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb1_in(v_i_0 - 1, v_m, v_n)) :|: v_i_0 < v_m eval_speedpldi4_bb2_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_bb1_in(v_i_0 - v_m, v_m, v_n)) :|: v_i_0 >= v_m eval_speedpldi4_bb3_in(v_i_0, v_m, v_n) -> Com_1(eval_speedpldi4_stop(v_i_0, v_m, v_n)) :|: TRUE The start-symbols are:[eval_speedpldi4_start_3] ---------------------------------------- (1) Koat Proof (FINISHED) YES(?, 6*ar_1 + 11) Initial complexity problem: 1: T: (Comp: ?, Cost: 1) evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2)) (Comp: ?, Cost: 1) evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2)) (Comp: ?, Cost: 1) evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2)) (Comp: ?, Cost: 1) evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2)) (Comp: ?, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ] (Comp: ?, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ] (Comp: ?, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\ ar_1 >= ar_0 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_2 >= 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_0 >= ar_2 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_2 >= ar_0 ] (Comp: ?, Cost: 1) evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Repeatedly propagating knowledge in problem 1 produces the following problem: 2: T: (Comp: 1, Cost: 1) evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\ ar_1 >= ar_0 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_2 >= 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_0 >= ar_2 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_2 >= ar_0 ] (Comp: ?, Cost: 1) evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalspeedpldi4start) = 2 Pol(evalspeedpldi4bb0in) = 2 Pol(evalspeedpldi40) = 2 Pol(evalspeedpldi41) = 2 Pol(evalspeedpldi42) = 2 Pol(evalspeedpldi4bb3in) = 1 Pol(evalspeedpldi4bb1in) = 2 Pol(evalspeedpldi4bb2in) = 2 Pol(evalspeedpldi4stop) = 0 Pol(koat_start) = 2 orients all transitions weakly and the transitions evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_2 ] strictly and produces the following problem: 3: T: (Comp: 1, Cost: 1) evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\ ar_1 >= ar_0 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_2 >= 1 ] (Comp: 2, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_0 >= ar_2 + 1 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_2 >= ar_0 ] (Comp: 2, Cost: 1) evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Applied AI with 'oct' on problem 3 to obtain the following invariants: For symbol evalspeedpldi4bb1in: X_2 - X_3 >= 0 /\ X_2 - 2 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ -X_1 + X_2 - 1 >= 0 /\ X_1 - 1 >= 0 For symbol evalspeedpldi4bb2in: X_2 - X_3 >= 0 /\ X_3 - 1 >= 0 /\ X_2 + X_3 - 3 >= 0 /\ X_1 + X_3 - 2 >= 0 /\ X_2 - 2 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ -X_1 + X_2 - 1 >= 0 /\ X_1 - 1 >= 0 This yielded the following problem: 4: T: (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ] (Comp: 2, Cost: 1) evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= ar_0 ] (Comp: ?, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_0 >= ar_2 + 1 ] (Comp: 2, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ 0 >= ar_2 ] (Comp: ?, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= 1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\ ar_1 >= ar_0 + 1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ] (Comp: 1, Cost: 1) evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2)) start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalspeedpldi4bb2in) = 2*V_3 - 1 Pol(evalspeedpldi4bb1in) = 2*V_3 and size complexities S("evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2))", 0-0) = ar_0 S("evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2))", 0-1) = ar_1 S("evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2))", 0-2) = ar_2 S("evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2))", 0-0) = ar_0 S("evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2))", 0-1) = ar_1 S("evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2))", 0-2) = ar_2 S("evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2))", 0-0) = ar_0 S("evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2))", 0-1) = ar_1 S("evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2))", 0-2) = ar_2 S("evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2))", 0-0) = ar_0 S("evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2))", 0-1) = ar_1 S("evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2))", 0-2) = ar_2 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ]", 0-0) = ar_0 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ]", 0-1) = ar_1 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ]", 0-2) = ar_2 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ]", 0-0) = ar_0 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ]", 0-1) = ar_1 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ]", 0-2) = ar_2 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\\ ar_1 >= ar_0 + 1 ]", 0-0) = ar_0 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\\ ar_1 >= ar_0 + 1 ]", 0-1) = ar_1 S("evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\\ ar_1 >= ar_0 + 1 ]", 0-2) = ar_1 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= 1 ]", 0-0) = ar_0 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= 1 ]", 0-1) = ar_1 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= 1 ]", 0-2) = ar_1 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ 0 >= ar_2 ]", 0-0) = ar_0 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ 0 >= ar_2 ]", 0-1) = ar_1 S("evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ 0 >= ar_2 ]", 0-2) = ar_1 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_0 >= ar_2 + 1 ]", 0-0) = ar_0 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_0 >= ar_2 + 1 ]", 0-1) = ar_1 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_0 >= ar_2 + 1 ]", 0-2) = ar_1 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= ar_0 ]", 0-0) = ar_0 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= ar_0 ]", 0-1) = ar_1 S("evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\\ ar_2 - 1 >= 0 /\\ ar_1 + ar_2 - 3 >= 0 /\\ ar_0 + ar_2 - 2 >= 0 /\\ ar_1 - 2 >= 0 /\\ ar_0 + ar_1 - 3 >= 0 /\\ -ar_0 + ar_1 - 1 >= 0 /\\ ar_0 - 1 >= 0 /\\ ar_2 >= ar_0 ]", 0-2) = ar_1 S("evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2))", 0-0) = ar_0 S("evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2))", 0-1) = ar_1 S("evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2))", 0-2) = ar_1 + ar_2 S("koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-0) = ar_0 S("koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-1) = ar_1 S("koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-2) = ar_2 orients the transitions evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= ar_0 ] evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_0 >= ar_2 + 1 ] evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= 1 ] weakly and the transitions evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= ar_0 ] evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_0 >= ar_2 + 1 ] evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= 1 ] strictly and produces the following problem: 5: T: (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4start(ar_0, ar_1, ar_2)) [ 0 <= 0 ] (Comp: 2, Cost: 1) evalspeedpldi4bb3in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4stop(ar_0, ar_1, ar_2)) (Comp: 2*ar_1, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - ar_0)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= ar_0 ] (Comp: 2*ar_1, Cost: 1) evalspeedpldi4bb2in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_2 - 1)) [ ar_1 - ar_2 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ ar_0 + ar_2 - 2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_0 >= ar_2 + 1 ] (Comp: 2, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ 0 >= ar_2 ] (Comp: 2*ar_1, Cost: 1) evalspeedpldi4bb1in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb2in(ar_0, ar_1, ar_2)) [ ar_1 - ar_2 >= 0 /\ ar_1 - 2 >= 0 /\ ar_0 + ar_1 - 3 >= 0 /\ -ar_0 + ar_1 - 1 >= 0 /\ ar_0 - 1 >= 0 /\ ar_2 >= 1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb1in(ar_0, ar_1, ar_1)) [ ar_0 >= 1 /\ ar_1 >= ar_0 + 1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ ar_0 >= ar_1 ] (Comp: 1, Cost: 1) evalspeedpldi42(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb3in(ar_0, ar_1, ar_2)) [ 0 >= ar_0 ] (Comp: 1, Cost: 1) evalspeedpldi41(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi42(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi40(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi41(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4bb0in(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi40(ar_0, ar_1, ar_2)) (Comp: 1, Cost: 1) evalspeedpldi4start(ar_0, ar_1, ar_2) -> Com_1(evalspeedpldi4bb0in(ar_0, ar_1, ar_2)) start location: koat_start leaf cost: 0 Complexity upper bound 6*ar_1 + 11 Time: 0.249 sec (SMT: 0.214 sec) ---------------------------------------- (2) BOUNDS(1, n^1) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4bb0in : [], cost: 1 1: evalspeedpldi4bb0in -> evalspeedpldi40 : [], cost: 1 2: evalspeedpldi40 -> evalspeedpldi41 : [], cost: 1 3: evalspeedpldi41 -> evalspeedpldi42 : [], cost: 1 4: evalspeedpldi42 -> evalspeedpldi4bb3in : [ 0>=A ], cost: 1 5: evalspeedpldi42 -> evalspeedpldi4bb3in : [ A>=B ], cost: 1 6: evalspeedpldi42 -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 1 7: evalspeedpldi4bb1in -> evalspeedpldi4bb2in : [ C>=1 ], cost: 1 8: evalspeedpldi4bb1in -> evalspeedpldi4bb3in : [ 0>=C ], cost: 1 9: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=-1+C, [ A>=1+C ], cost: 1 10: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=C-A, [ C>=A ], cost: 1 11: evalspeedpldi4bb3in -> evalspeedpldi4stop : [], cost: 1 Removed unreachable and leaf rules: Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4bb0in : [], cost: 1 1: evalspeedpldi4bb0in -> evalspeedpldi40 : [], cost: 1 2: evalspeedpldi40 -> evalspeedpldi41 : [], cost: 1 3: evalspeedpldi41 -> evalspeedpldi42 : [], cost: 1 6: evalspeedpldi42 -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 1 7: evalspeedpldi4bb1in -> evalspeedpldi4bb2in : [ C>=1 ], cost: 1 9: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=-1+C, [ A>=1+C ], cost: 1 10: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=C-A, [ C>=A ], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: evalspeedpldi4start 15: evalspeedpldi4start -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 5 7: evalspeedpldi4bb1in -> evalspeedpldi4bb2in : [ C>=1 ], cost: 1 9: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=-1+C, [ A>=1+C ], cost: 1 10: evalspeedpldi4bb2in -> evalspeedpldi4bb1in : C'=C-A, [ C>=A ], cost: 1 Eliminated locations (on tree-shaped paths): Start location: evalspeedpldi4start 15: evalspeedpldi4start -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 5 16: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=-1+C, [ C>=1 && A>=1+C ], cost: 2 17: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=C-A, [ C>=1 && C>=A ], cost: 2 Accelerating simple loops of location 5. Accelerating the following rules: 16: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=-1+C, [ C>=1 && A>=1+C ], cost: 2 17: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=C-A, [ C>=1 && C>=A ], cost: 2 Accelerated rule 16 with metering function C, yielding the new rule 18. Found no metering function for rule 17. Removing the simple loops: 16. Accelerated all simple loops using metering functions (where possible): Start location: evalspeedpldi4start 15: evalspeedpldi4start -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 5 17: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=C-A, [ C>=1 && C>=A ], cost: 2 18: evalspeedpldi4bb1in -> evalspeedpldi4bb1in : C'=0, [ C>=1 && A>=1+C ], cost: 2*C Chained accelerated rules (with incoming rules): Start location: evalspeedpldi4start 15: evalspeedpldi4start -> evalspeedpldi4bb1in : C'=B, [ A>=1 && B>=1+A ], cost: 5 19: evalspeedpldi4start -> evalspeedpldi4bb1in : C'=-A+B, [ A>=1 && B>=1+A && B>=1 ], cost: 7 Removed unreachable locations (and leaf rules with constant cost): Start location: evalspeedpldi4start ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: evalspeedpldi4start Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Unknown Cpx degree: ? Solved cost: 0 Rule cost: 0 Rule guard: [] WORST_CASE(Omega(0),?) ---------------------------------------- (4) BOUNDS(1, INF) ---------------------------------------- (5) Koat2 Proof (FINISHED) YES( ?, 2+max([5, 1+2*Arg_1])*max([0, Arg_0])+max([4, 2*Arg_1])+max([12, 8+2*Arg_1]) {O(n^2)}) Initial Complexity Problem: Start: evalspeedpldi4start Program_Vars: Arg_0, Arg_1, Arg_2 Temp_Vars: Locations: evalspeedpldi40, evalspeedpldi41, evalspeedpldi42, evalspeedpldi4bb0in, evalspeedpldi4bb1in, evalspeedpldi4bb2in, evalspeedpldi4bb3in, evalspeedpldi4start, evalspeedpldi4stop Transitions: evalspeedpldi40(Arg_0,Arg_1,Arg_2) -> evalspeedpldi41(Arg_0,Arg_1,Arg_2):|: evalspeedpldi41(Arg_0,Arg_1,Arg_2) -> evalspeedpldi42(Arg_0,Arg_1,Arg_2):|: evalspeedpldi42(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb1in(Arg_0,Arg_1,Arg_1):|:1 <= Arg_0 && Arg_0+1 <= Arg_1 evalspeedpldi42(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb3in(Arg_0,Arg_1,Arg_2):|:Arg_0 <= 0 evalspeedpldi42(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb3in(Arg_0,Arg_1,Arg_2):|:Arg_1 <= Arg_0 evalspeedpldi4bb0in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi40(Arg_0,Arg_1,Arg_2):|: evalspeedpldi4bb1in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb2in(Arg_0,Arg_1,Arg_2):|:Arg_2 <= Arg_1 && 2 <= Arg_1 && 3 <= Arg_0+Arg_1 && 1+Arg_0 <= Arg_1 && 1 <= Arg_0 && 1 <= Arg_2 evalspeedpldi4bb1in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb3in(Arg_0,Arg_1,Arg_2):|:Arg_2 <= Arg_1 && 2 <= Arg_1 && 3 <= Arg_0+Arg_1 && 1+Arg_0 <= Arg_1 && 1 <= Arg_0 && Arg_2 <= 0 evalspeedpldi4bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb1in(Arg_0,Arg_1,Arg_2-1):|:Arg_2 <= Arg_1 && 2 <= Arg_1 && 3 <= Arg_0+Arg_1 && 1+Arg_0 <= Arg_1 && 1 <= Arg_0 && Arg_2+1 <= Arg_0 evalspeedpldi4bb2in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb1in(Arg_0,Arg_1,Arg_2-Arg_0):|:Arg_2 <= Arg_1 && 2 <= Arg_1 && 3 <= Arg_0+Arg_1 && 1+Arg_0 <= Arg_1 && 1 <= Arg_0 && Arg_0 <= Arg_2 evalspeedpldi4bb3in(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4stop(Arg_0,Arg_1,Arg_2):|: evalspeedpldi4start(Arg_0,Arg_1,Arg_2) -> evalspeedpldi4bb0in(Arg_0,Arg_1,Arg_2):|: Timebounds: Overall timebound: 2+max([5, 1+2*Arg_1])*max([0, Arg_0])+max([4, 2*Arg_1])+max([12, 8+2*Arg_1]) {O(n^2)} 2: evalspeedpldi40->evalspeedpldi41: 1 {O(1)} 3: evalspeedpldi41->evalspeedpldi42: 1 {O(1)} 4: evalspeedpldi42->evalspeedpldi4bb3in: 1 {O(1)} 5: evalspeedpldi42->evalspeedpldi4bb3in: 1 {O(1)} 6: evalspeedpldi42->evalspeedpldi4bb1in: 1 {O(1)} 1: evalspeedpldi4bb0in->evalspeedpldi40: 1 {O(1)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in: max([5, 1+2*Arg_1]) {O(n)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in: 1 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in: max([5, 1+2*Arg_1])*max([0, Arg_0]) {O(n^2)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in: max([4, 2*Arg_1]) {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop: 1 {O(1)} 0: evalspeedpldi4start->evalspeedpldi4bb0in: 1 {O(1)} Costbounds: Overall costbound: 2+max([5, 1+2*Arg_1])*max([0, Arg_0])+max([4, 2*Arg_1])+max([12, 8+2*Arg_1]) {O(n^2)} 2: evalspeedpldi40->evalspeedpldi41: 1 {O(1)} 3: evalspeedpldi41->evalspeedpldi42: 1 {O(1)} 4: evalspeedpldi42->evalspeedpldi4bb3in: 1 {O(1)} 5: evalspeedpldi42->evalspeedpldi4bb3in: 1 {O(1)} 6: evalspeedpldi42->evalspeedpldi4bb1in: 1 {O(1)} 1: evalspeedpldi4bb0in->evalspeedpldi40: 1 {O(1)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in: max([5, 1+2*Arg_1]) {O(n)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in: 1 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in: max([5, 1+2*Arg_1])*max([0, Arg_0]) {O(n^2)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in: max([4, 2*Arg_1]) {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop: 1 {O(1)} 0: evalspeedpldi4start->evalspeedpldi4bb0in: 1 {O(1)} Sizebounds: `Lower: 2: evalspeedpldi40->evalspeedpldi41, Arg_0: Arg_0 {O(n)} 2: evalspeedpldi40->evalspeedpldi41, Arg_1: Arg_1 {O(n)} 2: evalspeedpldi40->evalspeedpldi41, Arg_2: Arg_2 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_0: Arg_0 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_1: Arg_1 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_2: Arg_2 {O(n)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_0: Arg_0 {O(n)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_1: Arg_1 {O(n)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_2: Arg_2 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_0: Arg_0 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_1: Arg_1 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_2: Arg_2 {O(n)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_0: 1 {O(1)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_1: 2 {O(1)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_2: 2 {O(1)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_0: Arg_0 {O(n)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_1: Arg_1 {O(n)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_2: Arg_2 {O(n)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_0: 1 {O(1)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_1: 2 {O(1)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_2: 1 {O(1)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_0: 1 {O(1)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_1: 2 {O(1)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_2: 0 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_0: 1 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_1: 2 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_2: 0 {O(1)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_0: 1 {O(1)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_1: 2 {O(1)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_2: 0 {O(1)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_0: min([1, Arg_0]) {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_1: min([2, Arg_1]) {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_2: min([0, Arg_2]) {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_0: Arg_0 {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_1: Arg_1 {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_2: Arg_2 {O(n)} `Upper: 2: evalspeedpldi40->evalspeedpldi41, Arg_0: Arg_0 {O(n)} 2: evalspeedpldi40->evalspeedpldi41, Arg_1: Arg_1 {O(n)} 2: evalspeedpldi40->evalspeedpldi41, Arg_2: Arg_2 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_0: Arg_0 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_1: Arg_1 {O(n)} 3: evalspeedpldi41->evalspeedpldi42, Arg_2: Arg_2 {O(n)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_0: 0 {O(1)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_1: Arg_1 {O(n)} 4: evalspeedpldi42->evalspeedpldi4bb3in, Arg_2: Arg_2 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_0: Arg_0 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_1: Arg_1 {O(n)} 5: evalspeedpldi42->evalspeedpldi4bb3in, Arg_2: Arg_2 {O(n)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_0: Arg_0 {O(n)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_1: Arg_1 {O(n)} 6: evalspeedpldi42->evalspeedpldi4bb1in, Arg_2: Arg_1 {O(n)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_0: Arg_0 {O(n)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_1: Arg_1 {O(n)} 1: evalspeedpldi4bb0in->evalspeedpldi40, Arg_2: Arg_2 {O(n)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_0: Arg_0 {O(n)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_1: Arg_1 {O(n)} 7: evalspeedpldi4bb1in->evalspeedpldi4bb2in, Arg_2: Arg_1 {O(n)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_0: Arg_0 {O(n)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_1: Arg_1 {O(n)} 8: evalspeedpldi4bb1in->evalspeedpldi4bb3in, Arg_2: 0 {O(1)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_0: Arg_0 {O(n)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_1: Arg_1 {O(n)} 9: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_2: Arg_1 {O(n)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_0: Arg_0 {O(n)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_1: Arg_1 {O(n)} 10: evalspeedpldi4bb2in->evalspeedpldi4bb1in, Arg_2: Arg_1 {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_0: max([0, Arg_0]) {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_1: Arg_1 {O(n)} 11: evalspeedpldi4bb3in->evalspeedpldi4stop, Arg_2: max([0, Arg_2]) {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_0: Arg_0 {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_1: Arg_1 {O(n)} 0: evalspeedpldi4start->evalspeedpldi4bb0in, Arg_2: Arg_2 {O(n)} ---------------------------------------- (6) BOUNDS(1, 2 + max(5, 1 + 2 * Arg_1) * nat(Arg_0) + max(2 * Arg_1, 4) + max(12, 8 + 2 * Arg_1))