Trying to load file: main.koat Initial Control flow graph problem: Start location: f2 0: f2 -> f1 : A'=1, [ A==1 ], cost: 1 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 16: f13 -> f1 : [ B>=1+A ], cost: 1 3: f13 -> f20 : C'=1+B, D'=free, E'=free_1, F'=1, [ A>=B ], cost: 1 4: f20 -> f20 : D'=free_2, E'=free_3, F'=1+F, [ B>=F ], cost: 1 13: f20 -> f31 : F'=1, [ 0>=1+E && F>=1+B ], cost: 1 14: f20 -> f31 : F'=1, [ E>=1 && F>=1+B ], cost: 1 15: f20 -> f31 : E'=0, F'=1, [ F>=1+B && E==0 ], cost: 1 10: f31 -> f1 : C'=A, [ F>=1+B && A==C ], cost: 1 5: f31 -> f31 : F'=1+F, [ B>=F ], cost: 1 11: f31 -> f45 : F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=1+C && F>=1+B ], cost: 1 12: f31 -> f45 : F'=1, G'=free_18, H'=free_19, Q'=free_17, [ C>=1+A && F>=1+B ], cost: 1 6: f45 -> f45 : F'=1+F, G'=free_5, H'=free_6, Q'=free_4, [ B>=F ], cost: 1 9: f45 -> f60 : F'=1, J'=free_12, K'=B, Q_1'=free_13, R'=free_11, [ F>=1+B ], cost: 1 8: f60 -> f13 : B'=1+B, [ F>=1+J ], cost: 1 7: f60 -> f60 : F'=1+F, K'=-1+K, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=K, [ J>=F ], cost: 1 Simplified the transitions: Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 3: f13 -> f20 : C'=1+B, D'=free, E'=free_1, F'=1, [ A>=B ], cost: 1 4: f20 -> f20 : D'=free_2, E'=free_3, F'=1+F, [ B>=F ], cost: 1 13: f20 -> f31 : F'=1, [ 0>=1+E && F>=1+B ], cost: 1 14: f20 -> f31 : F'=1, [ E>=1 && F>=1+B ], cost: 1 15: f20 -> f31 : E'=0, F'=1, [ F>=1+B && E==0 ], cost: 1 5: f31 -> f31 : F'=1+F, [ B>=F ], cost: 1 11: f31 -> f45 : F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=1+C && F>=1+B ], cost: 1 12: f31 -> f45 : F'=1, G'=free_18, H'=free_19, Q'=free_17, [ C>=1+A && F>=1+B ], cost: 1 6: f45 -> f45 : F'=1+F, G'=free_5, H'=free_6, Q'=free_4, [ B>=F ], cost: 1 9: f45 -> f60 : F'=1, J'=free_12, K'=B, Q_1'=free_13, R'=free_11, [ F>=1+B ], cost: 1 8: f60 -> f13 : B'=1+B, [ F>=1+J ], cost: 1 7: f60 -> f60 : F'=1+F, K'=-1+K, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=K, [ J>=F ], cost: 1 Eliminating 1 self-loops for location f20 Self-Loop 4 has the metering function: 1+B-F, resulting in the new transition 17. Removing the self-loops: 4. Eliminating 1 self-loops for location f31 Self-Loop 5 has the metering function: 1+B-F, resulting in the new transition 18. Removing the self-loops: 5. Eliminating 1 self-loops for location f45 Self-Loop 6 has the metering function: 1+B-F, resulting in the new transition 19. Removing the self-loops: 6. Eliminating 1 self-loops for location f60 Self-Loop 7 has the metering function: 1-F+J, resulting in the new transition 20. Removing the self-loops: 7. Removed all Self-loops using metering functions (where possible): Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 3: f13 -> f20 : C'=1+B, D'=free, E'=free_1, F'=1, [ A>=B ], cost: 1 17: f20 -> [7] : D'=free_2, E'=free_3, F'=1+B, [ B>=F ], cost: 1+B-F 18: f31 -> [8] : F'=1+B, [ B>=F ], cost: 1+B-F 19: f45 -> [9] : F'=1+B, G'=free_5, H'=free_6, Q'=free_4, [ B>=F ], cost: 1+B-F 20: f60 -> [10] : F'=1+J, K'=-1+K+F-J, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=K+F-J, [ J>=F ], cost: 1-F+J 13: [7] -> f31 : F'=1, [ 0>=1+E && F>=1+B ], cost: 1 14: [7] -> f31 : F'=1, [ E>=1 && F>=1+B ], cost: 1 15: [7] -> f31 : E'=0, F'=1, [ F>=1+B && E==0 ], cost: 1 11: [8] -> f45 : F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=1+C && F>=1+B ], cost: 1 12: [8] -> f45 : F'=1, G'=free_18, H'=free_19, Q'=free_17, [ C>=1+A && F>=1+B ], cost: 1 9: [9] -> f60 : F'=1, J'=free_12, K'=B, Q_1'=free_13, R'=free_11, [ F>=1+B ], cost: 1 8: [10] -> f13 : B'=1+B, [ F>=1+J ], cost: 1 Applied simple chaining: Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 3: f13 -> [7] : C'=1+B, D'=free_2, E'=free_3, F'=1+B, [ A>=B && B>=1 ], cost: 1+B 18: f31 -> [8] : F'=1+B, [ B>=F ], cost: 1+B-F 19: f45 -> f13 : B'=1+B, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ B>=F && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 3+B+free_12-F 13: [7] -> f31 : F'=1, [ 0>=1+E && F>=1+B ], cost: 1 14: [7] -> f31 : F'=1, [ E>=1 && F>=1+B ], cost: 1 15: [7] -> f31 : E'=0, F'=1, [ F>=1+B && E==0 ], cost: 1 11: [8] -> f45 : F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=1+C && F>=1+B ], cost: 1 12: [8] -> f45 : F'=1, G'=free_18, H'=free_19, Q'=free_17, [ C>=1+A && F>=1+B ], cost: 1 Applied chaining over branches and pruning: Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 21: f13 -> f31 : C'=1+B, D'=free_2, E'=free_3, F'=1, [ A>=B && B>=1 && 0>=1+free_3 && 1+B>=1+B ], cost: 2+B 22: f13 -> f31 : C'=1+B, D'=free_2, E'=free_3, F'=1, [ A>=B && B>=1 && free_3>=1 && 1+B>=1+B ], cost: 2+B 23: f13 -> f31 : C'=1+B, D'=free_2, E'=0, F'=1, [ A>=B && B>=1 && 1+B>=1+B && free_3==0 ], cost: 2+B 24: f31 -> f45 : F'=1, G'=free_15, H'=free_16, Q'=free_14, [ B>=F && A>=1+C && 1+B>=1+B ], cost: 2+B-F 25: f31 -> f45 : F'=1, G'=free_18, H'=free_19, Q'=free_17, [ B>=F && C>=1+A && 1+B>=1+B ], cost: 2+B-F 19: f45 -> f13 : B'=1+B, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ B>=F && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 3+B+free_12-F Applied chaining over branches and pruning: Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 26: f13 -> f45 : C'=1+B, D'=free_2, E'=free_3, F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=B && B>=1 && 0>=1+free_3 && 1+B>=1+B && B>=1 && A>=2+B && 1+B>=1+B ], cost: 3+2*B 27: f13 -> f45 : C'=1+B, D'=free_2, E'=free_3, F'=1, G'=free_18, H'=free_19, Q'=free_17, [ A>=B && B>=1 && 0>=1+free_3 && 1+B>=1+B && B>=1 && 1+B>=1+A && 1+B>=1+B ], cost: 3+2*B 28: f13 -> f45 : C'=1+B, D'=free_2, E'=free_3, F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=B && B>=1 && free_3>=1 && 1+B>=1+B && B>=1 && A>=2+B && 1+B>=1+B ], cost: 3+2*B 30: f13 -> f45 : C'=1+B, D'=free_2, E'=0, F'=1, G'=free_15, H'=free_16, Q'=free_14, [ A>=B && B>=1 && 1+B>=1+B && free_3==0 && B>=1 && A>=2+B && 1+B>=1+B ], cost: 3+2*B 31: f13 -> f45 : C'=1+B, D'=free_2, E'=0, F'=1, G'=free_18, H'=free_19, Q'=free_17, [ A>=B && B>=1 && 1+B>=1+B && free_3==0 && B>=1 && 1+B>=1+A && 1+B>=1+B ], cost: 3+2*B 19: f45 -> f13 : B'=1+B, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ B>=F && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 3+B+free_12-F Applied chaining over branches and pruning: Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 32: f13 -> f13 : B'=1+B, C'=1+B, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ A>=B && B>=1 && 0>=1+free_3 && 1+B>=1+B && B>=1 && A>=2+B && 1+B>=1+B && B>=1 && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 5+3*B+free_12 33: f13 -> f13 : B'=1+B, C'=1+B, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ A>=B && B>=1 && 0>=1+free_3 && 1+B>=1+B && B>=1 && 1+B>=1+A && 1+B>=1+B && B>=1 && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 5+3*B+free_12 34: f13 -> f13 : B'=1+B, C'=1+B, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ A>=B && B>=1 && free_3>=1 && 1+B>=1+B && B>=1 && A>=2+B && 1+B>=1+B && B>=1 && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 5+3*B+free_12 35: f13 -> f13 : B'=1+B, C'=1+B, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ A>=B && B>=1 && 1+B>=1+B && free_3==0 && B>=1 && A>=2+B && 1+B>=1+B && B>=1 && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 5+3*B+free_12 36: f13 -> f13 : B'=1+B, C'=1+B, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=B-free_12, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1+B-free_12, Q_1'=free_13, R'=free_11, [ A>=B && B>=1 && 1+B>=1+B && free_3==0 && B>=1 && 1+B>=1+A && 1+B>=1+B && B>=1 && 1+B>=1+B && free_12>=1 && 1+free_12>=1+free_12 ], cost: 5+3*B+free_12 Eliminating 5 self-loops for location f13 Self-Loop 32 has the metering function: -1-B+A, resulting in the new transition 37. Self-Loop 33 has the metering function: 1-B+A, resulting in the new transition 38. Self-Loop 34 has the metering function: -1-B+A, resulting in the new transition 39. Self-Loop 35 has the metering function: -1-B+A, resulting in the new transition 40. Self-Loop 36 has the metering function: 1-B+A, resulting in the new transition 41. Removing the self-loops: 32 33 34 35 36. Removed all Self-loops using metering functions (where possible): Start location: f2 1: f2 -> f13 : B'=1, [ 0>=A ], cost: 1 2: f2 -> f13 : B'=1, [ A>=2 ], cost: 1 37: f13 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ B>=1 && 0>=1+free_3 && A>=2+B && free_12>=1 ], cost: -7/2-7/2*B+3/2*(1+B-A)^2+7/2*A-(1+B-A)*free_12-3*B*(1+B-A) 38: f13 -> [11] : B'=1+A, C'=1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1-free_12+A, Q_1'=free_13, R'=free_11, [ B-A==0 && B>=1 && 0>=1+free_3 && free_12>=1 ], cost: 7/2-7/2*B-3*B*(-1+B-A)-free_12*(-1+B-A)+3/2*(-1+B-A)^2+7/2*A 39: f13 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ B>=1 && free_3>=1 && A>=2+B && free_12>=1 ], cost: -7/2-7/2*B+3/2*(1+B-A)^2+7/2*A-(1+B-A)*free_12-3*B*(1+B-A) 40: f13 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ B>=1 && A>=2+B && free_12>=1 ], cost: -7/2-7/2*B+3/2*(1+B-A)^2+7/2*A-(1+B-A)*free_12-3*B*(1+B-A) 41: f13 -> [11] : B'=1+A, C'=1+A, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=1-free_12+A, Q_1'=free_13, R'=free_11, [ B-A==0 && B>=1 && free_12>=1 ], cost: 7/2-7/2*B-3*B*(-1+B-A)-free_12*(-1+B-A)+3/2*(-1+B-A)^2+7/2*A Applied chaining over branches and pruning: Start location: f2 42: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && 0>=1+free_3 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A 43: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && free_3>=1 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A 44: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A Final control flow graph problem, now checking costs for infinitely many models: Start location: f2 42: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && 0>=1+free_3 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A 43: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=free_3, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && free_3>=1 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A 44: f2 -> [11] : B'=-1+A, C'=-1+A, D'=free_2, E'=0, F'=1+free_12, G'=free_5, H'=free_6, Q'=free_4, J'=free_12, K'=-2-free_12+A, L'=free_9, M'=free_10, N'=free_7, O'=free_8, P'=-1-free_12+A, Q_1'=free_13, R'=free_11, [ A>=2 && 1>=1 && A>=3 && free_12>=1 ], cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A Computing complexity for remaining 3 transitions. Found configuration with infinitely models for cost: -12+3/2*(-2+A)^2+free_12*(-2+A)+13/2*A and guard: A>=2 && 1>=1 && 0>=1+free_3 && A>=3 && free_12>=1: free_12: Const, free_3: Neg, A: Pos Found new complexity n^2, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: A>=2 && 1>=1 && 0>=1+free_3 && A>=3 && free_12>=1 Final Cost: -14+3/2*(-2+A)^2+15/2*A Obtained the following complexity w.r.t. the length of the input n: Complexity class: n^2 Complexity value: 2 WORST_CASE(Omega(n^2),?)