/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.koat /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(?, O(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, 1). (0) CpxIntTrs (1) Koat Proof [FINISHED, 36 ms] (2) BOUNDS(1, 1) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: f0(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f11(100, O, 1, D, E, F, G, H, I, J, K, L, M, N)) :|: TRUE f0(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f11(100, O, 0, D, E, F, G, H, I, J, K, L, M, N)) :|: TRUE f11(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f23(A, B, 1, 1, 1, 100, O, 1, I, J, K, L, M, N)) :|: C >= 1 && C <= 1 f11(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f23(A, B, 1, 1, 1, 100, O, 0, I, J, K, L, M, N)) :|: C >= 1 && C <= 1 f23(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f26(A, B, C, D, H, F, G, H, 100, J, K, L, M, N)) :|: 0 >= H f23(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f26(A, B, C, D, H, F, G, H, 100, J, K, L, M, N)) :|: H >= 2 f11(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f36(A, B, C, C, C, F, G, H, I, 100, K, L, M, N)) :|: 0 >= C f11(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f36(A, B, C, C, C, F, G, H, I, 100, K, L, M, N)) :|: C >= 2 f23(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, 1, F, G, 1, I, J, O, P, M, N)) :|: 0 >= 2 + O && H >= 1 && H <= 1 f23(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, 1, F, G, 1, I, J, O, P, M, N)) :|: O >= 0 && H >= 1 && H <= 1 f23(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, 1, F, G, 1, I, J, -(1), L, 100, O)) :|: H >= 1 && H <= 1 f36(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) :|: 0 >= O + 1 f36(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) :|: TRUE f26(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) :|: 0 >= O + 1 f26(A, B, C, D, E, F, G, H, I, J, K, L, M, N) -> Com_1(f32(A, B, C, D, E, F, G, H, I, J, K, L, M, N)) :|: TRUE The start-symbols are:[f0_14] ---------------------------------------- (1) Koat Proof (FINISHED) YES(?, 13) Initial complexity problem: 1: T: (Comp: ?, Cost: 1) f0(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f11(100, o, 1, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) (Comp: ?, Cost: 1) f0(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f11(100, o, 0, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) (Comp: ?, Cost: 1) f11(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f23(ar_0, ar_1, 1, 1, 1, 100, o, 1, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f11(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f23(ar_0, ar_1, 1, 1, 1, 100, o, 0, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f23(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f26(ar_0, ar_1, ar_2, ar_3, ar_7, ar_5, ar_6, ar_7, 100, ar_9, ar_10, ar_11, ar_12, ar_13)) [ 0 >= ar_7 ] (Comp: ?, Cost: 1) f23(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f26(ar_0, ar_1, ar_2, ar_3, ar_7, ar_5, ar_6, ar_7, 100, ar_9, ar_10, ar_11, ar_12, ar_13)) [ ar_7 >= 2 ] (Comp: ?, Cost: 1) f11(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f36(ar_0, ar_1, ar_2, ar_2, ar_2, ar_5, ar_6, ar_7, ar_8, 100, ar_10, ar_11, ar_12, ar_13)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) f11(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f36(ar_0, ar_1, ar_2, ar_2, ar_2, ar_5, ar_6, ar_7, ar_8, 100, ar_10, ar_11, ar_12, ar_13)) [ ar_2 >= 2 ] (Comp: ?, Cost: 1) f23(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, 1, ar_5, ar_6, 1, ar_8, ar_9, o, p, ar_12, ar_13)) [ 0 >= o + 2 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, 1, ar_5, ar_6, 1, ar_8, ar_9, o, p, ar_12, ar_13)) [ o >= 0 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, 1, ar_5, ar_6, 1, ar_8, ar_9, -1, ar_11, 100, o)) [ ar_7 = 1 ] (Comp: ?, Cost: 1) f36(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f36(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) (Comp: ?, Cost: 1) f26(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f26(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f32(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13) -> Com_1(f0(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5, ar_6, ar_7, ar_8, ar_9, ar_10, ar_11, ar_12, ar_13)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Slicing away variables that do not contribute to conditions from problem 1 leaves variables [ar_2, ar_7]. We thus obtain the following problem: 2: T: (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ ar_2 >= 2 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ ar_7 >= 2 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) start location: koat_start leaf cost: 0 Testing for reachability in the complexity graph removes the following transitions from problem 2: f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ ar_2 >= 2 ] f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ ar_7 >= 2 ] We thus obtain the following problem: 3: T: (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Repeatedly propagating knowledge in problem 3 produces the following problem: 4: T: (Comp: 1, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: 1, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] (Comp: 1, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] (Comp: 1, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] (Comp: 1, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) (Comp: 1, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] start location: koat_start leaf cost: 0 Complexity upper bound 13 Time: 0.050 sec (SMT: 0.047 sec) ---------------------------------------- (2) BOUNDS(1, 1)