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