/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.koat /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^2), O(n^2)) 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^2, n^2). (0) CpxIntTrs (1) Koat Proof [FINISHED, 14 ms] (2) BOUNDS(1, n^2) (3) Loat Proof [FINISHED, 712 ms] (4) BOUNDS(n^2, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: evalsipmabubblestart(A, B) -> Com_1(evalsipmabubbleentryin(A, B)) :|: TRUE evalsipmabubbleentryin(A, B) -> Com_1(evalsipmabubblebb6in(A, B)) :|: TRUE evalsipmabubblebb6in(A, B) -> Com_1(evalsipmabubblebb4in(A, 0)) :|: A >= 0 evalsipmabubblebb6in(A, B) -> Com_1(evalsipmabubblereturnin(A, B)) :|: 0 >= A + 1 evalsipmabubblebb4in(A, B) -> Com_1(evalsipmabubblebb1in(A, B)) :|: A >= 1 + B evalsipmabubblebb4in(A, B) -> Com_1(evalsipmabubblebb5in(A, B)) :|: B >= A evalsipmabubblebb1in(A, B) -> Com_1(evalsipmabubblebb2in(A, B)) :|: C >= D + 1 evalsipmabubblebb1in(A, B) -> Com_1(evalsipmabubblebb3in(A, B)) :|: D >= C evalsipmabubblebb2in(A, B) -> Com_1(evalsipmabubblebb3in(A, B)) :|: TRUE evalsipmabubblebb3in(A, B) -> Com_1(evalsipmabubblebb4in(A, B + 1)) :|: TRUE evalsipmabubblebb5in(A, B) -> Com_1(evalsipmabubblebb6in(A - 1, B)) :|: TRUE evalsipmabubblereturnin(A, B) -> Com_1(evalsipmabubblestop(A, B)) :|: TRUE The start-symbols are:[evalsipmabubblestart_2] ---------------------------------------- (1) Koat Proof (FINISHED) YES(?, 137*Ar_0 + 18*Ar_0^2 + 125) Initial complexity problem: 1: T: (Comp: ?, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: ?, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: ?, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 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) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: ?, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: ?, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalsipmabubblestart) = 2 Pol(evalsipmabubbleentryin) = 2 Pol(evalsipmabubblebb6in) = 2 Pol(evalsipmabubblebb4in) = 2 Pol(evalsipmabubblereturnin) = 1 Pol(evalsipmabubblebb1in) = 2 Pol(evalsipmabubblebb5in) = 2 Pol(evalsipmabubblebb2in) = 2 Pol(evalsipmabubblebb3in) = 2 Pol(evalsipmabubblestop) = 0 Pol(koat_start) = 2 orients all transitions weakly and the transitions evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] strictly and produces the following problem: 3: T: (Comp: 1, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: 2, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: ?, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: 2, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalsipmabubblestart) = V_1 + 1 Pol(evalsipmabubbleentryin) = V_1 + 1 Pol(evalsipmabubblebb6in) = V_1 + 1 Pol(evalsipmabubblebb4in) = V_1 Pol(evalsipmabubblereturnin) = V_1 Pol(evalsipmabubblebb1in) = V_1 Pol(evalsipmabubblebb5in) = V_1 Pol(evalsipmabubblebb2in) = V_1 Pol(evalsipmabubblebb3in) = V_1 Pol(evalsipmabubblestop) = V_1 Pol(koat_start) = V_1 + 1 orients all transitions weakly and the transition evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] strictly and produces the following problem: 4: T: (Comp: 1, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: Ar_0 + 1, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: 2, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: ?, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: 2, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalsipmabubblebb5in) = 1 Pol(evalsipmabubblebb6in) = 0 Pol(evalsipmabubblebb4in) = 2 Pol(evalsipmabubblebb1in) = 2 Pol(evalsipmabubblebb3in) = 2 Pol(evalsipmabubblebb2in) = 2 and size complexities S("koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ]", 0-0) = Ar_0 S("koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ]", 0-1) = Ar_1 S("evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1))", 0-0) = ? S("evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1))", 0-1) = ? S("evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1))", 0-0) = ? S("evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1))", 0-1) = ? S("evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1))", 0-0) = ? S("evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1))", 0-1) = ? S("evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1))", 0-0) = ? S("evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1))", 0-1) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ]", 0-0) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ]", 0-1) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ]", 0-0) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ]", 0-1) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ]", 0-0) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ]", 0-1) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ]", 0-0) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ]", 0-1) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ]", 0-0) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ]", 0-1) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ]", 0-0) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ]", 0-1) = 0 S("evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1))", 0-0) = Ar_0 S("evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1))", 0-1) = Ar_1 S("evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1))", 0-0) = Ar_0 S("evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1))", 0-1) = Ar_1 orients the transitions evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] weakly and the transitions evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] strictly and produces the following problem: 5: T: (Comp: 1, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: Ar_0 + 1, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: 2, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: 2, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(evalsipmabubblebb4in) = V_1 - V_2 + 1 Pol(evalsipmabubblebb1in) = V_1 - V_2 Pol(evalsipmabubblebb3in) = V_1 - V_2 Pol(evalsipmabubblebb2in) = V_1 - V_2 and size complexities S("koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ]", 0-0) = Ar_0 S("koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ]", 0-1) = Ar_1 S("evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1))", 0-0) = 3*Ar_0 + 162 S("evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1))", 0-1) = ? S("evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1))", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1))", 0-1) = ? S("evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1))", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1))", 0-1) = ? S("evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1))", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1))", 0-1) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ]", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ]", 0-1) = ? S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ]", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ]", 0-1) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ]", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ]", 0-1) = ? S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ]", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ]", 0-1) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ]", 0-0) = 3*Ar_0 + 54 S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ]", 0-1) = ? S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ]", 0-0) = 3*Ar_0 + 18 S("evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ]", 0-1) = 0 S("evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1))", 0-0) = Ar_0 S("evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1))", 0-1) = Ar_1 S("evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1))", 0-0) = Ar_0 S("evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1))", 0-1) = Ar_1 orients the transitions evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] weakly and the transition evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] strictly and produces the following problem: 6: T: (Comp: 1, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: Ar_0 + 1, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: 2, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: 3*Ar_0^2 + 22*Ar_0 + 19, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: ?, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: ?, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: ?, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: 2, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Repeatedly propagating knowledge in problem 6 produces the following problem: 7: T: (Comp: 1, Cost: 1) evalsipmabubblestart(Ar_0, Ar_1) -> Com_1(evalsipmabubbleentryin(Ar_0, Ar_1)) (Comp: 1, Cost: 1) evalsipmabubbleentryin(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0, Ar_1)) (Comp: Ar_0 + 1, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, 0)) [ Ar_0 >= 0 ] (Comp: 2, Cost: 1) evalsipmabubblebb6in(Ar_0, Ar_1) -> Com_1(evalsipmabubblereturnin(Ar_0, Ar_1)) [ 0 >= Ar_0 + 1 ] (Comp: 3*Ar_0^2 + 22*Ar_0 + 19, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb1in(Ar_0, Ar_1)) [ Ar_0 >= Ar_1 + 1 ] (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb4in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb5in(Ar_0, Ar_1)) [ Ar_1 >= Ar_0 ] (Comp: 3*Ar_0^2 + 22*Ar_0 + 19, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb2in(Ar_0, Ar_1)) [ C >= D + 1 ] (Comp: 3*Ar_0^2 + 22*Ar_0 + 19, Cost: 1) evalsipmabubblebb1in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) [ C >= D ] (Comp: 3*Ar_0^2 + 22*Ar_0 + 19, Cost: 1) evalsipmabubblebb2in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb3in(Ar_0, Ar_1)) (Comp: 6*Ar_0^2 + 44*Ar_0 + 38, Cost: 1) evalsipmabubblebb3in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb4in(Ar_0, Ar_1 + 1)) (Comp: 2*Ar_0 + 2, Cost: 1) evalsipmabubblebb5in(Ar_0, Ar_1) -> Com_1(evalsipmabubblebb6in(Ar_0 - 1, Ar_1)) (Comp: 2, Cost: 1) evalsipmabubblereturnin(Ar_0, Ar_1) -> Com_1(evalsipmabubblestop(Ar_0, Ar_1)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1) -> Com_1(evalsipmabubblestart(Ar_0, Ar_1)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Complexity upper bound 137*Ar_0 + 18*Ar_0^2 + 125 Time: 0.078 sec (SMT: 0.066 sec) ---------------------------------------- (2) BOUNDS(1, n^2) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: evalsipmabubblestart 0: evalsipmabubblestart -> evalsipmabubbleentryin : [], cost: 1 1: evalsipmabubbleentryin -> evalsipmabubblebb6in : [], cost: 1 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 3: evalsipmabubblebb6in -> evalsipmabubblereturnin : [ 0>=1+A ], cost: 1 4: evalsipmabubblebb4in -> evalsipmabubblebb1in : [ A>=1+B ], cost: 1 5: evalsipmabubblebb4in -> evalsipmabubblebb5in : [ B>=A ], cost: 1 6: evalsipmabubblebb1in -> evalsipmabubblebb2in : [ free>=1+free_1 ], cost: 1 7: evalsipmabubblebb1in -> evalsipmabubblebb3in : [ free_2>=free_3 ], cost: 1 8: evalsipmabubblebb2in -> evalsipmabubblebb3in : [], cost: 1 9: evalsipmabubblebb3in -> evalsipmabubblebb4in : B'=1+B, [], cost: 1 10: evalsipmabubblebb5in -> evalsipmabubblebb6in : A'=-1+A, [], cost: 1 11: evalsipmabubblereturnin -> evalsipmabubblestop : [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 0: evalsipmabubblestart -> evalsipmabubbleentryin : [], cost: 1 Removed unreachable and leaf rules: Start location: evalsipmabubblestart 0: evalsipmabubblestart -> evalsipmabubbleentryin : [], cost: 1 1: evalsipmabubbleentryin -> evalsipmabubblebb6in : [], cost: 1 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 4: evalsipmabubblebb4in -> evalsipmabubblebb1in : [ A>=1+B ], cost: 1 5: evalsipmabubblebb4in -> evalsipmabubblebb5in : [ B>=A ], cost: 1 6: evalsipmabubblebb1in -> evalsipmabubblebb2in : [ free>=1+free_1 ], cost: 1 7: evalsipmabubblebb1in -> evalsipmabubblebb3in : [ free_2>=free_3 ], cost: 1 8: evalsipmabubblebb2in -> evalsipmabubblebb3in : [], cost: 1 9: evalsipmabubblebb3in -> evalsipmabubblebb4in : B'=1+B, [], cost: 1 10: evalsipmabubblebb5in -> evalsipmabubblebb6in : A'=-1+A, [], cost: 1 Simplified all rules, resulting in: Start location: evalsipmabubblestart 0: evalsipmabubblestart -> evalsipmabubbleentryin : [], cost: 1 1: evalsipmabubbleentryin -> evalsipmabubblebb6in : [], cost: 1 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 4: evalsipmabubblebb4in -> evalsipmabubblebb1in : [ A>=1+B ], cost: 1 5: evalsipmabubblebb4in -> evalsipmabubblebb5in : [ B>=A ], cost: 1 6: evalsipmabubblebb1in -> evalsipmabubblebb2in : [], cost: 1 7: evalsipmabubblebb1in -> evalsipmabubblebb3in : [], cost: 1 8: evalsipmabubblebb2in -> evalsipmabubblebb3in : [], cost: 1 9: evalsipmabubblebb3in -> evalsipmabubblebb4in : B'=1+B, [], cost: 1 10: evalsipmabubblebb5in -> evalsipmabubblebb6in : A'=-1+A, [], cost: 1 ### Simplification by acceleration and chaining ### Eliminated locations (on linear paths): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 4: evalsipmabubblebb4in -> evalsipmabubblebb1in : [ A>=1+B ], cost: 1 13: evalsipmabubblebb4in -> evalsipmabubblebb6in : A'=-1+A, [ B>=A ], cost: 2 7: evalsipmabubblebb1in -> evalsipmabubblebb3in : [], cost: 1 14: evalsipmabubblebb1in -> evalsipmabubblebb3in : [], cost: 2 9: evalsipmabubblebb3in -> evalsipmabubblebb4in : B'=1+B, [], cost: 1 Eliminated locations (on tree-shaped paths): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 13: evalsipmabubblebb4in -> evalsipmabubblebb6in : A'=-1+A, [ B>=A ], cost: 2 15: evalsipmabubblebb4in -> evalsipmabubblebb3in : [ A>=1+B ], cost: 2 16: evalsipmabubblebb4in -> evalsipmabubblebb3in : [ A>=1+B ], cost: 3 9: evalsipmabubblebb3in -> evalsipmabubblebb4in : B'=1+B, [], cost: 1 Eliminated locations (on tree-shaped paths): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 13: evalsipmabubblebb4in -> evalsipmabubblebb6in : A'=-1+A, [ B>=A ], cost: 2 17: evalsipmabubblebb4in -> evalsipmabubblebb4in : B'=1+B, [ A>=1+B ], cost: 3 18: evalsipmabubblebb4in -> evalsipmabubblebb4in : B'=1+B, [ A>=1+B ], cost: 4 Accelerating simple loops of location 3. Simplified some of the simple loops (and removed duplicate rules). Accelerating the following rules: 18: evalsipmabubblebb4in -> evalsipmabubblebb4in : B'=1+B, [ A>=1+B ], cost: 4 Accelerated rule 18 with metering function A-B, yielding the new rule 19. Removing the simple loops: 18. Accelerated all simple loops using metering functions (where possible): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 13: evalsipmabubblebb4in -> evalsipmabubblebb6in : A'=-1+A, [ B>=A ], cost: 2 19: evalsipmabubblebb4in -> evalsipmabubblebb4in : B'=A, [ A>=1+B ], cost: 4*A-4*B Chained accelerated rules (with incoming rules): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 2: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=0, [ A>=0 ], cost: 1 20: evalsipmabubblebb6in -> evalsipmabubblebb4in : B'=A, [ A>=1 ], cost: 1+4*A 13: evalsipmabubblebb4in -> evalsipmabubblebb6in : A'=-1+A, [ B>=A ], cost: 2 Eliminated locations (on tree-shaped paths): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 21: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=-1+A, B'=0, [ A>=0 && 0>=A ], cost: 3 22: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=-1+A, B'=A, [ A>=1 ], cost: 3+4*A Accelerating simple loops of location 2. Simplified some of the simple loops (and removed duplicate rules). Accelerating the following rules: 21: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=-1+A, B'=0, [ -A==0 ], cost: 3 22: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=-1+A, B'=A, [ A>=1 ], cost: 3+4*A Accelerated rule 21 with metering function 1+A, yielding the new rule 23. Accelerated rule 22 with metering function A, yielding the new rule 24. Removing the simple loops: 21 22. Accelerated all simple loops using metering functions (where possible): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 23: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=-1, B'=0, [ -A==0 ], cost: 3+3*A 24: evalsipmabubblebb6in -> evalsipmabubblebb6in : A'=0, B'=1, [ A>=1 ], cost: 5*A+2*A^2 Chained accelerated rules (with incoming rules): Start location: evalsipmabubblestart 12: evalsipmabubblestart -> evalsipmabubblebb6in : [], cost: 2 25: evalsipmabubblestart -> evalsipmabubblebb6in : A'=-1, B'=0, [ -A==0 ], cost: 5+3*A 26: evalsipmabubblestart -> evalsipmabubblebb6in : A'=0, B'=1, [ A>=1 ], cost: 2+5*A+2*A^2 Removed unreachable locations (and leaf rules with constant cost): Start location: evalsipmabubblestart 25: evalsipmabubblestart -> evalsipmabubblebb6in : A'=-1, B'=0, [ -A==0 ], cost: 5+3*A 26: evalsipmabubblestart -> evalsipmabubblebb6in : A'=0, B'=1, [ A>=1 ], cost: 2+5*A+2*A^2 ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: evalsipmabubblestart 25: evalsipmabubblestart -> evalsipmabubblebb6in : A'=-1, B'=0, [ -A==0 ], cost: 5+3*A 26: evalsipmabubblestart -> evalsipmabubblebb6in : A'=0, B'=1, [ A>=1 ], cost: 2+5*A+2*A^2 Computing asymptotic complexity for rule 25 Could not solve the limit problem. Resulting cost 0 has complexity: Unknown Computing asymptotic complexity for rule 26 Solved the limit problem by the following transformations: Created initial limit problem: A (+/+!), 2+5*A+2*A^2 (+) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {A==n} resulting limit problem: [solved] Solution: A / n Resulting cost 2+2*n^2+5*n has complexity: Poly(n^2) Found new complexity Poly(n^2). Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Poly(n^2) Cpx degree: 2 Solved cost: 2+2*n^2+5*n Rule cost: 2+5*A+2*A^2 Rule guard: [ A>=1 ] WORST_CASE(Omega(n^2),?) ---------------------------------------- (4) BOUNDS(n^2, INF)