4.44/2.06 NO 4.69/2.07 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 4.69/2.07 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.69/2.07 4.69/2.07 4.69/2.07 termination of the given Bare JBC problem could be disproven: 4.69/2.07 4.69/2.07 (0) Bare JBC problem 4.69/2.07 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 4.69/2.07 (2) JBC problem 4.69/2.07 (3) JBCNonTerm [COMPLETE, 236 ms] 4.69/2.07 (4) NO 4.69/2.07 4.69/2.07 4.69/2.07 ---------------------------------------- 4.69/2.07 4.69/2.07 (0) 4.69/2.07 Obligation: 4.69/2.07 need to prove termination of the following program: 4.69/2.07 package simple.complInterv3; 4.69/2.07 4.69/2.07 public class ComplInterv3 { 4.69/2.07 4.69/2.07 public static void loop(int i) { 4.69/2.07 while (i != 0) { 4.69/2.07 if (i > 5) { 4.69/2.07 i++; 4.69/2.07 } else { 4.69/2.07 if (i < -5) { 4.69/2.07 i--; 4.69/2.07 } else { 4.69/2.07 i = 0; 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 4.69/2.07 4.69/2.07 package simple.complInterv3; 4.69/2.07 4.69/2.07 public class Main { 4.69/2.07 4.69/2.07 /** 4.69/2.07 * @param args 4.69/2.07 */ 4.69/2.07 public static void main(String[] args) { 4.69/2.07 ComplInterv3.loop(args.length); 4.69/2.07 4.69/2.07 } 4.69/2.07 4.69/2.07 } 4.69/2.07 4.69/2.07 4.69/2.07 4.69/2.07 ---------------------------------------- 4.69/2.07 4.69/2.07 (1) BareJBCToJBCProof (EQUIVALENT) 4.69/2.07 initialized classpath 4.69/2.07 ---------------------------------------- 4.69/2.07 4.69/2.07 (2) 4.69/2.07 Obligation: 4.69/2.07 need to prove termination of the following program: 4.69/2.07 package simple.complInterv3; 4.69/2.07 4.69/2.07 public class ComplInterv3 { 4.69/2.07 4.69/2.07 public static void loop(int i) { 4.69/2.07 while (i != 0) { 4.69/2.07 if (i > 5) { 4.69/2.07 i++; 4.69/2.07 } else { 4.69/2.07 if (i < -5) { 4.69/2.07 i--; 4.69/2.07 } else { 4.69/2.07 i = 0; 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 } 4.69/2.07 4.69/2.07 4.69/2.07 package simple.complInterv3; 4.69/2.07 4.69/2.07 public class Main { 4.69/2.07 4.69/2.07 /** 4.69/2.07 * @param args 4.69/2.07 */ 4.69/2.07 public static void main(String[] args) { 4.69/2.07 ComplInterv3.loop(args.length); 4.69/2.07 4.69/2.07 } 4.69/2.07 4.69/2.07 } 4.69/2.07 4.69/2.07 4.69/2.07 4.69/2.07 ---------------------------------------- 4.69/2.07 4.69/2.07 (3) JBCNonTerm (COMPLETE) 4.69/2.07 Reached a loop using the following run: 4.69/2.07 4.69/2.07 0: 4.69/2.07 a10([java.lang.String...]): length 6 -->{java.lang.Object...} 4.69/2.07 YES: (JL1) 4.69/2.07 1: 4.69/2.07 a10([java.lang.String...]): length 6 -->{java.lang.Object...} 4.69/2.07 YES: (JL1) 4.69/2.07 2: 4.69/2.07 YES: (JL1) 4.69/2.07 3: 4.69/2.07 4.69/2.07 YES: (JL1) 4.69/2.07 Start state of loop: 4.69/2.07 4.69/2.07 4.69/2.07 [a4(lv_0_0)] 4.69/2.07 4.69/2.07 i15: [0,+inf)(l1) 4.69/2.07 i16: [0,+inf)(l1) 4.69/2.07 a4([java.lang.String...]): length i16 -->{java.lang.Object...} 4.69/2.07 YES: (JL1) 4.69/2.07 4.69/2.07 4.69/2.07 In the loop head node, references [i15] were interesting. 4.69/2.07 4.69/2.07 All methods calls in the loop body are side-effect free, hence they can be ignored. 4.69/2.07 4.69/2.07 By SMT, we could prove 4.69/2.07 4.69/2.07 ((0 <= initial_i15 and 0 <= initial_i16) and (((path1_i15 = path1_i22 and path1_i22 = path1_i26 and path1_i28 = (path1_i26 + 1) and path1_i28 = res_i15 and path1_i15 = initial_i15) and (path1_i22 > 0 and T and 5 = 5 and path1_i26 > 5)) and ((res1_i15 = res1_i22 and res1_i22 = res1_i26 and res1_i28 = (res1_i26 + 1) and res_i15 = res1_i15) and !(res1_i22 > 0 and T and 5 = 5 and res1_i26 > 5)))) 4.69/2.07 4.69/2.07 to be UNSAT. Consequently, the loop will not terminate. 4.69/2.07 ---------------------------------------- 4.69/2.07 4.69/2.07 (4) 4.69/2.07 NO 4.69/2.09 EOF