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