Trying to load file: main.koat Initial Control flow graph problem: Start location: evalEx5start 0: evalEx5start -> evalEx5entryin : [], cost: 1 1: evalEx5entryin -> evalEx5bb6in : A'=0, B'=A, [], cost: 1 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 3: evalEx5bb6in -> evalEx5returnin : [ A>=B ], cost: 1 4: evalEx5bb3in -> evalEx5bb1in : [ 0>=1+free ], cost: 1 5: evalEx5bb3in -> evalEx5bb1in : [ free_1>=1 ], cost: 1 6: evalEx5bb3in -> evalEx5bb4in : [], cost: 1 19: evalEx5returnin -> evalEx5stop : [], cost: 1 10: evalEx5bb1in -> evalEx5bb3in : D'=-1+D, [ 0>=1 ], cost: 1 11: evalEx5bb1in -> evalEx5bb3in : D'=-1+D, [ 0>=1 ], cost: 1 14: evalEx5bb1in -> evalEx5bb3in : [], cost: 1 7: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [ 0>=1+free_2 ], cost: 1 8: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [ 0>=1+free_3 && free_3>=1 ], cost: 1 9: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [ free_4>=1 ], cost: 1 12: evalEx5bb1in -> evalEx5bb2in : E'=D, [ 0>=1 ], cost: 1 13: evalEx5bb1in -> evalEx5bb2in : E'=D, [ 0>=1 ], cost: 1 16: evalEx5bb4in -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 1 17: evalEx5bb4in -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 1 18: evalEx5bb4in -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 1 15: evalEx5bb2in -> evalEx5bb3in : C'=1, D'=E, [], cost: 1 Removing duplicate transition: 4. Removing duplicate transition: 10. Removing duplicate transition: 7. Removing duplicate transition: 12. Simplified the transitions: Start location: evalEx5start 0: evalEx5start -> evalEx5entryin : [], cost: 1 1: evalEx5entryin -> evalEx5bb6in : A'=0, B'=A, [], cost: 1 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 5: evalEx5bb3in -> evalEx5bb1in : [], cost: 1 6: evalEx5bb3in -> evalEx5bb4in : [], cost: 1 11: evalEx5bb1in -> evalEx5bb3in : D'=-1+D, [ 0>=1 ], cost: 1 14: evalEx5bb1in -> evalEx5bb3in : [], cost: 1 8: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [ 1<=-1 ], cost: 1 9: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [], cost: 1 13: evalEx5bb1in -> evalEx5bb2in : E'=D, [ 0>=1 ], cost: 1 16: evalEx5bb4in -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 1 17: evalEx5bb4in -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 1 18: evalEx5bb4in -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 1 15: evalEx5bb2in -> evalEx5bb3in : C'=1, D'=E, [], cost: 1 Applied simple chaining: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 5: evalEx5bb3in -> evalEx5bb1in : [], cost: 1 6: evalEx5bb3in -> evalEx5bb4in : [], cost: 1 11: evalEx5bb1in -> evalEx5bb3in : D'=-1+D, [ 0>=1 ], cost: 1 14: evalEx5bb1in -> evalEx5bb3in : [], cost: 1 8: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [ 1<=-1 ], cost: 1 9: evalEx5bb1in -> evalEx5bb2in : E'=-1+D, [], cost: 1 13: evalEx5bb1in -> evalEx5bb2in : E'=D, [ 0>=1 ], cost: 1 16: evalEx5bb4in -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 1 17: evalEx5bb4in -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 1 18: evalEx5bb4in -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 1 15: evalEx5bb2in -> evalEx5bb3in : C'=1, D'=E, [], cost: 1 Applied chaining over branches and pruning: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 22: evalEx5bb3in -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 2 23: evalEx5bb3in -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 2 24: evalEx5bb3in -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 2 20: evalEx5bb3in -> evalEx5bb3in : [], cost: 2 21: evalEx5bb3in -> evalEx5bb2in : E'=-1+D, [], cost: 2 15: evalEx5bb2in -> evalEx5bb3in : C'=1, D'=E, [], cost: 1 Eliminating 1 self-loops for location evalEx5bb3in Self-Loop 20 has unbounded runtime, resulting in the new transition 25. Removing the self-loops: 20. Removed all Self-loops using metering functions (where possible): Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 25: evalEx5bb3in -> [9] : [], cost: INF 15: evalEx5bb2in -> evalEx5bb3in : C'=1, D'=E, [], cost: 1 22: [9] -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 2 23: [9] -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 2 24: [9] -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 2 21: [9] -> evalEx5bb2in : E'=-1+D, [], cost: 2 Applied simple chaining: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 25: evalEx5bb3in -> [9] : [], cost: INF 22: [9] -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: 2 23: [9] -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: 2 24: [9] -> evalEx5bb6in : B'=D, [ C>=1 ], cost: 2 21: [9] -> evalEx5bb3in : C'=1, D'=-1+D, E'=-1+D, [], cost: 3 Applied chaining over branches and pruning: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 26: evalEx5bb3in -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: INF 27: evalEx5bb3in -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: INF 28: evalEx5bb3in -> evalEx5bb6in : B'=D, [ C>=1 ], cost: INF 29: evalEx5bb3in -> evalEx5bb3in : C'=1, D'=-1+D, E'=-1+D, [], cost: INF Eliminating 1 self-loops for location evalEx5bb3in Removing the self-loops: 29. Removed all Self-loops using metering functions (where possible): Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> evalEx5bb3in : C'=0, D'=B, [ B>=1+A ], cost: 1 30: evalEx5bb3in -> [10] : C'=1, D'=-1+D, E'=-1+D, [], cost: INF 26: [10] -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: INF 27: [10] -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: INF 28: [10] -> evalEx5bb6in : B'=D, [ C>=1 ], cost: INF Applied simple chaining: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 2: evalEx5bb6in -> [10] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF 26: [10] -> evalEx5bb6in : A'=1+A, B'=D, [ C==0 ], cost: INF 27: [10] -> evalEx5bb6in : B'=D, [ 0>=1+C ], cost: INF 28: [10] -> evalEx5bb6in : B'=D, [ C>=1 ], cost: INF Applied chaining over branches and pruning: Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 33: evalEx5bb6in -> evalEx5bb6in : B'=-1+B, C'=1, D'=-1+B, E'=-1+B, [ B>=1+A && 1>=1 ], cost: INF 31: evalEx5bb6in -> [11] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF 32: evalEx5bb6in -> [12] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF Eliminating 1 self-loops for location evalEx5bb6in Removing the self-loops: 33. Removed all Self-loops using metering functions (where possible): Start location: evalEx5start 0: evalEx5start -> evalEx5bb6in : A'=0, B'=A, [], cost: 2 34: evalEx5bb6in -> [13] : B'=-1+B, C'=1, D'=-1+B, E'=-1+B, [ B>=1+A && 1>=1 ], cost: INF 31: [13] -> [11] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF 32: [13] -> [12] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF Applied simple chaining: Start location: evalEx5start 0: evalEx5start -> [13] : A'=0, B'=-1+A, C'=1, D'=-1+A, E'=-1+A, [ A>=1 && 1>=1 ], cost: INF 31: [13] -> [11] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF 32: [13] -> [12] : C'=1, D'=-1+B, E'=-1+B, [ B>=1+A ], cost: INF Applied chaining over branches and pruning: Start location: evalEx5start 35: evalEx5start -> [11] : A'=0, B'=-1+A, C'=1, D'=-2+A, E'=-2+A, [ A>=1 && 1>=1 && -1+A>=1 ], cost: INF 36: evalEx5start -> [12] : A'=0, B'=-1+A, C'=1, D'=-2+A, E'=-2+A, [ A>=1 && 1>=1 && -1+A>=1 ], cost: INF Final control flow graph problem, now checking costs for infinitely many models: Start location: evalEx5start 35: evalEx5start -> [11] : A'=0, B'=-1+A, C'=1, D'=-2+A, E'=-2+A, [ A>=1 && 1>=1 && -1+A>=1 ], cost: INF 36: evalEx5start -> [12] : A'=0, B'=-1+A, C'=1, D'=-2+A, E'=-2+A, [ A>=1 && 1>=1 && -1+A>=1 ], cost: INF Computing complexity for remaining 2 transitions. Found new complexity INF, because: INF sat. The final runtime is determined by this resulting transition: Final Guard: A>=1 && 1>=1 && -1+A>=1 Final Cost: INF Obtained the following complexity w.r.t. the length of the input n: Complexity class: INF Complexity value: INF WORST_CASE(INF,?)