Trying to load file: main.koat Initial Control flow graph problem: Start location: f0 0: f0 -> f2 : A'=free, B'=free_1, [ free>=1 && free>=5 && free>=2 && free>=3 ], cost: 1 1: f0 -> f2 : A'=1, B'=free_2, [ 0>=4 && 0>=1 ], cost: 1 2: f0 -> f2 : A'=free_3, B'=free_4, [ free_3>=1 && free_3>=5 && 0>=free_3 && free_3>=3 ], cost: 1 3: f0 -> f2 : A'=1, B'=free_5, [ 0>=4 && 0>=1 ], cost: 1 4: f0 -> f2 : A'=3, B'=free_6, [], cost: 1 5: f0 -> f2 : A'=1, B'=free_7, [ 0>=1 ], cost: 1 6: f0 -> f2 : A'=3, B'=free_8, [ 0>=3 ], cost: 1 7: f0 -> f2 : A'=1, B'=free_9, [ 0>=1 ], cost: 1 8: f2 -> f2 : A'=B, B'=free_10, [ B>=5 && B>=2 && B>=3 && A==2*B ], cost: 1 9: f2 -> f2 : A'=B, B'=free_11, [ B>=5 && B>=2 && 1>=B && A==2*B ], cost: 1 10: f2 -> f2 : A'=B, B'=free_12, [ B>=5 && 0>=B && B>=3 && A==2*B ], cost: 1 11: f2 -> f2 : A'=B, B'=free_13, [ B>=5 && 0>=B && 1>=B && A==2*B ], cost: 1 12: f2 -> f2 : A'=B, B'=free_14, [ B==3 && A==6 ], cost: 1 13: f2 -> f2 : A'=B, B'=free_15, [ 3>=B && B>=2 && 1>=B && A==2*B ], cost: 1 14: f2 -> f2 : A'=B, B'=free_16, [ 0>=3 && B==3 && A==6 ], cost: 1 15: f2 -> f2 : A'=B, B'=free_17, [ 3>=B && 0>=B && 1>=B && A==2*B ], cost: 1 16: f2 -> f2 : A'=4+6*B, B'=free_18, [ 6*B>=1 && 2+6*B>=0 && 1+6*B>=0 && A==1+2*B ], cost: 1 17: f2 -> f2 : A'=4+6*B, B'=free_19, [ 6*B>=1 && 2+6*B>=0 && 0>=3+6*B && A==1+2*B ], cost: 1 18: f2 -> f2 : A'=4+6*B, B'=free_20, [ 6*B>=1 && 0>=4+6*B && 1+6*B>=0 && A==1+2*B ], cost: 1 19: f2 -> f2 : A'=4+6*B, B'=free_21, [ 6*B>=1 && 0>=4+6*B && 0>=3+6*B && A==1+2*B ], cost: 1 20: f2 -> f2 : A'=4+6*B, B'=free_22, [ 0>=1+6*B && 2+6*B>=0 && 1+6*B>=0 && A==1+2*B ], cost: 1 21: f2 -> f2 : A'=4+6*B, B'=free_23, [ 0>=1+6*B && 2+6*B>=0 && 0>=3+6*B && A==1+2*B ], cost: 1 22: f2 -> f2 : A'=4+6*B, B'=free_24, [ 0>=1+6*B && 0>=4+6*B && 1+6*B>=0 && A==1+2*B ], cost: 1 23: f2 -> f2 : A'=4+6*B, B'=free_25, [ 0>=1+6*B && 0>=4+6*B && 0>=3+6*B && A==1+2*B ], cost: 1 Removed unsatisfiable initial transitions: Start location: f0 0: f0 -> f2 : A'=free, B'=free_1, [ free>=1 && free>=5 && free>=2 && free>=3 ], cost: 1 4: f0 -> f2 : A'=3, B'=free_6, [], cost: 1 8: f2 -> f2 : A'=B, B'=free_10, [ B>=5 && B>=2 && B>=3 && A==2*B ], cost: 1 9: f2 -> f2 : A'=B, B'=free_11, [ B>=5 && B>=2 && 1>=B && A==2*B ], cost: 1 10: f2 -> f2 : A'=B, B'=free_12, [ B>=5 && 0>=B && B>=3 && A==2*B ], cost: 1 11: f2 -> f2 : A'=B, B'=free_13, [ B>=5 && 0>=B && 1>=B && A==2*B ], cost: 1 12: f2 -> f2 : A'=B, B'=free_14, [ B==3 && A==6 ], cost: 1 13: f2 -> f2 : A'=B, B'=free_15, [ 3>=B && B>=2 && 1>=B && A==2*B ], cost: 1 14: f2 -> f2 : A'=B, B'=free_16, [ 0>=3 && B==3 && A==6 ], cost: 1 15: f2 -> f2 : A'=B, B'=free_17, [ 3>=B && 0>=B && 1>=B && A==2*B ], cost: 1 16: f2 -> f2 : A'=4+6*B, B'=free_18, [ 6*B>=1 && 2+6*B>=0 && 1+6*B>=0 && A==1+2*B ], cost: 1 17: f2 -> f2 : A'=4+6*B, B'=free_19, [ 6*B>=1 && 2+6*B>=0 && 0>=3+6*B && A==1+2*B ], cost: 1 18: f2 -> f2 : A'=4+6*B, B'=free_20, [ 6*B>=1 && 0>=4+6*B && 1+6*B>=0 && A==1+2*B ], cost: 1 19: f2 -> f2 : A'=4+6*B, B'=free_21, [ 6*B>=1 && 0>=4+6*B && 0>=3+6*B && A==1+2*B ], cost: 1 20: f2 -> f2 : A'=4+6*B, B'=free_22, [ 0>=1+6*B && 2+6*B>=0 && 1+6*B>=0 && A==1+2*B ], cost: 1 21: f2 -> f2 : A'=4+6*B, B'=free_23, [ 0>=1+6*B && 2+6*B>=0 && 0>=3+6*B && A==1+2*B ], cost: 1 22: f2 -> f2 : A'=4+6*B, B'=free_24, [ 0>=1+6*B && 0>=4+6*B && 1+6*B>=0 && A==1+2*B ], cost: 1 23: f2 -> f2 : A'=4+6*B, B'=free_25, [ 0>=1+6*B && 0>=4+6*B && 0>=3+6*B && A==1+2*B ], cost: 1 Simplified the transitions: Start location: f0 0: f0 -> f2 : A'=free, B'=free_1, [ free>=5 ], cost: 1 4: f0 -> f2 : A'=3, B'=free_6, [], cost: 1 8: f2 -> f2 : A'=B, B'=free_10, [ B>=5 && A==2*B ], cost: 1 9: f2 -> f2 : A'=B, B'=free_11, [ B>=5 && 1>=B && A==2*B ], cost: 1 10: f2 -> f2 : A'=B, B'=free_12, [ B>=5 && 0>=B && A==2*B ], cost: 1 11: f2 -> f2 : A'=B, B'=free_13, [ B>=5 && 0>=B && A==2*B ], cost: 1 12: f2 -> f2 : A'=B, B'=free_14, [ B==3 && A==6 ], cost: 1 13: f2 -> f2 : A'=B, B'=free_15, [ B>=2 && 1>=B && A==2*B ], cost: 1 14: f2 -> f2 : A'=B, B'=free_16, [ 0>=3 ], cost: 1 15: f2 -> f2 : A'=B, B'=free_17, [ 0>=B && A==2*B ], cost: 1 16: f2 -> f2 : A'=4+6*B, B'=free_18, [ 6*B>=1 && A==1+2*B ], cost: 1 17: f2 -> f2 : A'=4+6*B, B'=free_19, [ 6*B>=1 && 0>=3+6*B && A==1+2*B ], cost: 1 18: f2 -> f2 : A'=4+6*B, B'=free_20, [ 6*B>=1 && 0>=4+6*B && A==1+2*B ], cost: 1 19: f2 -> f2 : A'=4+6*B, B'=free_21, [ 6*B>=1 && 0>=4+6*B && A==1+2*B ], cost: 1 20: f2 -> f2 : A'=4+6*B, B'=free_22, [ 0>=1+6*B && 2+6*B>=0 && A==1+2*B ], cost: 1 21: f2 -> f2 : A'=4+6*B, B'=free_23, [ 0>=1+6*B && 2+6*B>=0 && A==1+2*B ], cost: 1 22: f2 -> f2 : A'=4+6*B, B'=free_24, [ 1+6*B==0 && A==1+2*B ], cost: 1 23: f2 -> f2 : A'=4+6*B, B'=free_25, [ 0>=1+6*B && A==1+2*B ], cost: 1 Eliminating 16 self-loops for location f2 Self-Loop 9 has unbounded runtime, resulting in the new transition 25. Self-Loop 10 has unbounded runtime, resulting in the new transition 26. Self-Loop 11 has unbounded runtime, resulting in the new transition 27. Self-Loop 12 has the metering function: meter, resulting in the new transition 28. Self-Loop 13 has unbounded runtime, resulting in the new transition 29. Self-Loop 14 has unbounded runtime, resulting in the new transition 30. Self-Loop 17 has unbounded runtime, resulting in the new transition 33. Self-Loop 18 has unbounded runtime, resulting in the new transition 34. Self-Loop 19 has unbounded runtime, resulting in the new transition 35. Self-Loop 20 has unbounded runtime, resulting in the new transition 36. Self-Loop 21 has unbounded runtime, resulting in the new transition 37. Self-Loop 22 has unbounded runtime, resulting in the new transition 38. Found this metering function when nesting loops: meter_1, and nested parallel self-loops 31 (outer loop) and 28 (inner loop), obtaining the new transitions: 40. Found this metering function when nesting loops: meter_2, and nested parallel self-loops 39 (outer loop) and 28 (inner loop), obtaining the new transitions: 41. Found this metering function when nesting loops: meter_3, and nested parallel self-loops 31 (outer loop) and 40 (inner loop), obtaining the new transitions: 42. Found this metering function when nesting loops: meter_4, and nested parallel self-loops 31 (outer loop) and 41 (inner loop), obtaining the new transitions: 43. Found this metering function when nesting loops: meter_5, and nested parallel self-loops 24 (outer loop) and 42 (inner loop), obtaining the new transitions: 44. Found this metering function when nesting loops: meter_6, and nested parallel self-loops 31 (outer loop) and 42 (inner loop), obtaining the new transitions: 45. Found this metering function when nesting loops: meter_7, and nested parallel self-loops 39 (outer loop) and 43 (inner loop), obtaining the new transitions: 46. Removing the self-loops: 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 31 39. Adding an epsilon transition (to model nonexecution of the loops): 47. Removing duplicate transition: 26. Removing duplicate transition: 34. Removing duplicate transition: 36. Removed all Self-loops using metering functions (where possible): Start location: f0 0: f0 -> f2 : A'=free, B'=free_1, [ free>=5 ], cost: 1 4: f0 -> f2 : A'=3, B'=free_6, [], cost: 1 25: f2 -> [2] : [ B>=5 && 1>=B && A==2*B ], cost: INF 27: f2 -> [2] : [ B>=5 && 0>=B && A==2*B ], cost: INF 28: f2 -> [2] : A'=free_14, B'=free_14, [ B==3 && A==6 && 3*meter==-6+A ], cost: meter 29: f2 -> [2] : [ B>=2 && 1>=B && A==2*B ], cost: INF 30: f2 -> [2] : [ 0>=3 ], cost: INF 32: f2 -> [2] : A'=4+6*B, B'=free_18, [ 6*B>=1 && A==1+2*B ], cost: 1 33: f2 -> [2] : [ 6*B>=1 && 0>=3+6*B && A==1+2*B ], cost: INF 35: f2 -> [2] : [ 6*B>=1 && 0>=4+6*B && A==1+2*B ], cost: INF 37: f2 -> [2] : [ 0>=1+6*B && 2+6*B>=0 && A==1+2*B ], cost: INF 38: f2 -> [2] : [ 1+6*B==0 ], cost: INF 40: f2 -> [2] : A'=free_14, B'=free_17, [ B==3 && A==6 && 3*meter==-6+A && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+A ], cost: meter_1+meter_1*meter 41: f2 -> [2] : A'=4+6*free_14, B'=free_25, [ B==3 && A==6 && 3*meter==-6+A && 0>=1+6*free_14 && free_14==1+2*free_14 && 8*meter_2==-6+A ], cost: meter_2*meter+meter_2 42: f2 -> [2] : A'=free_17, B'=free_17, [ B==3 && A==6 && 3*meter==-6+A && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+A && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+B+A ], cost: meter_3*meter_1+meter_3+meter_3*meter_1*meter 43: f2 -> [2] : A'=free_25, B'=free_17, [ B==3 && A==6 && 3*meter==-6+A && 0>=1+6*free_14 && free_14==1+2*free_14 && 8*meter_2==-6+A && 0>=free_25 && 4+6*free_14==2*free_25 && 7*meter_4==-6+A ], cost: meter_4+meter_4*meter_2*meter+meter_4*meter_2 44: f2 -> [2] : A'=free_17, B'=free_17, [ B>=5 && A==2*B && free_10==3 && B==6 && 3*meter==-6+B && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+B && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+B+free_10 && 6*meter_5==-6+B ], cost: meter_5+meter_5*meter_3*meter_1+meter_5*meter_3*meter_1*meter+meter_5*meter_3 45: f2 -> [2] : A'=free_17, B'=free_17, [ B==3 && A==6 && 3*meter==-6+A && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+A && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+B+A && 0>=free_17 && free_17==2*free_17 && 9*meter_6==-9+B+A ], cost: meter_6+meter_6*meter_3+meter_6*meter_3*meter_1+meter_6*meter_3*meter_1*meter 46: f2 -> [2] : A'=4+6*free_17, B'=free_25, [ B==3 && A==6 && 3*meter==-6+A && 0>=1+6*free_14 && free_14==1+2*free_14 && 8*meter_2==-6+A && 0>=free_25 && 4+6*free_14==2*free_25 && 7*meter_4==-6+A && 0>=1+6*free_17 && free_25==1+2*free_17 && 12*meter_7==-9+B+A ], cost: meter_4*meter_7*meter_2+meter_7+meter_4*meter_7*meter_2*meter+meter_4*meter_7 47: f2 -> [2] : [], cost: 0 Applied chaining over branches and pruning: Start location: f0 48: f0 -> [2] : A'=free_14, B'=free_14, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free ], cost: 1+meter 50: f0 -> [2] : A'=free_14, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free ], cost: 1+meter_1+meter_1*meter 52: f0 -> [2] : A'=free_17, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+free+free_1 ], cost: 1+meter_3*meter_1+meter_3+meter_3*meter_1*meter 53: f0 -> [2] : A'=free_25, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=1+6*free_14 && free_14==1+2*free_14 && 8*meter_2==-6+free && 0>=free_25 && 4+6*free_14==2*free_25 && 7*meter_4==-6+free ], cost: 1+meter_4+meter_4*meter_2*meter+meter_4*meter_2 54: f0 -> [2] : A'=free_17, B'=free_17, [ free>=5 && free_1>=5 && free==2*free_1 && free_10==3 && free_1==6 && 3*meter==-6+free_1 && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free_1 && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+free_10+free_1 && 6*meter_5==-6+free_1 ], cost: 1+meter_5+meter_5*meter_3*meter_1+meter_5*meter_3*meter_1*meter+meter_5*meter_3 Final control flow graph problem, now checking costs for infinitely many models: Start location: f0 48: f0 -> [2] : A'=free_14, B'=free_14, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free ], cost: 1+meter 50: f0 -> [2] : A'=free_14, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free ], cost: 1+meter_1+meter_1*meter 52: f0 -> [2] : A'=free_17, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+free+free_1 ], cost: 1+meter_3*meter_1+meter_3+meter_3*meter_1*meter 53: f0 -> [2] : A'=free_25, B'=free_17, [ free>=5 && free_1==3 && free==6 && 3*meter==-6+free && 0>=1+6*free_14 && free_14==1+2*free_14 && 8*meter_2==-6+free && 0>=free_25 && 4+6*free_14==2*free_25 && 7*meter_4==-6+free ], cost: 1+meter_4+meter_4*meter_2*meter+meter_4*meter_2 54: f0 -> [2] : A'=free_17, B'=free_17, [ free>=5 && free_1>=5 && free==2*free_1 && free_10==3 && free_1==6 && 3*meter==-6+free_1 && 0>=free_14 && free_14==2*free_14 && 6*meter_1==-6+free_1 && 0>=free_17 && free_14==2*free_17 && 9*meter_3==-9+free_10+free_1 && 6*meter_5==-6+free_1 ], cost: 1+meter_5+meter_5*meter_3*meter_1+meter_5*meter_3*meter_1*meter+meter_5*meter_3 Computing complexity for remaining 5 transitions. The final runtime is determined by this resulting transition: Final Guard: Final Cost: 1 Obtained the following complexity w.r.t. the length of the input n: Complexity class: const Complexity value: 0 WORST_CASE(Omega(1),?)