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