Trying to load file: main.koat Initial Control flow graph problem: Start location: evalEx4start 0: evalEx4start -> evalEx4entryin : [], cost: 1 1: evalEx4entryin -> evalEx4bb4in : A'=1, B'=A, [], cost: 1 2: evalEx4bb4in -> evalEx4bb2in : C'=0, D'=B, [ A==1 ], cost: 1 3: evalEx4bb4in -> evalEx4returnin : [ 0>=A ], cost: 1 4: evalEx4bb4in -> evalEx4returnin : [ A>=2 ], cost: 1 5: evalEx4bb2in -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 6: evalEx4bb2in -> evalEx4bb3in : [ D>=1 ], cost: 1 11: evalEx4returnin -> evalEx4stop : [], cost: 1 9: evalEx4bb3in -> evalEx4bb4in : A'=C, B'=D, [], cost: 1 7: evalEx4bb3in -> evalEx4bb1in : [ 0>=1+free ], cost: 1 8: evalEx4bb3in -> evalEx4bb1in : [ free_1>=1 ], cost: 1 10: evalEx4bb1in -> evalEx4bb2in : C'=1, D'=-1+D, [], cost: 1 Removing duplicate transition: 7. Simplified the transitions: Start location: evalEx4start 0: evalEx4start -> evalEx4entryin : [], cost: 1 1: evalEx4entryin -> evalEx4bb4in : A'=1, B'=A, [], cost: 1 2: evalEx4bb4in -> evalEx4bb2in : C'=0, D'=B, [ A==1 ], cost: 1 5: evalEx4bb2in -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 6: evalEx4bb2in -> evalEx4bb3in : [ D>=1 ], cost: 1 9: evalEx4bb3in -> evalEx4bb4in : A'=C, B'=D, [], cost: 1 8: evalEx4bb3in -> evalEx4bb1in : [], cost: 1 10: evalEx4bb1in -> evalEx4bb2in : C'=1, D'=-1+D, [], cost: 1 Applied simple chaining: Start location: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 2: evalEx4bb4in -> evalEx4bb2in : C'=0, D'=B, [ A==1 ], cost: 1 5: evalEx4bb2in -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 6: evalEx4bb2in -> evalEx4bb3in : [ D>=1 ], cost: 1 9: evalEx4bb3in -> evalEx4bb4in : A'=C, B'=D, [], cost: 1 8: evalEx4bb3in -> evalEx4bb2in : C'=1, D'=-1+D, [], cost: 2 Applied chaining over branches and pruning: Start location: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 2: evalEx4bb4in -> evalEx4bb2in : C'=0, D'=B, [ A==1 ], cost: 1 5: evalEx4bb2in -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 12: evalEx4bb2in -> evalEx4bb4in : A'=C, B'=D, [ D>=1 ], cost: 2 13: evalEx4bb2in -> evalEx4bb2in : C'=1, D'=-1+D, [ D>=1 ], cost: 3 Eliminating 1 self-loops for location evalEx4bb2in Self-Loop 13 has the metering function: D, resulting in the new transition 14. Removing the self-loops: 13. Removed all Self-loops using metering functions (where possible): Start location: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 2: evalEx4bb4in -> evalEx4bb2in : C'=0, D'=B, [ A==1 ], cost: 1 14: evalEx4bb2in -> [8] : C'=1, D'=0, [ D>=1 ], cost: 3*D 5: [8] -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 12: [8] -> evalEx4bb4in : A'=C, B'=D, [ D>=1 ], cost: 2 Applied simple chaining: Start location: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 2: evalEx4bb4in -> [8] : C'=1, D'=0, [ A==1 && B>=1 ], cost: 1+3*B 5: [8] -> evalEx4bb4in : A'=C, B'=D, [ 0>=D ], cost: 1 12: [8] -> evalEx4bb4in : A'=C, B'=D, [ D>=1 ], cost: 2 Applied chaining over branches and pruning: Start location: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 15: evalEx4bb4in -> evalEx4bb4in : A'=1, B'=0, C'=1, D'=0, [ A==1 && B>=1 && 0>=0 ], cost: 2+3*B 16: evalEx4bb4in -> [9] : C'=1, D'=0, [ A==1 && B>=1 ], cost: 1+3*B Eliminating 1 self-loops for location evalEx4bb4in 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: evalEx4start 0: evalEx4start -> evalEx4bb4in : A'=1, B'=A, [], cost: 2 17: evalEx4bb4in -> [10] : A'=1, B'=0, C'=1, D'=0, [ A==1 && B>=1 ], cost: 2+3*B 18: evalEx4bb4in -> [10] : [], cost: 0 16: [10] -> [9] : C'=1, D'=0, [ A==1 && B>=1 ], cost: 1+3*B Applied chaining over branches and pruning: Start location: evalEx4start 19: evalEx4start -> [10] : A'=1, B'=0, C'=1, D'=0, [ 1==1 && A>=1 ], cost: 4+3*A 20: evalEx4start -> [10] : A'=1, B'=A, [], cost: 2 16: [10] -> [9] : C'=1, D'=0, [ A==1 && B>=1 ], cost: 1+3*B Applied chaining over branches and pruning: Start location: evalEx4start 22: evalEx4start -> [9] : A'=1, B'=A, C'=1, D'=0, [ 1==1 && A>=1 ], cost: 3+3*A 21: evalEx4start -> [11] : A'=1, B'=0, C'=1, D'=0, [ 1==1 && A>=1 ], cost: 4+3*A Final control flow graph problem, now checking costs for infinitely many models: Start location: evalEx4start 22: evalEx4start -> [9] : A'=1, B'=A, C'=1, D'=0, [ 1==1 && A>=1 ], cost: 3+3*A 21: evalEx4start -> [11] : A'=1, B'=0, C'=1, D'=0, [ 1==1 && A>=1 ], cost: 4+3*A Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 3+3*A and guard: 1==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: 1==1 && A>=1 Final Cost: 3+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),?)