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