Trying to load file: main.koat Initial Control flow graph problem: Start location: evalEx3start 0: evalEx3start -> evalEx3entryin : [], cost: 1 1: evalEx3entryin -> evalEx3bb4in : [], cost: 1 2: evalEx3bb4in -> evalEx3bbin : [ A>=1 ], cost: 1 3: evalEx3bb4in -> evalEx3returnin : [ 0>=A ], cost: 1 4: evalEx3bbin -> evalEx3bb2in : B'=free, C'=A, [], cost: 1 11: evalEx3returnin -> evalEx3stop : [], cost: 1 5: evalEx3bb2in -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 6: evalEx3bb2in -> evalEx3bb3in : [ C>=1 ], cost: 1 8: evalEx3bb3in -> evalEx3bb4in : A'=C, [ B>=1+free_1 ], cost: 1 9: evalEx3bb3in -> evalEx3bb4in : A'=C, [ free_2>=1+B ], cost: 1 7: evalEx3bb3in -> evalEx3bb1in : [], cost: 1 10: evalEx3bb1in -> evalEx3bb2in : C'=-1+C, [], cost: 1 Removing duplicate transition: 8. Simplified the transitions: Start location: evalEx3start 0: evalEx3start -> evalEx3entryin : [], cost: 1 1: evalEx3entryin -> evalEx3bb4in : [], cost: 1 2: evalEx3bb4in -> evalEx3bbin : [ A>=1 ], cost: 1 4: evalEx3bbin -> evalEx3bb2in : B'=free, C'=A, [], cost: 1 5: evalEx3bb2in -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 6: evalEx3bb2in -> evalEx3bb3in : [ C>=1 ], cost: 1 9: evalEx3bb3in -> evalEx3bb4in : A'=C, [], cost: 1 7: evalEx3bb3in -> evalEx3bb1in : [], cost: 1 10: evalEx3bb1in -> evalEx3bb2in : C'=-1+C, [], cost: 1 Applied simple chaining: Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 2: evalEx3bb4in -> evalEx3bb2in : B'=free, C'=A, [ A>=1 ], cost: 2 5: evalEx3bb2in -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 6: evalEx3bb2in -> evalEx3bb3in : [ C>=1 ], cost: 1 9: evalEx3bb3in -> evalEx3bb4in : A'=C, [], cost: 1 7: evalEx3bb3in -> evalEx3bb2in : C'=-1+C, [], cost: 2 Applied chaining over branches and pruning: Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 2: evalEx3bb4in -> evalEx3bb2in : B'=free, C'=A, [ A>=1 ], cost: 2 5: evalEx3bb2in -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 12: evalEx3bb2in -> evalEx3bb4in : A'=C, [ C>=1 ], cost: 2 13: evalEx3bb2in -> evalEx3bb2in : C'=-1+C, [ C>=1 ], cost: 3 Eliminating 1 self-loops for location evalEx3bb2in Self-Loop 13 has the metering function: C, resulting in the new transition 14. Removing the self-loops: 13. Removed all Self-loops using metering functions (where possible): Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 2: evalEx3bb4in -> evalEx3bb2in : B'=free, C'=A, [ A>=1 ], cost: 2 14: evalEx3bb2in -> [9] : C'=0, [ C>=1 ], cost: 3*C 5: [9] -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 12: [9] -> evalEx3bb4in : A'=C, [ C>=1 ], cost: 2 Applied simple chaining: Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 2: evalEx3bb4in -> [9] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 2+3*A 5: [9] -> evalEx3bb4in : A'=C, [ 0>=C ], cost: 1 12: [9] -> evalEx3bb4in : A'=C, [ C>=1 ], cost: 2 Applied chaining over branches and pruning: Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 15: evalEx3bb4in -> evalEx3bb4in : A'=0, B'=free, C'=0, [ A>=1 && A>=1 && 0>=0 ], cost: 3+3*A 16: evalEx3bb4in -> [10] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 2+3*A Eliminating 1 self-loops for location evalEx3bb4in Removing the self-loops: 15. Adding an epsilon transition (to model nonexecution of the loops): 18. Removed all Self-loops using metering functions (where possible): Start location: evalEx3start 0: evalEx3start -> evalEx3bb4in : [], cost: 2 17: evalEx3bb4in -> [11] : A'=0, B'=free, C'=0, [ A>=1 ], cost: 3+3*A 18: evalEx3bb4in -> [11] : [], cost: 0 16: [11] -> [10] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 2+3*A Applied chaining over branches and pruning: Start location: evalEx3start 19: evalEx3start -> [11] : A'=0, B'=free, C'=0, [ A>=1 ], cost: 5+3*A 20: evalEx3start -> [11] : [], cost: 2 16: [11] -> [10] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 2+3*A Applied chaining over branches and pruning: Start location: evalEx3start 22: evalEx3start -> [10] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 4+3*A 21: evalEx3start -> [12] : A'=0, B'=free, C'=0, [ A>=1 ], cost: 5+3*A Final control flow graph problem, now checking costs for infinitely many models: Start location: evalEx3start 22: evalEx3start -> [10] : B'=free, C'=0, [ A>=1 && A>=1 ], cost: 4+3*A 21: evalEx3start -> [12] : A'=0, B'=free, C'=0, [ A>=1 ], cost: 5+3*A Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 4+3*A and guard: A>=1 && A>=1: A: Pos Found new complexity n^1, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: A>=1 && A>=1 Final Cost: 4+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),?)