Trying to load file: main.koat Initial Control flow graph problem: Start location: start0 0: start -> stop : D'=F, [ 0>=1+A && B==C && D==E && F==A ], cost: 1 1: start -> lbl121 : B'=1, D'=-1+F, [ A>=0 && 1>=A && B==C && D==E && F==A ], cost: 1 2: start -> lbl101 : B'=2, D'=F, [ A>=2 && B==C && D==E && F==A ], cost: 1 3: lbl121 -> stop : [ A>=0 && B>=0 && B>=1 && 1+D==0 && F==A ], cost: 1 4: lbl121 -> lbl121 : B'=1, D'=-1+D, [ D>=0 && 1>=D && A>=1+D && B>=1+D && B>=1 && 1+D>=0 && F==A ], cost: 1 5: lbl121 -> lbl101 : B'=2, [ D>=2 && A>=1+D && B>=1+D && B>=1 && 1+D>=0 && F==A ], cost: 1 7: lbl101 -> lbl121 : D'=-1+D, [ B>=D && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 6: lbl101 -> lbl101 : B'=2*B, [ D>=1+B && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, [], cost: 1 Simplified the transitions: Start location: start0 1: start -> lbl121 : B'=1, D'=-1+F, [ A>=0 && 1>=A && B==C && D==E && F==A ], cost: 1 2: start -> lbl101 : B'=2, D'=F, [ A>=2 && B==C && D==E && F==A ], cost: 1 4: lbl121 -> lbl121 : B'=1, D'=-1+D, [ D>=0 && 1>=D && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1 5: lbl121 -> lbl101 : B'=2, [ D>=2 && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1 7: lbl101 -> lbl121 : D'=-1+D, [ B>=D && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 6: lbl101 -> lbl101 : B'=2*B, [ D>=1+B && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, [], cost: 1 Eliminating 1 self-loops for location lbl121 Self-Loop 4 has the metering function: 1+D, resulting in the new transition 9. Removing the self-loops: 4. Eliminating 1 self-loops for location lbl101 Removing the self-loops: 6. Adding an epsilon transition (to model nonexecution of the loops): 11. Removed all Self-loops using metering functions (where possible): Start location: start0 1: start -> lbl121 : B'=1, D'=-1+F, [ A>=0 && 1>=A && B==C && D==E && F==A ], cost: 1 2: start -> lbl101 : B'=2, D'=F, [ A>=2 && B==C && D==E && F==A ], cost: 1 9: lbl121 -> [5] : B'=1, D'=-1, [ D>=0 && 1>=D && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1+D 10: lbl101 -> [6] : B'=2*B, [ D>=1+B && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 11: lbl101 -> [6] : [], cost: 0 8: start0 -> start : B'=C, D'=E, F'=A, [], cost: 1 5: [5] -> lbl101 : B'=2, [ D>=2 && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1 7: [6] -> lbl121 : D'=-1+D, [ B>=D && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 Applied chaining over branches and pruning: Start location: start0 14: lbl121 -> [7] : B'=1, D'=-1, [ D>=0 && 1>=D && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1+D 15: lbl101 -> lbl121 : B'=2*B, D'=-1+D, [ D>=1+B && B>=2 && 2*D>=2+B && A>=D && F==A && 2*B>=D && 2*B>=2 && 2*D>=2+2*B && A>=D && F==A ], cost: 2 16: lbl101 -> lbl121 : D'=-1+D, [ B>=D && B>=2 && 2*D>=2+B && A>=D && F==A ], cost: 1 12: start0 -> lbl121 : B'=1, D'=-1+A, F'=A, [ A>=0 && 1>=A && C==C && E==E && A==A ], cost: 2 13: start0 -> lbl101 : B'=2, D'=A, F'=A, [ A>=2 && C==C && E==E && A==A ], cost: 2 Applied chaining over branches and pruning: Start location: start0 14: lbl121 -> [7] : B'=1, D'=-1, [ D>=0 && 1>=D && A>=1+D && B>=1+D && B>=1 && F==A ], cost: 1+D 12: start0 -> lbl121 : B'=1, D'=-1+A, F'=A, [ A>=0 && 1>=A && C==C && E==E && A==A ], cost: 2 17: start0 -> lbl121 : B'=4, D'=-1+A, F'=A, [ A>=2 && C==C && E==E && A==A && A>=3 && 2>=2 && 2*A>=4 && A>=A && A==A && 4>=A && 4>=2 && 2*A>=6 && A>=A && A==A ], cost: 4 18: start0 -> lbl121 : B'=2, D'=-1+A, F'=A, [ A>=2 && C==C && E==E && A==A && 2>=A && 2>=2 && 2*A>=4 && A>=A && A==A ], cost: 3 Applied chaining over branches and pruning: Start location: start0 19: start0 -> [7] : B'=1, D'=-1, F'=A, [ A>=0 && 1>=A && C==C && E==E && A==A && -1+A>=0 && 1>=-1+A && A>=A && 1>=A && 1>=1 && A==A ], cost: 2+A 20: start0 -> [7] : B'=1, D'=-1, F'=A, [ A>=2 && C==C && E==E && A==A && 2>=A && 2>=2 && 2*A>=4 && A>=A && A==A && -1+A>=0 && 1>=-1+A && A>=A && 2>=A && 2>=1 && A==A ], cost: 3+A Final control flow graph problem, now checking costs for infinitely many models: Start location: start0 19: start0 -> [7] : B'=1, D'=-1, F'=A, [ A>=0 && 1>=A && C==C && E==E && A==A && -1+A>=0 && 1>=-1+A && A>=A && 1>=A && 1>=1 && A==A ], cost: 2+A 20: start0 -> [7] : B'=1, D'=-1, F'=A, [ A>=2 && C==C && E==E && A==A && 2>=A && 2>=2 && 2*A>=4 && A>=A && A==A && -1+A>=0 && 1>=-1+A && A>=A && 2>=A && 2>=1 && A==A ], cost: 3+A Computing complexity for remaining 2 transitions. Found configuration with infinitely models for cost: 2+A and guard: A>=0 && 1>=A && C==C && E==E && A==A && -1+A>=0 && 1>=-1+A && A>=A && 1>=A && 1>=1 && A==A: E: Both, C: Both, A: Const Found new complexity const, because: Found infinity configuration. Found configuration with infinitely models for cost: 3+A and guard: A>=2 && C==C && E==E && A==A && 2>=A && 2>=2 && 2*A>=4 && A>=A && A==A && -1+A>=0 && 1>=-1+A && A>=A && 2>=A && 2>=1 && A==A: E: Both, C: Both, A: Const The final runtime is determined by this resulting transition: Final Guard: A>=0 && 1>=A && C==C && E==E && A==A && -1+A>=0 && 1>=-1+A && A>=A && 1>=A && 1>=1 && A==A Final Cost: 3 Obtained the following complexity w.r.t. the length of the input n: Complexity class: const Complexity value: 0 WORST_CASE(Omega(1),?)