Trying to load file: main.koat Initial Control flow graph problem: Start location: evalspeedpldi2start 0: evalspeedpldi2start -> evalspeedpldi2entryin : [], cost: 1 1: evalspeedpldi2entryin -> evalspeedpldi2bb5in : A'=B, B'=0, C'=A, [ A>=0 && B>=1 ], cost: 1 2: evalspeedpldi2entryin -> evalspeedpldi2returnin : [ 0>=1+A ], cost: 1 3: evalspeedpldi2entryin -> evalspeedpldi2returnin : [ 0>=B ], cost: 1 5: evalspeedpldi2bb5in -> evalspeedpldi2returnin : [ 0>=C ], cost: 1 4: evalspeedpldi2bb5in -> evalspeedpldi2bb2in : [ C>=1 ], cost: 1 9: evalspeedpldi2returnin -> evalspeedpldi2stop : [], cost: 1 7: evalspeedpldi2bb2in -> evalspeedpldi2bb5in : B'=0, [ B>=A ], cost: 1 6: evalspeedpldi2bb2in -> evalspeedpldi2bb3in : [ A>=1+B ], cost: 1 8: evalspeedpldi2bb3in -> evalspeedpldi2bb5in : B'=1+B, C'=-1+C, [], cost: 1 Simplified the transitions: Start location: evalspeedpldi2start 0: evalspeedpldi2start -> evalspeedpldi2entryin : [], cost: 1 1: evalspeedpldi2entryin -> evalspeedpldi2bb5in : A'=B, B'=0, C'=A, [ A>=0 && B>=1 ], cost: 1 4: evalspeedpldi2bb5in -> evalspeedpldi2bb2in : [ C>=1 ], cost: 1 7: evalspeedpldi2bb2in -> evalspeedpldi2bb5in : B'=0, [ B>=A ], cost: 1 6: evalspeedpldi2bb2in -> evalspeedpldi2bb3in : [ A>=1+B ], cost: 1 8: evalspeedpldi2bb3in -> evalspeedpldi2bb5in : B'=1+B, C'=-1+C, [], cost: 1 Applied simple chaining: Start location: evalspeedpldi2start 0: evalspeedpldi2start -> evalspeedpldi2bb5in : A'=B, B'=0, C'=A, [ A>=0 && B>=1 ], cost: 2 4: evalspeedpldi2bb5in -> evalspeedpldi2bb2in : [ C>=1 ], cost: 1 7: evalspeedpldi2bb2in -> evalspeedpldi2bb5in : B'=0, [ B>=A ], cost: 1 6: evalspeedpldi2bb2in -> evalspeedpldi2bb5in : B'=1+B, C'=-1+C, [ A>=1+B ], cost: 2 Applied chaining over branches and pruning: Start location: evalspeedpldi2start 0: evalspeedpldi2start -> evalspeedpldi2bb5in : A'=B, B'=0, C'=A, [ A>=0 && B>=1 ], cost: 2 10: evalspeedpldi2bb5in -> evalspeedpldi2bb5in : B'=0, [ C>=1 && B>=A ], cost: 2 11: evalspeedpldi2bb5in -> evalspeedpldi2bb5in : B'=1+B, C'=-1+C, [ C>=1 && A>=1+B ], cost: 3 Eliminating 2 self-loops for location evalspeedpldi2bb5in Removing the self-loops: 10 11 13 14. Adding an epsilon transition (to model nonexecution of the loops): 16. Removed all Self-loops using metering functions (where possible): Start location: evalspeedpldi2start 0: evalspeedpldi2start -> evalspeedpldi2bb5in : A'=B, B'=0, C'=A, [ A>=0 && B>=1 ], cost: 2 12: evalspeedpldi2bb5in -> [7] : B'=0, [ C>=1 && B>=A ], cost: 2 15: evalspeedpldi2bb5in -> [7] : B'=1+B, C'=-1+C, [ C>=1 && A>=1+B ], cost: 3 16: evalspeedpldi2bb5in -> [7] : [], cost: 0 Applied chaining over branches and pruning: Start location: evalspeedpldi2start Final control flow graph problem, now checking costs for infinitely many models: Start location: evalspeedpldi2start 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),?)