NO Initial ITS Start location: __init Program variables: arg1 arg2 0: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1p1, arg2'=arg2p1, (-arg2p1+arg2 == 0 /\ -1+x13-2*x14 == 0 /\ 1+x13 > 0 /\ -arg1p1+arg1 == 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 2: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1p3, arg2'=arg2p3, (1+x23 > 0 /\ x23-2*x24 == 0 /\ -arg2p3+arg2 == 0 /\ -arg1p3+arg1 == 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 1: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (1+arg1p2 > 0 /\ -2*x19+x18 >= 0 /\ -2-2*x19+x18 < 0 /\ 1+x18 > 0 /\ -1-2*x19+x18 == 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 3: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=arg1p4, arg2'=arg2p4, (-2-2*x29+x28 < 0 /\ 1+x28 > 0 /\ -2*x29+x28 >= 0 /\ -2*x29+x28 == 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ -arg1p4-x27 == 0), cost: 1 4: f119_0_loop_LE -> f119_0_loop_LE : arg1'=arg1p5, arg2'=arg2p5, (-arg1p5 == 0 /\ -arg1 == 0), cost: 1 5: f119_0_loop_LE -> f119_0_loop_LE : arg1'=arg1p6, arg2'=arg2p6, (-1-arg1p6+arg1 == 0 /\ arg1 > 0), cost: 1 6: f137_0_loop_GE -> f119_0_loop_LE : arg1'=arg1p7, arg2'=arg2p7, (-arg1p7 == 0 /\ -arg1 == 0), cost: 1 7: f137_0_loop_GE -> f137_0_loop_GE : arg1'=arg1p8, arg2'=arg2p8, (1+arg1-arg1p8 == 0 /\ arg1 < 0), cost: 1 8: __init -> f1_0_main_Load : arg1'=arg1p9, arg2'=arg2p9, T, cost: 1 Simplified Transitions Start location: __init Program variables: arg1 arg2 9: f1_0_main_Load -> f1_0_main_Load\' : (arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 11: f1_0_main_Load -> f1_0_main_Load\' : (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 10: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0), cost: 1 12: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (1+2*x29 > 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 13: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, -arg1 == 0, cost: 1 14: f119_0_loop_LE -> f119_0_loop_LE : arg1'=-1+arg1, arg2'=arg2p6, arg1 > 0, cost: 1 15: f137_0_loop_GE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p7, -arg1 == 0, cost: 1 16: f137_0_loop_GE -> f137_0_loop_GE : arg1'=1+arg1, arg2'=arg2p8, arg1 < 0, cost: 1 8: __init -> f1_0_main_Load : arg1'=arg1p9, arg2'=arg2p9, T, cost: 1 Propagated Equalities Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1p1, arg2'=arg2p1, (-arg2p1+arg2 == 0 /\ -1+x13-2*x14 == 0 /\ 1+x13 > 0 /\ -arg1p1+arg1 == 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ -1+x13-2*x14 == 0 /\ 1+x13 > 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 propagated equality arg2p1 = arg2 propagated equality arg1p1 = arg1 Propagated Equalities Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ -1+x13-2*x14 == 0 /\ 1+x13 > 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 propagated equality x13 = 1+2*x14 Simplified Guard Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 Eliminated Temporary Variables via Transitive Closure Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+x12 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 Removed Trivial Updates Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : (arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 Propagated Equalities Original rule: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (1+arg1p2 > 0 /\ -2*x19+x18 >= 0 /\ -2-2*x19+x18 < 0 /\ 1+x18 > 0 /\ -1-2*x19+x18 == 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (0 == 0 /\ 1+arg1p2 > 0 /\ 1 >= 0 /\ -1 < 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0), cost: 1 propagated equality x18 = 1+2*x19 Simplified Guard Original rule: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (0 == 0 /\ 1+arg1p2 > 0 /\ 1 >= 0 /\ -1 < 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0), cost: 1 Propagated Equalities Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1p3, arg2'=arg2p3, (1+x23 > 0 /\ x23-2*x24 == 0 /\ -arg2p3+arg2 == 0 /\ -arg1p3+arg1 == 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+x23 > 0 /\ x23-2*x24 == 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 propagated equality arg2p3 = arg2 propagated equality arg1p3 = arg1 Propagated Equalities Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+x23 > 0 /\ x23-2*x24 == 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 propagated equality x23 = 2*x24 Simplified Guard Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (0 == 0 /\ 1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 Eliminated Temporary Variables via Transitive Closure Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ 1+x22 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 Removed Trivial Updates Original rule: f1_0_main_Load -> f1_0_main_Load\' : arg1'=arg1, arg2'=arg2, (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load -> f1_0_main_Load\' : (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 Propagated Equalities Original rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=arg1p4, arg2'=arg2p4, (-2-2*x29+x28 < 0 /\ 1+x28 > 0 /\ -2*x29+x28 >= 0 /\ -2*x29+x28 == 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0 /\ -arg1p4-x27 == 0), cost: 1 New rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (0 == 0 /\ -2-2*x29+x28 < 0 /\ 1+x28 > 0 /\ -2*x29+x28 >= 0 /\ -2*x29+x28 == 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 propagated equality arg1p4 = -x27 Propagated Equalities Original rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (0 == 0 /\ -2-2*x29+x28 < 0 /\ 1+x28 > 0 /\ -2*x29+x28 >= 0 /\ -2*x29+x28 == 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (0 >= 0 /\ 0 == 0 /\ -2 < 0 /\ 1+2*x29 > 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 propagated equality x28 = 2*x29 Simplified Guard Original rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (0 >= 0 /\ 0 == 0 /\ -2 < 0 /\ 1+2*x29 > 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 New rule: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (1+2*x29 > 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 Propagated Equalities Original rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=arg1p5, arg2'=arg2p5, (-arg1p5 == 0 /\ -arg1 == 0), cost: 1 New rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, (0 == 0 /\ -arg1 == 0), cost: 1 propagated equality arg1p5 = 0 Simplified Guard Original rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, (0 == 0 /\ -arg1 == 0), cost: 1 New rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, -arg1 == 0, cost: 1 Propagated Equalities Original rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=arg1p6, arg2'=arg2p6, (-1-arg1p6+arg1 == 0 /\ arg1 > 0), cost: 1 New rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=-1+arg1, arg2'=arg2p6, (0 == 0 /\ arg1 > 0), cost: 1 propagated equality arg1p6 = -1+arg1 Simplified Guard Original rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=-1+arg1, arg2'=arg2p6, (0 == 0 /\ arg1 > 0), cost: 1 New rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=-1+arg1, arg2'=arg2p6, arg1 > 0, cost: 1 Propagated Equalities Original rule: f137_0_loop_GE -> f119_0_loop_LE : arg1'=arg1p7, arg2'=arg2p7, (-arg1p7 == 0 /\ -arg1 == 0), cost: 1 New rule: f137_0_loop_GE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p7, (0 == 0 /\ -arg1 == 0), cost: 1 propagated equality arg1p7 = 0 Simplified Guard Original rule: f137_0_loop_GE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p7, (0 == 0 /\ -arg1 == 0), cost: 1 New rule: f137_0_loop_GE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p7, -arg1 == 0, cost: 1 Propagated Equalities Original rule: f137_0_loop_GE -> f137_0_loop_GE : arg1'=arg1p8, arg2'=arg2p8, (1+arg1-arg1p8 == 0 /\ arg1 < 0), cost: 1 New rule: f137_0_loop_GE -> f137_0_loop_GE : arg1'=1+arg1, arg2'=arg2p8, (0 == 0 /\ arg1 < 0), cost: 1 propagated equality arg1p8 = 1+arg1 Simplified Guard Original rule: f137_0_loop_GE -> f137_0_loop_GE : arg1'=1+arg1, arg2'=arg2p8, (0 == 0 /\ arg1 < 0), cost: 1 New rule: f137_0_loop_GE -> f137_0_loop_GE : arg1'=1+arg1, arg2'=arg2p8, arg1 < 0, cost: 1 Step with 8 Trace 8[T] Blocked [{}, {}] Step with 9 Trace 8[T], 9[(arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0)] Blocked [{}, {}, {}] Step with 10 Trace 8[T], 9[(arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0)], 10[(1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0)] Blocked [{}, {}, {}, {}] Step with 13 Trace 8[T], 9[(arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0)], 10[(1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0)], 13[(-arg1 == 0)] Blocked [{}, {}, {}, {}, {}] Nonterm Start location: __init Program variables: arg1 arg2 9: f1_0_main_Load -> f1_0_main_Load\' : (arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0), cost: 1 11: f1_0_main_Load -> f1_0_main_Load\' : (1+2*x24 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 10: f1_0_main_Load\' -> f119_0_loop_LE : arg1'=arg1p2, arg2'=arg2p2, (1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0), cost: 1 12: f1_0_main_Load\' -> f137_0_loop_GE : arg1'=-x27, arg2'=arg2p4, (1+2*x29 > 0 /\ 1+x27 > 0 /\ arg1 > 0 /\ -1+arg2 > 0), cost: 1 13: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, -arg1 == 0, cost: 1 14: f119_0_loop_LE -> f119_0_loop_LE : arg1'=-1+arg1, arg2'=arg2p6, arg1 > 0, cost: 1 17: f119_0_loop_LE -> LoAT_sink : (-1+n >= 0 /\ -arg1 >= 0 /\ arg1 >= 0), cost: NONTERM 15: f137_0_loop_GE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p7, -arg1 == 0, cost: 1 16: f137_0_loop_GE -> f137_0_loop_GE : arg1'=1+arg1, arg2'=arg2p8, arg1 < 0, cost: 1 8: __init -> f1_0_main_Load : arg1'=arg1p9, arg2'=arg2p9, T, cost: 1 Certificate of Non-Termination Original rule: f119_0_loop_LE -> f119_0_loop_LE : arg1'=0, arg2'=arg2p5, (-arg1 == 0), cost: 1 New rule: f119_0_loop_LE -> LoAT_sink : (-1+n >= 0 /\ -arg1 >= 0 /\ arg1 >= 0), cost: NONTERM -arg1 >= 0 [0]: monotonic increase yields -arg1 >= 0 arg1 >= 0 [0]: monotonic increase yields arg1 >= 0 Replacement map: {-arg1 >= 0 -> -arg1 >= 0, arg1 >= 0 -> arg1 >= 0} Step with 17 Trace 8[T], 9[(arg1 > 0 /\ -1+arg2 > 0 /\ 2+2*x14 > 0)], 10[(1+arg1p2 > 0 /\ arg1 > 0 /\ 2+2*x19 > 0 /\ -1+arg2 > 0)], 17[(-1+n >= 0 /\ -arg1 >= 0 /\ arg1 >= 0)] Blocked [{}, {}, {}, {}, {17[T]}] Refute Counterexample [ arg1=1 arg2=2 ] 8 [ arg1=1 arg2=2 ] 9 [ arg1=0 arg2=0 ] 10 [ arg1=arg1 arg2=arg2 ] 17 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b