Trying to load file: main.koat Initial Control flow graph problem: Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4entryin : [], cost: 1 1: evalspeedpldi4entryin -> evalspeedpldi4returnin : [ 0>=A ], cost: 1 2: evalspeedpldi4entryin -> evalspeedpldi4returnin : [ A>=B ], cost: 1 3: evalspeedpldi4entryin -> evalspeedpldi4bb5in : [ A>=1 && B>=1+A ], cost: 1 10: evalspeedpldi4returnin -> evalspeedpldi4stop : [], cost: 1 5: evalspeedpldi4bb5in -> evalspeedpldi4returnin : [ 0>=B ], cost: 1 4: evalspeedpldi4bb5in -> evalspeedpldi4bb2in : [ B>=1 ], cost: 1 6: evalspeedpldi4bb2in -> evalspeedpldi4bb3in : [ A>=1+B ], cost: 1 7: evalspeedpldi4bb2in -> evalspeedpldi4bb4in : [ B>=A ], cost: 1 8: evalspeedpldi4bb3in -> evalspeedpldi4bb5in : B'=-1+B, [], cost: 1 9: evalspeedpldi4bb4in -> evalspeedpldi4bb5in : B'=B-A, [], cost: 1 Simplified the transitions: Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4entryin : [], cost: 1 3: evalspeedpldi4entryin -> evalspeedpldi4bb5in : [ A>=1 && B>=1+A ], cost: 1 4: evalspeedpldi4bb5in -> evalspeedpldi4bb2in : [ B>=1 ], cost: 1 6: evalspeedpldi4bb2in -> evalspeedpldi4bb3in : [ A>=1+B ], cost: 1 7: evalspeedpldi4bb2in -> evalspeedpldi4bb4in : [ B>=A ], cost: 1 8: evalspeedpldi4bb3in -> evalspeedpldi4bb5in : B'=-1+B, [], cost: 1 9: evalspeedpldi4bb4in -> evalspeedpldi4bb5in : B'=B-A, [], cost: 1 Applied simple chaining: Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4bb5in : [ A>=1 && B>=1+A ], cost: 2 4: evalspeedpldi4bb5in -> evalspeedpldi4bb2in : [ B>=1 ], cost: 1 6: evalspeedpldi4bb2in -> evalspeedpldi4bb5in : B'=-1+B, [ A>=1+B ], cost: 2 7: evalspeedpldi4bb2in -> evalspeedpldi4bb5in : B'=B-A, [ B>=A ], cost: 2 Applied chaining over branches and pruning: Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4bb5in : [ A>=1 && B>=1+A ], cost: 2 11: evalspeedpldi4bb5in -> evalspeedpldi4bb5in : B'=-1+B, [ B>=1 && A>=1+B ], cost: 3 12: evalspeedpldi4bb5in -> evalspeedpldi4bb5in : B'=B-A, [ B>=1 && B>=A ], cost: 3 Eliminating 2 self-loops for location evalspeedpldi4bb5in Self-Loop 11 has the metering function: B, resulting in the new transition 13. Removing the self-loops: 11 12. Adding an epsilon transition (to model nonexecution of the loops): 15. Removed all Self-loops using metering functions (where possible): Start location: evalspeedpldi4start 0: evalspeedpldi4start -> evalspeedpldi4bb5in : [ A>=1 && B>=1+A ], cost: 2 13: evalspeedpldi4bb5in -> [8] : B'=0, [ B>=1 && A>=1+B ], cost: 3*B 14: evalspeedpldi4bb5in -> [8] : B'=B-A, [ B>=1 && B>=A ], cost: 3 15: evalspeedpldi4bb5in -> [8] : [], cost: 0 Applied chaining over branches and pruning: Start location: evalspeedpldi4start Final control flow graph problem, now checking costs for infinitely many models: Start location: evalspeedpldi4start Computing complexity for remaining 0 transitions. The final runtime is determined by this resulting transition: Final Guard: Final Cost: 1 Obtained the following complexity w.r.t. the length of the input n: Complexity class: const Complexity value: 0 WORST_CASE(Omega(1),?)