5.60/2.38 NO 5.60/2.41 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 5.60/2.41 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 5.60/2.41 5.60/2.41 5.60/2.41 termination of the given Bare JBC problem could be disproven: 5.60/2.41 5.60/2.41 (0) Bare JBC problem 5.60/2.41 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 5.60/2.41 (2) JBC problem 5.60/2.41 (3) JBCToGraph [EQUIVALENT, 338 ms] 5.60/2.41 (4) JBCTerminationGraph 5.60/2.41 (5) JBCNonTerm [COMPLETE, 108 ms] 5.60/2.41 (6) NO 5.60/2.41 5.60/2.41 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (0) 5.60/2.41 Obligation: 5.60/2.41 need to prove termination of the following program: 5.60/2.41 public class NO_11 { 5.60/2.41 public static void main(String args[]) { 5.60/2.41 int j = 100; 5.60/2.41 for (int i = 0; i < j; i++) { 5.60/2.41 if (i < j - 2) continue; 5.60/2.41 if (i > j - 2) break; 5.60/2.41 j++; 5.60/2.41 } 5.60/2.41 } 5.60/2.41 } 5.60/2.41 5.60/2.41 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (1) BareJBCToJBCProof (EQUIVALENT) 5.60/2.41 initialized classpath 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (2) 5.60/2.41 Obligation: 5.60/2.41 need to prove termination of the following program: 5.60/2.41 public class NO_11 { 5.60/2.41 public static void main(String args[]) { 5.60/2.41 int j = 100; 5.60/2.41 for (int i = 0; i < j; i++) { 5.60/2.41 if (i < j - 2) continue; 5.60/2.41 if (i > j - 2) break; 5.60/2.41 j++; 5.60/2.41 } 5.60/2.41 } 5.60/2.41 } 5.60/2.41 5.60/2.41 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (3) JBCToGraph (EQUIVALENT) 5.60/2.41 Constructed TerminationGraph. 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (4) 5.60/2.41 Obligation: 5.60/2.41 Termination Graph based on JBC Program: 5.60/2.41 NO_11.main([Ljava/lang/String;)V: Graph of 41 nodes with 1 SCC. 5.60/2.41 5.60/2.41 5.60/2.41 5.60/2.41 5.60/2.41 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (5) JBCNonTerm (COMPLETE) 5.60/2.41 Reached a loop using the following run: 5.60/2.41 5.60/2.41 0: 5.60/2.41 YES: (JL1) 5.60/2.41 1: 5.60/2.41 YES: (JL1) 5.60/2.41 2: 5.60/2.41 YES: (JL1) 5.60/2.41 3: 5.60/2.41 YES: (JL1) 5.60/2.41 4: 5.60/2.41 YES: (JL1) 5.60/2.41 Start state of loop: 5.60/2.41 5.60/2.41 [o36(lv_0_0)] 5.60/2.41 5.60/2.41 o36([java.lang.String...]): Object() -->{java.lang.Object...} 5.60/2.41 i35: [100,+inf)(l3) 5.60/2.41 i36: # 5.60/2.41 YES: (JL1) 5.60/2.41 5.60/2.41 5.60/2.41 In the loop head node, references [i36, i35] were interesting. 5.60/2.41 5.60/2.41 All methods calls in the loop body are side-effect free, hence they can be ignored. 5.60/2.41 5.60/2.41 By SMT, we could prove 5.60/2.41 5.60/2.41 (100 <= initial_i35 and ((((path1_i39 = (path1_i35 - 2) and path1_i40 = (path1_i36 + 1) and path1_i35 = res_i35 and path1_i40 = res_i36 and path1_i35 = initial_i35 and path1_i36 = initial_i36) and (path1_i36 < path1_i35 and path1_i36 < path1_i35 and path1_i36 < path1_i39 and path1_i36 < path1_i39)) or ((path2_i39 = (path2_i35 - 2) and path2_i42 = (path2_i35 - 2) and path2_i43 = (path2_i35 + 1) and path2_i44 = (path2_i36 + 1) and path2_i43 = res_i35 and path2_i44 = res_i36 and path2_i35 = initial_i35 and path2_i36 = initial_i36) and (path2_i36 < path2_i35 and path2_i36 < path2_i35 and path2_i36 >= path2_i39 and path2_i36 >= path2_i39 and path2_i36 <= path2_i42 and path2_i36 <= path2_i42))) and (((res1_i39 = (res1_i35 - 2) and res1_i40 = (res1_i36 + 1) and res_i35 = res1_i35 and res_i36 = res1_i36) and !(res1_i36 < res1_i35 and res1_i36 < res1_i35 and res1_i36 < res1_i39 and res1_i36 < res1_i39)) and ((res2_i39 = (res2_i35 - 2) and res2_i42 = (res2_i35 - 2) and res2_i43 = (res2_i35 + 1) and res2_i44 = (res2_i36 + 1) and res_i35 = res2_i35 and res_i36 = res2_i36) and !(res2_i36 < res2_i35 and res2_i36 < res2_i35 and res2_i36 >= res2_i39 and res2_i36 >= res2_i39 and res2_i36 <= res2_i42 and res2_i36 <= res2_i42))))) 5.60/2.41 5.60/2.41 to be UNSAT. Consequently, the loop will not terminate. 5.60/2.41 ---------------------------------------- 5.60/2.41 5.60/2.41 (6) 5.60/2.41 NO 5.91/2.43 EOF