Trying to load file: main.koat Initial Control flow graph problem: Start location: evalfstart 0: evalfstart -> evalfentryin : [], cost: 1 1: evalfentryin -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 1 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 3: evalfbb7in -> evalfreturnin : [ D>=1+A ], cost: 1 4: evalfbb5in -> evalfbb1in : [ C>=E ], cost: 1 5: evalfbb5in -> evalfbb6in : [ E>=1+C ], cost: 1 12: evalfreturnin -> evalfstop : [], cost: 1 6: evalfbb1in -> evalfbb3in : F'=-E+D, [], cost: 1 11: evalfbb6in -> evalfbb7in : D'=1+D, [], cost: 1 7: evalfbb3in -> evalfbb2in : [ E+D>=F ], cost: 1 8: evalfbb3in -> evalfbb4in : [ F>=1+E+D ], cost: 1 9: evalfbb2in -> evalfbb3in : F'=1+F, [], cost: 1 10: evalfbb4in -> evalfbb5in : E'=1+E, [], cost: 1 Simplified the transitions: Start location: evalfstart 0: evalfstart -> evalfentryin : [], cost: 1 1: evalfentryin -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 1 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 4: evalfbb5in -> evalfbb1in : [ C>=E ], cost: 1 5: evalfbb5in -> evalfbb6in : [ E>=1+C ], cost: 1 6: evalfbb1in -> evalfbb3in : F'=-E+D, [], cost: 1 11: evalfbb6in -> evalfbb7in : D'=1+D, [], cost: 1 7: evalfbb3in -> evalfbb2in : [ E+D>=F ], cost: 1 8: evalfbb3in -> evalfbb4in : [ F>=1+E+D ], cost: 1 9: evalfbb2in -> evalfbb3in : F'=1+F, [], cost: 1 10: evalfbb4in -> evalfbb5in : E'=1+E, [], cost: 1 Applied simple chaining: Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 5: evalfbb5in -> evalfbb7in : D'=1+D, [ E>=1+C ], cost: 2 4: evalfbb5in -> evalfbb3in : F'=-E+D, [ C>=E ], cost: 2 8: evalfbb3in -> evalfbb5in : E'=1+E, [ F>=1+E+D ], cost: 2 7: evalfbb3in -> evalfbb3in : F'=1+F, [ E+D>=F ], cost: 2 Eliminating 1 self-loops for location evalfbb3in Self-Loop 7 has the metering function: 1+E-F+D, resulting in the new transition 13. Removing the self-loops: 7. Removed all Self-loops using metering functions (where possible): Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 5: evalfbb5in -> evalfbb7in : D'=1+D, [ E>=1+C ], cost: 2 4: evalfbb5in -> evalfbb3in : F'=-E+D, [ C>=E ], cost: 2 13: evalfbb3in -> [11] : F'=1+E+D, [ E+D>=F ], cost: 2+2*E-2*F+2*D 8: [11] -> evalfbb5in : E'=1+E, [ F>=1+E+D ], cost: 2 Applied simple chaining: Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 5: evalfbb5in -> evalfbb7in : D'=1+D, [ E>=1+C ], cost: 2 4: evalfbb5in -> evalfbb5in : E'=1+E, F'=1+E+D, [ C>=E && E+D>=-E+D && 1+E+D>=1+E+D ], cost: 6+4*E Eliminating 1 self-loops for location evalfbb5in Self-Loop 4 has the metering function: 1-E+C, resulting in the new transition 14. Removing the self-loops: 4. Removed all Self-loops using metering functions (where possible): Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 2: evalfbb7in -> evalfbb5in : E'=B, [ A>=D ], cost: 1 14: evalfbb5in -> [12] : E'=1+C, F'=1+C+D, [ C>=E && E+D>=-E+D ], cost: 4-4*E+4*C-4*E*(-1+E-C)+2*(-1+E-C)^2 5: [12] -> evalfbb7in : D'=1+D, [ E>=1+C ], cost: 2 Applied simple chaining: Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 2: evalfbb7in -> evalfbb7in : D'=1+D, E'=1+C, F'=1+C+D, [ A>=D && C>=B && B+D>=-B+D && 1+C>=1+C ], cost: 7-4*B+2*(-1+B-C)^2+4*C-4*B*(-1+B-C) Eliminating 1 self-loops for location evalfbb7in Self-Loop 2 has the metering function: 1-D+A, resulting in the new transition 15. Removing the self-loops: 2. Removed all Self-loops using metering functions (where possible): Start location: evalfstart 0: evalfstart -> evalfbb7in : A'=B, B'=C, C'=D, D'=A, [], cost: 2 15: evalfbb7in -> [13] : D'=1+A, E'=1+C, F'=1+C+A, [ A>=D && C>=B && B+D>=-B+D ], cost: 9-2*(-1+D-A)*C^2-8*(-1+D-A)*C+2*(-1+D-A)*B^2-9*D+9*A+4*(-1+D-A)*B Applied simple chaining: Start location: evalfstart 0: evalfstart -> [13] : A'=B, B'=C, C'=D, D'=1+B, E'=1+D, F'=1+B+D, [ B>=A && D>=C && C+A>=-C+A ], cost: 11-4*(1+B-A)*C+9*B-2*(1+B-A)*C^2+2*(1+B-A)*D^2+8*(1+B-A)*D-9*A Final control flow graph problem, now checking costs for infinitely many models: Start location: evalfstart 0: evalfstart -> [13] : A'=B, B'=C, C'=D, D'=1+B, E'=1+D, F'=1+B+D, [ B>=A && D>=C && C+A>=-C+A ], cost: 11-4*(1+B-A)*C+9*B-2*(1+B-A)*C^2+2*(1+B-A)*D^2+8*(1+B-A)*D-9*A Computing complexity for remaining 1 transitions. Found configuration with infinitely models for cost: 11-4*(1+B-A)*C+9*B-2*(1+B-A)*C^2+2*(1+B-A)*D^2+8*(1+B-A)*D-9*A and guard: B>=A && D>=C && C+A>=-C+A: B: Pos, C: Const, D: Pos, A: Neg Found new complexity n^3, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: B>=A && D>=C && C+A>=-C+A Final Cost: -5-7*B+2*(1+B-A)*D^2+8*(1+B-A)*D+7*A Obtained the following complexity w.r.t. the length of the input n: Complexity class: n^3 Complexity value: 3 WORST_CASE(Omega(n^3),?)