Trying to load file: main.koat Initial Control flow graph problem: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortentryin : [], cost: 1 1: evalinsertsortentryin -> evalinsertsortbb5in : A'=1, [], cost: 1 2: evalinsertsortbb5in -> evalinsertsortbbin : [ B>=1+A ], cost: 1 3: evalinsertsortbb5in -> evalinsertsortreturnin : [ A>=B ], cost: 1 4: evalinsertsortbbin -> evalinsertsortbb2in : C'=free, D'=-1+A, [], cost: 1 11: evalinsertsortreturnin -> evalinsertsortstop : [], cost: 1 5: evalinsertsortbb2in -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 6: evalinsertsortbb2in -> evalinsertsortbb3in : [ D>=0 ], cost: 1 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 8: evalinsertsortbb3in -> evalinsertsortbb4in : [ C>=free_2 ], cost: 1 7: evalinsertsortbb3in -> evalinsertsortbb1in : [ free_1>=1+C ], cost: 1 9: evalinsertsortbb1in -> evalinsertsortbb2in : D'=-1+D, [], cost: 1 Simplified the transitions: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortentryin : [], cost: 1 1: evalinsertsortentryin -> evalinsertsortbb5in : A'=1, [], cost: 1 2: evalinsertsortbb5in -> evalinsertsortbbin : [ B>=1+A ], cost: 1 4: evalinsertsortbbin -> evalinsertsortbb2in : C'=free, D'=-1+A, [], cost: 1 5: evalinsertsortbb2in -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 6: evalinsertsortbb2in -> evalinsertsortbb3in : [ D>=0 ], cost: 1 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 8: evalinsertsortbb3in -> evalinsertsortbb4in : [], cost: 1 7: evalinsertsortbb3in -> evalinsertsortbb1in : [], cost: 1 9: evalinsertsortbb1in -> evalinsertsortbb2in : D'=-1+D, [], cost: 1 Applied simple chaining: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 2: evalinsertsortbb5in -> evalinsertsortbb2in : C'=free, D'=-1+A, [ B>=1+A ], cost: 2 5: evalinsertsortbb2in -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 6: evalinsertsortbb2in -> evalinsertsortbb3in : [ D>=0 ], cost: 1 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 7: evalinsertsortbb3in -> evalinsertsortbb2in : D'=-1+D, [], cost: 2 8: evalinsertsortbb3in -> evalinsertsortbb4in : [], cost: 1 Applied chaining over branches and pruning: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 2: evalinsertsortbb5in -> evalinsertsortbb2in : C'=free, D'=-1+A, [ B>=1+A ], cost: 2 12: evalinsertsortbb2in -> evalinsertsortbb2in : D'=-1+D, [ D>=0 ], cost: 3 5: evalinsertsortbb2in -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 13: evalinsertsortbb2in -> evalinsertsortbb4in : [ D>=0 ], cost: 2 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 Eliminating 1 self-loops for location evalinsertsortbb2in Self-Loop 12 has the metering function: 1+D, resulting in the new transition 14. Removing the self-loops: 12. Removed all Self-loops using metering functions (where possible): Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 2: evalinsertsortbb5in -> evalinsertsortbb2in : C'=free, D'=-1+A, [ B>=1+A ], cost: 2 14: evalinsertsortbb2in -> [10] : D'=-1, [ D>=0 ], cost: 3+3*D 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 5: [10] -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 13: [10] -> evalinsertsortbb4in : [ D>=0 ], cost: 2 Applied simple chaining: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 2: evalinsertsortbb5in -> [10] : C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 2+3*A 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 5: [10] -> evalinsertsortbb4in : [ 0>=1+D ], cost: 1 13: [10] -> evalinsertsortbb4in : [ D>=0 ], cost: 2 Applied chaining over branches and pruning: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 15: evalinsertsortbb5in -> evalinsertsortbb4in : C'=free, D'=-1, [ B>=1+A && -1+A>=0 && 0>=0 ], cost: 3+3*A 16: evalinsertsortbb5in -> [11] : C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 2+3*A 10: evalinsertsortbb4in -> evalinsertsortbb5in : A'=1+A, [], cost: 1 Applied simple chaining: Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 15: evalinsertsortbb5in -> evalinsertsortbb5in : A'=1+A, C'=free, D'=-1, [ B>=1+A && -1+A>=0 && 0>=0 ], cost: 4+3*A 16: evalinsertsortbb5in -> [11] : C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 2+3*A Eliminating 1 self-loops for location evalinsertsortbb5in Self-Loop 15 has the metering function: B-A, resulting in the new transition 17. Removing the self-loops: 15. Removed all Self-loops using metering functions (where possible): Start location: evalinsertsortstart 0: evalinsertsortstart -> evalinsertsortbb5in : A'=1, [], cost: 2 17: evalinsertsortbb5in -> [12] : A'=B, C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 5/2*B+3/2*(B-A)^2+3*(B-A)*A-5/2*A 16: [12] -> [11] : C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 2+3*A Applied simple chaining: Start location: evalinsertsortstart 0: evalinsertsortstart -> [12] : A'=B, C'=free, D'=-1, [ B>=2 && 0>=0 ], cost: -7/2+3/2*(-1+B)^2+11/2*B 16: [12] -> [11] : C'=free, D'=-1, [ B>=1+A && -1+A>=0 ], cost: 2+3*A Applied chaining over branches and pruning: Start location: evalinsertsortstart 18: evalinsertsortstart -> [13] : A'=B, C'=free, D'=-1, [ B>=2 && 0>=0 ], cost: -7/2+3/2*(-1+B)^2+11/2*B Final control flow graph problem, now checking costs for infinitely many models: Start location: evalinsertsortstart 18: evalinsertsortstart -> [13] : A'=B, C'=free, D'=-1, [ B>=2 && 0>=0 ], cost: -7/2+3/2*(-1+B)^2+11/2*B Computing complexity for remaining 1 transitions. Found configuration with infinitely models for cost: -7/2+3/2*(-1+B)^2+11/2*B and guard: B>=2 && 0>=0: B: Pos Found new complexity n^2, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: B>=2 && 0>=0 Final Cost: -7/2+3/2*(-1+B)^2+11/2*B 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),?)