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