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