unknown Initial ITS Start location: __init Program variables: arg1 arg2 arg3 0: f1_0_main_ConstantStackPush -> f108_0_add_GT : arg1'=arg1p1, arg2'=arg2p1, arg3'=arg3p1, (-arg2p1 == 0 /\ -arg1p1 == 0 /\ -arg3p1 == 0), cost: 1 1: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1p2, arg2'=arg2p2, arg3'=arg3p2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1-arg3p2+arg2 == 0 /\ 1-arg2p2+arg2 == 0 /\ arg1-arg1p2+arg2 == 0 /\ 1+arg1 > 0), cost: 1 2: f108_0_add_GT -> f208_0_add_GT : arg1'=arg1p3, arg2'=arg2p3, arg3'=arg3p3, (-arg3+arg2 == 0 /\ -arg2p3 == 0 /\ -1000+arg2 > 0 /\ -arg1p3 == 0 /\ -arg3p3 == 0), cost: 1 3: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1p4, arg2'=arg2p4, arg3'=arg3p4, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ arg1-arg1p4+arg2 == 0 /\ 2-arg2p4+arg2 == 0 /\ 2-arg3p4+arg2 == 0 /\ 1+arg1 > 0), cost: 1 4: f208_0_add_GT -> f311_0_add_GT : arg1'=arg1p5, arg2'=arg2p5, arg3'=arg3p5, (-arg3+arg2 == 0 /\ -arg1p5 == 0 /\ -1000+arg2 > 0 /\ -arg3p5 == 0 /\ -arg2p5 == 0), cost: 1 5: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1p6, arg2'=arg2p6, arg3'=arg3p6, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 3-arg2p6+arg2 == 0 /\ -arg1p6+arg1+arg2 == 0 /\ 3-arg3p6+arg2 == 0 /\ 1+arg1 > 0), cost: 1 6: __init -> f1_0_main_ConstantStackPush : arg1'=arg1p7, arg2'=arg2p7, arg3'=arg3p7, T, cost: 1 Chained Linear Paths Start location: __init Program variables: arg1 arg2 arg3 1: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1p2, arg2'=arg2p2, arg3'=arg3p2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1-arg3p2+arg2 == 0 /\ 1-arg2p2+arg2 == 0 /\ arg1-arg1p2+arg2 == 0 /\ 1+arg1 > 0), cost: 1 2: f108_0_add_GT -> f208_0_add_GT : arg1'=arg1p3, arg2'=arg2p3, arg3'=arg3p3, (-arg3+arg2 == 0 /\ -arg2p3 == 0 /\ -1000+arg2 > 0 /\ -arg1p3 == 0 /\ -arg3p3 == 0), cost: 1 3: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1p4, arg2'=arg2p4, arg3'=arg3p4, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ arg1-arg1p4+arg2 == 0 /\ 2-arg2p4+arg2 == 0 /\ 2-arg3p4+arg2 == 0 /\ 1+arg1 > 0), cost: 1 4: f208_0_add_GT -> f311_0_add_GT : arg1'=arg1p5, arg2'=arg2p5, arg3'=arg3p5, (-arg3+arg2 == 0 /\ -arg1p5 == 0 /\ -1000+arg2 > 0 /\ -arg3p5 == 0 /\ -arg2p5 == 0), cost: 1 5: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1p6, arg2'=arg2p6, arg3'=arg3p6, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 3-arg2p6+arg2 == 0 /\ -arg1p6+arg1+arg2 == 0 /\ 3-arg3p6+arg2 == 0 /\ 1+arg1 > 0), cost: 1 7: __init -> f108_0_add_GT : arg1'=arg1p1, arg2'=arg2p1, arg3'=arg3p1, (-arg2p1 == 0 /\ -arg1p1 == 0 /\ -arg3p1 == 0), cost: 1 Eliminating location f1_0_main_ConstantStackPush by chaining: Applied chaining First rule: __init -> f1_0_main_ConstantStackPush : arg1'=arg1p7, arg2'=arg2p7, arg3'=arg3p7, T, cost: 1 Second rule: f1_0_main_ConstantStackPush -> f108_0_add_GT : arg1'=arg1p1, arg2'=arg2p1, arg3'=arg3p1, (-arg2p1 == 0 /\ -arg1p1 == 0 /\ -arg3p1 == 0), cost: 1 New rule: __init -> f108_0_add_GT : arg1'=arg1p1, arg2'=arg2p1, arg3'=arg3p1, (-arg2p1 == 0 /\ -arg1p1 == 0 /\ -arg3p1 == 0), cost: 1 Applied deletion Removed the following rules: 0 6 Simplified Transitions Start location: __init Program variables: arg1 arg2 arg3 8: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 9: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 10: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 11: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 12: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 13: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, T, cost: 1 Propagated Equalities Original rule: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1p2, arg2'=arg2p2, arg3'=arg3p2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1-arg3p2+arg2 == 0 /\ 1-arg2p2+arg2 == 0 /\ arg1-arg1p2+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 propagated equality arg3p2 = 1+arg2 propagated equality arg2p2 = 1+arg2 propagated equality arg1p2 = arg1+arg2 Simplified Guard Original rule: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 Propagated Equalities Original rule: f108_0_add_GT -> f208_0_add_GT : arg1'=arg1p3, arg2'=arg2p3, arg3'=arg3p3, (-arg3+arg2 == 0 /\ -arg2p3 == 0 /\ -1000+arg2 > 0 /\ -arg1p3 == 0 /\ -arg3p3 == 0), cost: 1 New rule: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (0 == 0 /\ -arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 propagated equality arg2p3 = 0 propagated equality arg1p3 = 0 propagated equality arg3p3 = 0 Simplified Guard Original rule: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (0 == 0 /\ -arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 New rule: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 Propagated Equalities Original rule: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1p4, arg2'=arg2p4, arg3'=arg3p4, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ arg1-arg1p4+arg2 == 0 /\ 2-arg2p4+arg2 == 0 /\ 2-arg3p4+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 propagated equality arg1p4 = arg1+arg2 propagated equality arg2p4 = 2+arg2 propagated equality arg3p4 = 2+arg2 Simplified Guard Original rule: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 Propagated Equalities Original rule: f208_0_add_GT -> f311_0_add_GT : arg1'=arg1p5, arg2'=arg2p5, arg3'=arg3p5, (-arg3+arg2 == 0 /\ -arg1p5 == 0 /\ -1000+arg2 > 0 /\ -arg3p5 == 0 /\ -arg2p5 == 0), cost: 1 New rule: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (0 == 0 /\ -arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 propagated equality arg1p5 = 0 propagated equality arg3p5 = 0 propagated equality arg2p5 = 0 Simplified Guard Original rule: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (0 == 0 /\ -arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 New rule: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 Propagated Equalities Original rule: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1p6, arg2'=arg2p6, arg3'=arg3p6, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 3-arg2p6+arg2 == 0 /\ -arg1p6+arg1+arg2 == 0 /\ 3-arg3p6+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 propagated equality arg2p6 = 3+arg2 propagated equality arg1p6 = arg1+arg2 propagated equality arg3p6 = 3+arg2 Simplified Guard Original rule: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (0 == 0 /\ 1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 Propagated Equalities Original rule: __init -> f108_0_add_GT : arg1'=arg1p1, arg2'=arg2p1, arg3'=arg3p1, (-arg2p1 == 0 /\ -arg1p1 == 0 /\ -arg3p1 == 0), cost: 1 New rule: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, 0 == 0, cost: 1 propagated equality arg2p1 = 0 propagated equality arg1p1 = 0 propagated equality arg3p1 = 0 Simplified Guard Original rule: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, 0 == 0, cost: 1 New rule: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, T, cost: 1 Step with 13 Trace 13[T] Blocked [{}, {}] Step with 8 Trace 13[T], 8[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {}] Accelerate Start location: __init Program variables: arg1 arg2 arg3 8: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 9: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 14: f108_0_add_GT -> f108_0_add_GT : arg1'=1/2*n^2-1/2*n+arg1+n*arg2, arg2'=n+arg2, arg3'=n+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0), cost: 1 10: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 11: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 12: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 13: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, T, cost: 1 Loop Acceleration Original rule: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f108_0_add_GT -> f108_0_add_GT : arg1'=1/2*n^2-1/2*n+arg1+n*arg2, arg2'=n+arg2, arg3'=n+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0), cost: 1 1+arg2 > 0 [0]: monotonic increase yields 1+arg2 > 0 -arg3+arg2 >= 0 [0]: monotonic increase yields -arg3+arg2 >= 0 arg3-arg2 >= 0 [0]: monotonic increase yields arg3-arg2 >= 0 1001-arg2 > 0 [0]: montonic decrease yields 1002-n-arg2 > 0 1001-arg2 > 0 [1]: eventual increase yields (1 <= 0 /\ 1001-arg2 > 0) 1+arg1 > 0 [0]: monotonic increase yields 1+arg1 > 0, dependencies: 1+arg2 > 0 Replacement map: {1+arg2 > 0 -> 1+arg2 > 0, -arg3+arg2 >= 0 -> -arg3+arg2 >= 0, arg3-arg2 >= 0 -> arg3-arg2 >= 0, 1001-arg2 > 0 -> 1002-n-arg2 > 0, 1+arg1 > 0 -> 1+arg1 > 0} Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}] Step with 9 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {}] Step with 10 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 10[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {}] Accelerate Start location: __init Program variables: arg1 arg2 arg3 8: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 9: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 14: f108_0_add_GT -> f108_0_add_GT : arg1'=1/2*n^2-1/2*n+arg1+n*arg2, arg2'=n+arg2, arg3'=n+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0), cost: 1 10: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 11: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 15: f208_0_add_GT -> f208_0_add_GT : arg1'=n2*arg2-n2+n2^2+arg1, arg2'=2*n2+arg2, arg3'=2*n2+arg2, (1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0), cost: 1 12: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 13: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, T, cost: 1 Loop Acceleration Original rule: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f208_0_add_GT -> f208_0_add_GT : arg1'=n2*arg2-n2+n2^2+arg1, arg2'=2*n2+arg2, arg3'=2*n2+arg2, (1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0), cost: 1 1+arg2 > 0 [0]: monotonic increase yields 1+arg2 > 0 -arg3+arg2 >= 0 [0]: monotonic increase yields -arg3+arg2 >= 0 arg3-arg2 >= 0 [0]: monotonic increase yields arg3-arg2 >= 0 1001-arg2 > 0 [0]: montonic decrease yields 1003-2*n2-arg2 > 0 1001-arg2 > 0 [1]: eventual increase yields (2 <= 0 /\ 1001-arg2 > 0) 1+arg1 > 0 [0]: monotonic increase yields 1+arg1 > 0, dependencies: 1+arg2 > 0 Replacement map: {1+arg2 > 0 -> 1+arg2 > 0, -arg3+arg2 >= 0 -> -arg3+arg2 >= 0, arg3-arg2 >= 0 -> arg3-arg2 >= 0, 1001-arg2 > 0 -> 1003-2*n2-arg2 > 0, 1+arg1 > 0 -> 1+arg1 > 0} Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}] Step with 11 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {}] Step with 12 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 12[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {}, {}] Accelerate Start location: __init Program variables: arg1 arg2 arg3 8: f108_0_add_GT -> f108_0_add_GT : arg1'=arg1+arg2, arg2'=1+arg2, arg3'=1+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 9: f108_0_add_GT -> f208_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 14: f108_0_add_GT -> f108_0_add_GT : arg1'=1/2*n^2-1/2*n+arg1+n*arg2, arg2'=n+arg2, arg3'=n+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0), cost: 1 10: f208_0_add_GT -> f208_0_add_GT : arg1'=arg1+arg2, arg2'=2+arg2, arg3'=2+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 11: f208_0_add_GT -> f311_0_add_GT : arg1'=0, arg2'=0, arg3'=0, (-arg3+arg2 == 0 /\ -1000+arg2 > 0), cost: 1 15: f208_0_add_GT -> f208_0_add_GT : arg1'=n2*arg2-n2+n2^2+arg1, arg2'=2*n2+arg2, arg3'=2*n2+arg2, (1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0), cost: 1 12: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 16: f311_0_add_GT -> f311_0_add_GT : arg1'=n3*arg2+3/2*n3^2+arg1-3/2*n3, arg2'=3*n3+arg2, arg3'=3*n3+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ 1004-3*n3-arg2 > 0 /\ -1+n3 >= 0 /\ 1+arg1 > 0), cost: 1 13: __init -> f108_0_add_GT : arg1'=0, arg2'=0, arg3'=0, T, cost: 1 Loop Acceleration Original rule: f311_0_add_GT -> f311_0_add_GT : arg1'=arg1+arg2, arg2'=3+arg2, arg3'=3+arg2, (1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0), cost: 1 New rule: f311_0_add_GT -> f311_0_add_GT : arg1'=n3*arg2+3/2*n3^2+arg1-3/2*n3, arg2'=3*n3+arg2, arg3'=3*n3+arg2, (1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ 1004-3*n3-arg2 > 0 /\ -1+n3 >= 0 /\ 1+arg1 > 0), cost: 1 1+arg2 > 0 [0]: monotonic increase yields 1+arg2 > 0 -arg3+arg2 >= 0 [0]: monotonic increase yields -arg3+arg2 >= 0 arg3-arg2 >= 0 [0]: monotonic increase yields arg3-arg2 >= 0 1001-arg2 > 0 [0]: montonic decrease yields 1004-3*n3-arg2 > 0 1001-arg2 > 0 [1]: eventual increase yields (3 <= 0 /\ 1001-arg2 > 0) 1+arg1 > 0 [0]: monotonic increase yields 1+arg1 > 0, dependencies: 1+arg2 > 0 Replacement map: {1+arg2 > 0 -> 1+arg2 > 0, -arg3+arg2 >= 0 -> -arg3+arg2 >= 0, arg3-arg2 >= 0 -> arg3-arg2 >= 0, 1001-arg2 > 0 -> 1004-3*n3-arg2 > 0, 1+arg1 > 0 -> 1+arg1 > 0} Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 16[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ 1004-3*n3-arg2 > 0 /\ -1+n3 >= 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {}, {12[T], 16[T]}] Backtrack Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {16[T]}] Step with 12 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 12[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {16[T]}, {}] Covered Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)], 11[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 15[T]}, {12[T], 16[T]}] Backtrack Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 15[(1+arg2 > 0 /\ 1003-2*n2-arg2 > 0 /\ -arg3+arg2 >= 0 /\ arg3-arg2 >= 0 /\ -1+n2 >= 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T]}, {10[T], 11[T], 15[T]}] Backtrack Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T], 15[T]}] Step with 10 Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)], 10[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {11[T], 15[T]}, {}] Covered Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)], 9[(-arg3+arg2 == 0 /\ -1000+arg2 > 0)] Blocked [{}, {9[T]}, {8[T], 14[T]}, {10[T], 11[T], 15[T]}] Backtrack Trace 13[T], 14[(1+arg2 > 0 /\ -arg3+arg2 >= 0 /\ 1002-n-arg2 > 0 /\ arg3-arg2 >= 0 /\ -1+n >= 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T]}, {8[T], 9[T], 14[T]}] Backtrack Trace 13[T] Blocked [{}, {9[T], 14[T]}] Step with 8 Trace 13[T], 8[(1+arg2 > 0 /\ -1001+arg2 < 0 /\ -arg3+arg2 == 0 /\ 1+arg1 > 0)] Blocked [{}, {9[T], 14[T]}, {}] Covered Trace 13[T] Blocked [{}, {8[T], 9[T], 14[T]}] Backtrack Trace Blocked [{13[T]}] Accept unknown Build SHA: a05f16bf13df659c382799650051f91bf6828c7b