Trying to load file: main.koat Initial Control flow graph problem: Start location: evalspeedpldi3start 0: evalspeedpldi3start -> evalspeedpldi3entryin : [], cost: 1 1: evalspeedpldi3entryin -> evalspeedpldi3returnin : [ 0>=A ], cost: 1 2: evalspeedpldi3entryin -> evalspeedpldi3returnin : [ A>=B ], cost: 1 3: evalspeedpldi3entryin -> evalspeedpldi3bb5in : C'=0, D'=0, [ A>=1 && B>=1+A ], cost: 1 10: evalspeedpldi3returnin -> evalspeedpldi3stop : [], cost: 1 5: evalspeedpldi3bb5in -> evalspeedpldi3returnin : [ D>=B ], cost: 1 4: evalspeedpldi3bb5in -> evalspeedpldi3bb2in : [ B>=1+D ], cost: 1 6: evalspeedpldi3bb2in -> evalspeedpldi3bb3in : [ A>=1+C ], cost: 1 7: evalspeedpldi3bb2in -> evalspeedpldi3bb4in : [ C>=A ], cost: 1 8: evalspeedpldi3bb3in -> evalspeedpldi3bb5in : C'=1+C, [], cost: 1 9: evalspeedpldi3bb4in -> evalspeedpldi3bb5in : C'=0, D'=1+D, [], cost: 1 Simplified the transitions: Start location: evalspeedpldi3start 0: evalspeedpldi3start -> evalspeedpldi3entryin : [], cost: 1 3: evalspeedpldi3entryin -> evalspeedpldi3bb5in : C'=0, D'=0, [ A>=1 && B>=1+A ], cost: 1 4: evalspeedpldi3bb5in -> evalspeedpldi3bb2in : [ B>=1+D ], cost: 1 6: evalspeedpldi3bb2in -> evalspeedpldi3bb3in : [ A>=1+C ], cost: 1 7: evalspeedpldi3bb2in -> evalspeedpldi3bb4in : [ C>=A ], cost: 1 8: evalspeedpldi3bb3in -> evalspeedpldi3bb5in : C'=1+C, [], cost: 1 9: evalspeedpldi3bb4in -> evalspeedpldi3bb5in : C'=0, D'=1+D, [], cost: 1 Applied simple chaining: Start location: evalspeedpldi3start 0: evalspeedpldi3start -> evalspeedpldi3bb5in : C'=0, D'=0, [ A>=1 && B>=1+A ], cost: 2 4: evalspeedpldi3bb5in -> evalspeedpldi3bb2in : [ B>=1+D ], cost: 1 6: evalspeedpldi3bb2in -> evalspeedpldi3bb5in : C'=1+C, [ A>=1+C ], cost: 2 7: evalspeedpldi3bb2in -> evalspeedpldi3bb5in : C'=0, D'=1+D, [ C>=A ], cost: 2 Applied chaining over branches and pruning: Start location: evalspeedpldi3start 0: evalspeedpldi3start -> evalspeedpldi3bb5in : C'=0, D'=0, [ A>=1 && B>=1+A ], cost: 2 11: evalspeedpldi3bb5in -> evalspeedpldi3bb5in : C'=1+C, [ B>=1+D && A>=1+C ], cost: 3 12: evalspeedpldi3bb5in -> evalspeedpldi3bb5in : C'=0, D'=1+D, [ B>=1+D && C>=A ], cost: 3 Eliminating 2 self-loops for location evalspeedpldi3bb5in Self-Loop 11 has the metering function: -C+A, resulting in the new transition 13. Found this metering function when nesting loops: -1+B-D, and nested parallel self-loops 14 (outer loop) and 13 (inner loop), obtaining the new transitions: 15, 16. Found this metering function when nesting loops: -1-C+A, Removing the self-loops: 11 12 14. Adding an epsilon transition (to model nonexecution of the loops): 17. Removed all Self-loops using metering functions (where possible): Start location: evalspeedpldi3start 0: evalspeedpldi3start -> evalspeedpldi3bb5in : C'=0, D'=0, [ A>=1 && B>=1+A ], cost: 2 13: evalspeedpldi3bb5in -> [8] : C'=A, [ B>=1+D && A>=1+C ], cost: -3*C+3*A 15: evalspeedpldi3bb5in -> [8] : C'=A, D'=-1+B, [ B>=1+D && C>=A && B>=2+D && A>=1 ], cost: -3+3*B+3*(-1+B-D)*A-3*D 16: evalspeedpldi3bb5in -> [8] : C'=A, D'=-1+B, [ B>=1+D && A>=1+C && B>=1+D && A>=A && B>=2+D && A>=1 ], cost: -3+3*B+3*(-1+B-D)*A-3*C-3*D+3*A 17: evalspeedpldi3bb5in -> [8] : [], cost: 0 Applied chaining over branches and pruning: Start location: evalspeedpldi3start 18: evalspeedpldi3start -> [8] : C'=A, D'=0, [ A>=1 && B>=1+A && B>=1 && A>=1 ], cost: 2+3*A 19: evalspeedpldi3start -> [8] : C'=A, D'=-1+B, [ A>=1 && B>=1+A && B>=1 && A>=1 && B>=1 && A>=A && B>=2 && A>=1 ], cost: -1+3*(-1+B)*A+3*B+3*A Final control flow graph problem, now checking costs for infinitely many models: Start location: evalspeedpldi3start 18: evalspeedpldi3start -> [8] : C'=A, D'=0, [ A>=1 && B>=1+A && B>=1 && A>=1 ], cost: 2+3*A 19: evalspeedpldi3start -> [8] : C'=A, D'=-1+B, [ A>=1 && B>=1+A && B>=1 && A>=1 && B>=1 && A>=A && B>=2 && A>=1 ], cost: -1+3*(-1+B)*A+3*B+3*A Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 2+3*A and guard: A>=1 && B>=1+A && B>=1 && A>=1: B: Pos, A: Pos, where: B > A Found new complexity n^1, because: Found infinity configuration. Found configuration with infinitely models for cost: -1+3*(-1+B)*A+3*B+3*A and guard: A>=1 && B>=1+A && B>=1 && A>=1 && B>=1 && A>=A && B>=2 && A>=1: B: Pos, A: Pos, where: B > A Found new complexity n^2, because: Found infinity configuration. The final runtime is determined by this resulting transition: Final Guard: A>=1 && B>=1+A && B>=1 && A>=1 && B>=1 && A>=A && B>=2 && A>=1 Final Cost: -1+3*(-1+B)*A+3*B+3*A 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),?)