Trying to load file: main.koat Initial Control flow graph problem: Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSingleentryin : [], cost: 1 1: evalSequentialSingleentryin -> evalSequentialSinglebb1in : A'=0, [], cost: 1 2: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 3: evalSequentialSinglebb1in -> evalSequentialSinglebb2in : [ B>=1+A ], cost: 1 8: evalSequentialSinglebb5in -> evalSequentialSinglebb4in : [ B>=1+A ], cost: 1 9: evalSequentialSinglebb5in -> evalSequentialSinglereturnin : [ A>=B ], cost: 1 6: evalSequentialSinglebb2in -> evalSequentialSinglebb5in : [], cost: 1 4: evalSequentialSinglebb2in -> evalSequentialSinglebbin : [ 0>=1+free ], cost: 1 5: evalSequentialSinglebb2in -> evalSequentialSinglebbin : [ free_1>=1 ], cost: 1 7: evalSequentialSinglebbin -> evalSequentialSinglebb1in : A'=1+A, [], cost: 1 10: evalSequentialSinglebb4in -> evalSequentialSinglebb5in : A'=1+A, [], cost: 1 11: evalSequentialSinglereturnin -> evalSequentialSinglestop : [], cost: 1 Removing duplicate transition: 4. Simplified the transitions: Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSingleentryin : [], cost: 1 1: evalSequentialSingleentryin -> evalSequentialSinglebb1in : A'=0, [], cost: 1 2: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 3: evalSequentialSinglebb1in -> evalSequentialSinglebb2in : [ B>=1+A ], cost: 1 8: evalSequentialSinglebb5in -> evalSequentialSinglebb4in : [ B>=1+A ], cost: 1 6: evalSequentialSinglebb2in -> evalSequentialSinglebb5in : [], cost: 1 5: evalSequentialSinglebb2in -> evalSequentialSinglebbin : [], cost: 1 7: evalSequentialSinglebbin -> evalSequentialSinglebb1in : A'=1+A, [], cost: 1 10: evalSequentialSinglebb4in -> evalSequentialSinglebb5in : A'=1+A, [], cost: 1 Applied simple chaining: Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSinglebb1in : A'=0, [], cost: 2 2: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 3: evalSequentialSinglebb1in -> evalSequentialSinglebb2in : [ B>=1+A ], cost: 1 8: evalSequentialSinglebb5in -> evalSequentialSinglebb5in : A'=1+A, [ B>=1+A ], cost: 2 5: evalSequentialSinglebb2in -> evalSequentialSinglebb1in : A'=1+A, [], cost: 2 6: evalSequentialSinglebb2in -> evalSequentialSinglebb5in : [], cost: 1 Eliminating 1 self-loops for location evalSequentialSinglebb5in Self-Loop 8 has the metering function: B-A, resulting in the new transition 12. Removing the self-loops: 8. Removed all Self-loops using metering functions (where possible): Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSinglebb1in : A'=0, [], cost: 2 2: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 3: evalSequentialSinglebb1in -> evalSequentialSinglebb2in : [ B>=1+A ], cost: 1 12: evalSequentialSinglebb5in -> [9] : A'=B, [ B>=1+A ], cost: 2*B-2*A 5: evalSequentialSinglebb2in -> evalSequentialSinglebb1in : A'=1+A, [], cost: 2 6: evalSequentialSinglebb2in -> evalSequentialSinglebb5in : [], cost: 1 Applied chaining over branches and pruning: Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSinglebb1in : A'=0, [], cost: 2 13: evalSequentialSinglebb1in -> evalSequentialSinglebb1in : A'=1+A, [ B>=1+A ], cost: 3 2: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 14: evalSequentialSinglebb1in -> evalSequentialSinglebb5in : [ B>=1+A ], cost: 2 12: evalSequentialSinglebb5in -> [9] : A'=B, [ B>=1+A ], cost: 2*B-2*A Eliminating 1 self-loops for location evalSequentialSinglebb1in Self-Loop 13 has the metering function: B-A, resulting in the new transition 15. Removing the self-loops: 13. Removed all Self-loops using metering functions (where possible): Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> evalSequentialSinglebb1in : A'=0, [], cost: 2 15: evalSequentialSinglebb1in -> [10] : A'=B, [ B>=1+A ], cost: 3*B-3*A 12: evalSequentialSinglebb5in -> [9] : A'=B, [ B>=1+A ], cost: 2*B-2*A 2: [10] -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 14: [10] -> evalSequentialSinglebb5in : [ B>=1+A ], cost: 2 Applied simple chaining: Start location: evalSequentialSinglestart 0: evalSequentialSinglestart -> [10] : A'=B, [ B>=1 ], cost: 2+3*B 12: evalSequentialSinglebb5in -> [9] : A'=B, [ B>=1+A ], cost: 2*B-2*A 2: [10] -> evalSequentialSinglebb5in : [ A>=B ], cost: 1 14: [10] -> evalSequentialSinglebb5in : [ B>=1+A ], cost: 2 Applied chaining over branches and pruning: Start location: evalSequentialSinglestart 16: evalSequentialSinglestart -> evalSequentialSinglebb5in : A'=B, [ B>=1 && B>=B ], cost: 3+3*B 17: evalSequentialSinglestart -> [11] : A'=B, [ B>=1 ], cost: 2+3*B 12: evalSequentialSinglebb5in -> [9] : A'=B, [ B>=1+A ], cost: 2*B-2*A Applied chaining over branches and pruning: Start location: evalSequentialSinglestart 17: evalSequentialSinglestart -> [11] : A'=B, [ B>=1 ], cost: 2+3*B 18: evalSequentialSinglestart -> [12] : A'=B, [ B>=1 && B>=B ], cost: 3+3*B Final control flow graph problem, now checking costs for infinitely many models: Start location: evalSequentialSinglestart 17: evalSequentialSinglestart -> [11] : A'=B, [ B>=1 ], cost: 2+3*B 18: evalSequentialSinglestart -> [12] : A'=B, [ B>=1 && B>=B ], cost: 3+3*B Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 2+3*B and guard: B>=1: B: Pos Found new complexity n^1, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: B>=1 Final Cost: 2+3*B Obtained the following complexity w.r.t. the length of the input n: Complexity class: n^1 Complexity value: 1 WORST_CASE(Omega(n^1),?)