Trying to load file: main.koat Initial Control flow graph problem: Start location: evalSimpleMultipleDepstart 0: evalSimpleMultipleDepstart -> evalSimpleMultipleDepentryin : [], cost: 1 1: evalSimpleMultipleDepentryin -> evalSimpleMultipleDepbb3in : A'=0, B'=0, [], cost: 1 2: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepbbin : [ C>=1+B ], cost: 1 3: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepreturnin : [ B>=C ], cost: 1 4: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb1in : [ D>=1+A ], cost: 1 5: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb2in : [ A>=D ], cost: 1 8: evalSimpleMultipleDepreturnin -> evalSimpleMultipleDepstop : [], cost: 1 6: evalSimpleMultipleDepbb1in -> evalSimpleMultipleDepbb3in : A'=1+A, [], cost: 1 7: evalSimpleMultipleDepbb2in -> evalSimpleMultipleDepbb3in : A'=0, B'=1+B, [], cost: 1 Simplified the transitions: Start location: evalSimpleMultipleDepstart 0: evalSimpleMultipleDepstart -> evalSimpleMultipleDepentryin : [], cost: 1 1: evalSimpleMultipleDepentryin -> evalSimpleMultipleDepbb3in : A'=0, B'=0, [], cost: 1 2: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepbbin : [ C>=1+B ], cost: 1 4: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb1in : [ D>=1+A ], cost: 1 5: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb2in : [ A>=D ], cost: 1 6: evalSimpleMultipleDepbb1in -> evalSimpleMultipleDepbb3in : A'=1+A, [], cost: 1 7: evalSimpleMultipleDepbb2in -> evalSimpleMultipleDepbb3in : A'=0, B'=1+B, [], cost: 1 Applied simple chaining: Start location: evalSimpleMultipleDepstart 0: evalSimpleMultipleDepstart -> evalSimpleMultipleDepbb3in : A'=0, B'=0, [], cost: 2 2: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepbbin : [ C>=1+B ], cost: 1 4: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb3in : A'=1+A, [ D>=1+A ], cost: 2 5: evalSimpleMultipleDepbbin -> evalSimpleMultipleDepbb3in : A'=0, B'=1+B, [ A>=D ], cost: 2 Applied chaining over branches and pruning: Start location: evalSimpleMultipleDepstart 0: evalSimpleMultipleDepstart -> evalSimpleMultipleDepbb3in : A'=0, B'=0, [], cost: 2 9: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepbb3in : A'=1+A, [ C>=1+B && D>=1+A ], cost: 3 10: evalSimpleMultipleDepbb3in -> evalSimpleMultipleDepbb3in : A'=0, B'=1+B, [ C>=1+B && A>=D ], cost: 3 Eliminating 2 self-loops for location evalSimpleMultipleDepbb3in Self-Loop 9 has the metering function: D-A, resulting in the new transition 11. Found this metering function when nesting loops: -1-B+C, and nested parallel self-loops 12 (outer loop) and 11 (inner loop), obtaining the new transitions: 13, 14. Found this metering function when nesting loops: -1+D-A, Removing the self-loops: 9 10 12. Adding an epsilon transition (to model nonexecution of the loops): 15. Removed all Self-loops using metering functions (where possible): Start location: evalSimpleMultipleDepstart 0: evalSimpleMultipleDepstart -> evalSimpleMultipleDepbb3in : A'=0, B'=0, [], cost: 2 11: evalSimpleMultipleDepbb3in -> [8] : A'=D, [ C>=1+B && D>=1+A ], cost: 3*D-3*A 13: evalSimpleMultipleDepbb3in -> [8] : A'=D, B'=-1+C, [ C>=1+B && A>=D && C>=2+B && D>=1 ], cost: -3-3*B+3*C-3*(1+B-C)*D 14: evalSimpleMultipleDepbb3in -> [8] : A'=D, B'=-1+C, [ C>=1+B && D>=1+A && C>=1+B && D>=D && C>=2+B && D>=1 ], cost: -3-3*B+3*C+3*D-3*(1+B-C)*D-3*A 15: evalSimpleMultipleDepbb3in -> [8] : [], cost: 0 Applied chaining over branches and pruning: Start location: evalSimpleMultipleDepstart 16: evalSimpleMultipleDepstart -> [8] : A'=D, B'=0, [ C>=1 && D>=1 ], cost: 2+3*D 17: evalSimpleMultipleDepstart -> [8] : A'=D, B'=-1+C, [ C>=1 && D>=1 && C>=1 && D>=D && C>=2 && D>=1 ], cost: -1+3*C+3*(-1+C)*D+3*D Final control flow graph problem, now checking costs for infinitely many models: Start location: evalSimpleMultipleDepstart 16: evalSimpleMultipleDepstart -> [8] : A'=D, B'=0, [ C>=1 && D>=1 ], cost: 2+3*D 17: evalSimpleMultipleDepstart -> [8] : A'=D, B'=-1+C, [ C>=1 && D>=1 && C>=1 && D>=D && C>=2 && D>=1 ], cost: -1+3*C+3*(-1+C)*D+3*D Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 2+3*D and guard: C>=1 && D>=1: C: Pos, D: Pos Found new complexity n^1, because: Found infinity configuration. Found configuration with infinitely models for cost: -1+3*C+3*(-1+C)*D+3*D and guard: C>=1 && D>=1 && C>=1 && D>=D && C>=2 && D>=1: C: Pos, D: Pos Found new complexity n^2, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: C>=1 && D>=1 && C>=1 && D>=D && C>=2 && D>=1 Final Cost: -1+3*C+3*(-1+C)*D+3*D Obtained the following complexity w.r.t. the length of the input n: Complexity class: n^2 Complexity value: 2 WORST_CASE(Omega(n^2),?)