3.50/1.73 WORST_CASE(?, O(1)) 3.50/1.74 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 3.50/1.74 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 3.50/1.74 3.50/1.74 3.50/1.74 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(1, 1). 3.50/1.74 3.50/1.74 (0) CpxIntTrs 3.50/1.74 (1) Koat Proof [FINISHED, 19 ms] 3.50/1.74 (2) BOUNDS(1, 1) 3.50/1.74 3.50/1.74 3.50/1.74 ---------------------------------------- 3.50/1.74 3.50/1.74 (0) 3.50/1.74 Obligation: 3.50/1.74 Complexity Int TRS consisting of the following rules: 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 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 3.50/1.74 3.50/1.74 The start-symbols are:[f0_14] 3.50/1.74 3.50/1.74 3.50/1.74 ---------------------------------------- 3.50/1.74 3.50/1.74 (1) Koat Proof (FINISHED) 3.50/1.74 YES(?, 13) 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Initial complexity problem: 3.50/1.74 3.50/1.74 1: T: 3.50/1.74 3.50/1.74 (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)) 3.50/1.74 3.50/1.74 (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)) 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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)) 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 (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)) 3.50/1.74 3.50/1.74 (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 ] 3.50/1.74 3.50/1.74 start location: koat_start 3.50/1.74 3.50/1.74 leaf cost: 0 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Slicing away variables that do not contribute to conditions from problem 1 leaves variables [ar_2, ar_7]. 3.50/1.74 3.50/1.74 We thus obtain the following problem: 3.50/1.74 3.50/1.74 2: T: 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ ar_2 >= 2 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ ar_7 >= 2 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) 3.50/1.74 3.50/1.74 start location: koat_start 3.50/1.74 3.50/1.74 leaf cost: 0 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Testing for reachability in the complexity graph removes the following transitions from problem 2: 3.50/1.74 3.50/1.74 f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ ar_2 >= 2 ] 3.50/1.74 3.50/1.74 f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ ar_7 >= 2 ] 3.50/1.74 3.50/1.74 We thus obtain the following problem: 3.50/1.74 3.50/1.74 3: T: 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) 3.50/1.74 3.50/1.74 (Comp: ?, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] 3.50/1.74 3.50/1.74 start location: koat_start 3.50/1.74 3.50/1.74 leaf cost: 0 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Repeatedly propagating knowledge in problem 3 produces the following problem: 3.50/1.74 3.50/1.74 4: T: 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f26(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ 0 >= o + 2 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ o >= 0 /\ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f32(ar_2, 1)) [ ar_7 = 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f23(ar_2, ar_7) -> Com_1(f26(ar_2, ar_7)) [ 0 >= ar_7 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) [ 0 >= o + 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f36(ar_2, ar_7) -> Com_1(f32(ar_2, ar_7)) 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 1)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f23(1, 0)) [ ar_2 = 1 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f11(ar_2, ar_7) -> Com_1(f36(ar_2, ar_7)) [ 0 >= ar_2 ] 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(1, ar_7)) 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 1) f0(ar_2, ar_7) -> Com_1(f11(0, ar_7)) 3.50/1.74 3.50/1.74 (Comp: 1, Cost: 0) koat_start(ar_2, ar_7) -> Com_1(f0(ar_2, ar_7)) [ 0 <= 0 ] 3.50/1.74 3.50/1.74 start location: koat_start 3.50/1.74 3.50/1.74 leaf cost: 0 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Complexity upper bound 13 3.50/1.74 3.50/1.74 3.50/1.74 3.50/1.74 Time: 0.053 sec (SMT: 0.049 sec) 3.50/1.74 3.50/1.74 3.50/1.74 ---------------------------------------- 3.50/1.74 3.50/1.74 (2) 3.50/1.74 BOUNDS(1, 1) 3.50/1.76 EOF