/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), O(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, n^1). (0) CpxIntTrs (1) Koat Proof [FINISHED, 488 ms] (2) BOUNDS(1, n^1) (3) Loat Proof [FINISHED, 1190 ms] (4) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: start(A, B, C, D, E, F, G, H) -> Com_1(stop(A, B, C, D, 0, F, D, H)) :|: 0 >= A && B >= C && B <= C && D >= A && D <= A && E >= F && E <= F && G >= H && G <= H start(A, B, C, D, E, F, G, H) -> Com_1(cut(A, B, C, D, 0, F, D - 1, H)) :|: A >= 2 && B >= C && B <= C && D >= A && D <= A && E >= F && E <= F && G >= H && G <= H start(A, B, C, D, E, F, G, H) -> Com_1(stop(A, B, C, D, 0, F, D - 1, H)) :|: D >= 1 && D <= 1 && B >= C && B <= C && A >= 1 && A <= 1 && E >= F && E <= F && G >= H && G <= H start(A, B, C, D, E, F, G, H) -> Com_1(cut(A, 0, C, D, 1, F, D - 1, H)) :|: A >= 2 && B >= C && B <= C && D >= A && D <= A && E >= F && E <= F && G >= H && G <= H start(A, B, C, D, E, F, G, H) -> Com_1(stop(A, 0, C, D, 0, F, D - 1, H)) :|: D >= 1 && D <= 1 && B >= C && B <= C && A >= 1 && A <= 1 && E >= F && E <= F && G >= H && G <= H cut(A, B, C, D, E, F, G, H) -> Com_1(cut(A, B, C, D, E - 1, F, G - 1, H)) :|: G >= 2 && E >= 2 && G >= 1 && E >= 0 && A >= G + 1 && A >= G + E && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(stop(A, B, C, D, E - 1, F, G - 1, H)) :|: E >= 2 && E >= 0 && A >= 2 && A >= 1 + E && G >= 1 && G <= 1 && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(cut(A, B, C, D, 0, F, G - 1, H)) :|: G >= 2 && 1 >= E && G >= 1 && E >= 0 && A >= G + 1 && A >= G + E && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(stop(A, B, C, D, 0, F, G - 1, H)) :|: 1 >= E && E >= 0 && A >= 2 && A >= 1 + E && G >= 1 && G <= 1 && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(cut(A, E, C, D, 1 + E, F, G - 1, H)) :|: G >= 2 && A >= E + 2 && G >= 1 && E >= 0 && A >= G + 1 && A >= G + E && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(stop(A, E, C, D, 1 + E, F, G - 1, H)) :|: A >= E + 2 && E >= 0 && A >= 2 && A >= 1 + E && G >= 1 && G <= 1 && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(cut(A, E, C, D, 0, F, G - 1, H)) :|: G >= 2 && E + 1 >= A && G >= 1 && E >= 0 && A >= G + 1 && A >= G + E && D >= A && D <= A cut(A, B, C, D, E, F, G, H) -> Com_1(stop(A, E, C, D, 0, F, G - 1, H)) :|: A >= 1 && A >= 2 && G >= 1 && G <= 1 && E + 1 >= A && E + 1 <= A && D >= A && D <= A start0(A, B, C, D, E, F, G, H) -> Com_1(start(A, C, C, A, F, F, H, H)) :|: TRUE The start-symbols are:[start0_8] ---------------------------------------- (1) Koat Proof (FINISHED) YES(?, 3*Ar_0 + 10) Initial complexity problem: 1: T: (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3, Ar_7)) [ 0 >= Ar_0 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, 0, Ar_2, Ar_3, 1, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, 0, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 + 1 >= Ar_0 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start(Ar_0, Ar_2, Ar_2, Ar_0, Ar_5, Ar_5, Ar_7, Ar_7)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Testing for reachability in the complexity graph removes the following transition from problem 1: cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 + 1 >= Ar_0 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] We thus obtain the following problem: 2: T: (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, 0, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, 0, Ar_2, Ar_3, 1, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3, Ar_7)) [ 0 >= Ar_0 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: ?, Cost: 1) start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start(Ar_0, Ar_2, Ar_2, Ar_0, Ar_5, Ar_5, Ar_7, Ar_7)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, 0, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, 0, Ar_2, Ar_3, 1, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3, Ar_7)) [ 0 >= Ar_0 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start(Ar_0, Ar_2, Ar_2, Ar_0, Ar_5, Ar_5, Ar_7, Ar_7)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(cut) = 1 Pol(stop) = 0 Pol(start) = 1 Pol(start0) = 1 Pol(koat_start) = 1 orients all transitions weakly and the transitions cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] strictly and produces the following problem: 4: T: (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: ?, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, 0, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, 0, Ar_2, Ar_3, 1, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3, Ar_7)) [ 0 >= Ar_0 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start(Ar_0, Ar_2, Ar_2, Ar_0, Ar_5, Ar_5, Ar_7, Ar_7)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 A polynomial rank function with Pol(cut) = V_7 Pol(stop) = V_7 Pol(start) = V_1 Pol(start0) = V_1 Pol(koat_start) = V_1 orients all transitions weakly and the transitions cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] strictly and produces the following problem: 5: T: (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_4 >= 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: Ar_0, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4 - 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_4 >= 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= 1 /\ Ar_0 >= 2 /\ Ar_6 = 1 /\ Ar_4 + 1 = Ar_0 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_0 >= Ar_4 + 2 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: Ar_0, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_4, Ar_2, Ar_3, Ar_4 + 1, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ Ar_0 >= Ar_4 + 2 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ 1 >= Ar_4 /\ Ar_4 >= 0 /\ Ar_0 >= 2 /\ Ar_0 >= Ar_4 + 1 /\ Ar_6 = 1 /\ Ar_3 = Ar_0 ] (Comp: Ar_0, Cost: 1) cut(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_6 - 1, Ar_7)) [ Ar_6 >= 2 /\ 1 >= Ar_4 /\ Ar_6 >= 1 /\ Ar_4 >= 0 /\ Ar_0 >= Ar_6 + 1 /\ Ar_0 >= Ar_6 + Ar_4 /\ Ar_3 = Ar_0 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, 0, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, 0, Ar_2, Ar_3, 1, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_3 = 1 /\ Ar_1 = Ar_2 /\ Ar_0 = 1 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(cut(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3 - 1, Ar_7)) [ Ar_0 >= 2 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(stop(Ar_0, Ar_1, Ar_2, Ar_3, 0, Ar_5, Ar_3, Ar_7)) [ 0 >= Ar_0 /\ Ar_1 = Ar_2 /\ Ar_3 = Ar_0 /\ Ar_4 = Ar_5 /\ Ar_6 = Ar_7 ] (Comp: 1, Cost: 1) start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start(Ar_0, Ar_2, Ar_2, Ar_0, Ar_5, Ar_5, Ar_7, Ar_7)) (Comp: 1, Cost: 0) koat_start(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7) -> Com_1(start0(Ar_0, Ar_1, Ar_2, Ar_3, Ar_4, Ar_5, Ar_6, Ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Complexity upper bound 3*Ar_0 + 10 Time: 0.468 sec (SMT: 0.339 sec) ---------------------------------------- (2) BOUNDS(1, n^1) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: start0 0: start -> stop : E'=0, G'=D, [ 0>=A && B==C && D==A && E==F && G==H ], cost: 1 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 2: start -> stop : E'=0, G'=-1+D, [ D==1 && B==C && A==1 && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 4: start -> stop : B'=0, E'=0, G'=-1+D, [ D==1 && B==C && A==1 && E==F && G==H ], cost: 1 5: cut -> cut : E'=-1+E, G'=-1+G, [ G>=2 && E>=2 && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 6: cut -> stop : E'=-1+E, G'=-1+G, [ E>=2 && E>=0 && A>=2 && A>=1+E && G==1 && D==A ], cost: 1 7: cut -> cut : E'=0, G'=-1+G, [ G>=2 && 1>=E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 8: cut -> stop : E'=0, G'=-1+G, [ 1>=E && E>=0 && A>=2 && A>=1+E && G==1 && D==A ], cost: 1 9: cut -> cut : B'=E, E'=1+E, G'=-1+G, [ G>=2 && A>=2+E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 10: cut -> stop : B'=E, E'=1+E, G'=-1+G, [ A>=2+E && E>=0 && A>=2 && A>=1+E && G==1 && D==A ], cost: 1 11: cut -> cut : B'=E, E'=0, G'=-1+G, [ G>=2 && 1+E>=A && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 12: cut -> stop : B'=E, E'=0, G'=-1+G, [ A>=1 && A>=2 && G==1 && 1+E==A && D==A ], cost: 1 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Removed unreachable and leaf rules: Start location: start0 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 5: cut -> cut : E'=-1+E, G'=-1+G, [ G>=2 && E>=2 && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 7: cut -> cut : E'=0, G'=-1+G, [ G>=2 && 1>=E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 9: cut -> cut : B'=E, E'=1+E, G'=-1+G, [ G>=2 && A>=2+E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 11: cut -> cut : B'=E, E'=0, G'=-1+G, [ G>=2 && 1+E>=A && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Removed rules with unsatisfiable guard: Start location: start0 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 5: cut -> cut : E'=-1+E, G'=-1+G, [ G>=2 && E>=2 && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 7: cut -> cut : E'=0, G'=-1+G, [ G>=2 && 1>=E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 9: cut -> cut : B'=E, E'=1+E, G'=-1+G, [ G>=2 && A>=2+E && G>=1 && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Simplified all rules, resulting in: Start location: start0 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 5: cut -> cut : E'=-1+E, G'=-1+G, [ G>=2 && E>=2 && A>=1+G && A>=G+E && D==A ], cost: 1 7: cut -> cut : E'=0, G'=-1+G, [ G>=2 && 1>=E && E>=0 && A>=1+G && D==A ], cost: 1 9: cut -> cut : B'=E, E'=1+E, G'=-1+G, [ G>=2 && A>=2+E && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 ### Simplification by acceleration and chaining ### Accelerating simple loops of location 1. Accelerating the following rules: 5: cut -> cut : E'=-1+E, G'=-1+G, [ G>=2 && E>=2 && A>=1+G && A>=G+E && D==A ], cost: 1 7: cut -> cut : E'=0, G'=-1+G, [ G>=2 && 1>=E && E>=0 && A>=1+G && D==A ], cost: 1 9: cut -> cut : B'=E, E'=1+E, G'=-1+G, [ G>=2 && A>=2+E && E>=0 && A>=1+G && A>=G+E && D==A ], cost: 1 Accelerated rule 5 with metering function -1+G (after adding E>=G), yielding the new rule 14. Accelerated rule 5 with metering function -1+E (after adding E<=G), yielding the new rule 15. Accelerated rule 7 with metering function -1+G, yielding the new rule 16. Accelerated rule 9 with metering function -1+G, yielding the new rule 17. Removing the simple loops: 5 7 9. Accelerated all simple loops using metering functions (where possible): Start location: start0 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 14: cut -> cut : E'=1-G+E, G'=1, [ G>=2 && E>=2 && A>=1+G && A>=G+E && D==A && E>=G ], cost: -1+G 15: cut -> cut : E'=1, G'=1+G-E, [ G>=2 && E>=2 && A>=1+G && A>=G+E && D==A && E<=G ], cost: -1+E 16: cut -> cut : E'=0, G'=1, [ G>=2 && 1>=E && E>=0 && A>=1+G && D==A ], cost: -1+G 17: cut -> cut : B'=-2+G+E, E'=-1+G+E, G'=1, [ G>=2 && A>=2+E && E>=0 && A>=1+G && A>=G+E && D==A ], cost: -1+G 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Chained accelerated rules (with incoming rules): Start location: start0 1: start -> cut : E'=0, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 3: start -> cut : B'=0, E'=1, G'=-1+D, [ A>=2 && B==C && D==A && E==F && G==H ], cost: 1 18: start -> cut : E'=0, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 19: start -> cut : B'=0, E'=0, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 20: start -> cut : B'=-3+D, E'=-2+D, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 21: start -> cut : B'=-2+D, E'=-1+D, G'=1, [ B==C && D==A && E==F && G==H && -1+D>=2 && A>=3 ], cost: -1+D 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Removed unreachable locations (and leaf rules with constant cost): Start location: start0 18: start -> cut : E'=0, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 19: start -> cut : B'=0, E'=0, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 20: start -> cut : B'=-3+D, E'=-2+D, G'=1, [ A>=2 && B==C && D==A && E==F && G==H && -1+D>=2 ], cost: -1+D 21: start -> cut : B'=-2+D, E'=-1+D, G'=1, [ B==C && D==A && E==F && G==H && -1+D>=2 && A>=3 ], cost: -1+D 13: start0 -> start : B'=C, D'=A, E'=F, G'=H, [], cost: 1 Eliminated locations (on tree-shaped paths): Start location: start0 22: start0 -> cut : B'=C, D'=A, E'=0, G'=1, [ -1+A>=2 ], cost: A 23: start0 -> cut : B'=0, D'=A, E'=0, G'=1, [ -1+A>=2 ], cost: A 24: start0 -> cut : B'=-3+A, D'=A, E'=-2+A, G'=1, [ -1+A>=2 ], cost: A 25: start0 -> cut : B'=-2+A, D'=A, E'=-1+A, G'=1, [ -1+A>=2 ], cost: A ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: start0 25: start0 -> cut : B'=-2+A, D'=A, E'=-1+A, G'=1, [ -1+A>=2 ], cost: A Computing asymptotic complexity for rule 25 Solved the limit problem by the following transformations: Created initial limit problem: A (+), -2+A (+/+!) [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 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: n Rule cost: A Rule guard: [ -1+A>=2 ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (4) BOUNDS(n^1, INF)