/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- NO proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be disproven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCNonTerm [COMPLETE, 745 ms] (4) NO ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class AlternDivWidening { public static void loop(int i, int w) { if (i != 0) { if (i < -w) loop(-1 * (i - 1), w + 1); else { if (i > w) loop(-1 * (i + 1), w + 1); else loop(0, w + 1); } } } public static void main(String args[]) { loop(args.length, 1); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class AlternDivWidening { public static void loop(int i, int w) { if (i != 0) { if (i < -w) loop(-1 * (i - 1), w + 1); else { if (i > w) loop(-1 * (i + 1), w + 1); else loop(0, w + 1); } } } public static void main(String args[]) { loop(args.length, 1); } } ---------------------------------------- (3) JBCNonTerm (COMPLETE) Reached a loop using the following run: 0: a2([java.lang.String...]): length 2 -->{java.lang.Object...} YES: (JL1) 1: a2([java.lang.String...]): length 2 -->{java.lang.Object...} YES: (JL1) 2: YES: (JL1) 3: YES: (JL1) 4: YES: (JL1) Start state of loop: [i433(lv_0_0), i434(lv_0_1)] i433: # i434: [1,+inf)(l4) i435: [1,+inf)(l4) YES: (JL1) In the loop head node, references [i433, i435, i434] were interesting. All methods calls in the loop body are side-effect free, hence they can be ignored. By SMT, we could prove ((1 <= initial_i434 and 1 <= initial_i435) and ((((path2_i433 = path2_i442 and path2_i444 = (-1 * path2_i435) and path2_i450 = (path2_i442 - 1) and path2_i451 = (-1 * path2_i450) and path2_i454 = (path2_i435 + 1) and path2_i451 = res_i433 and path2_i454 = res_i434 and path2_i454 = res_i435 and path2_i433 = initial_i433 and path2_i434 = initial_i434 and path2_i435 = initial_i435) and (path2_i442 != 0 and path2_i442 < path2_i444 and path2_i442 < path2_i444)) or ((path3_i433 = path3_i442 and path3_i444 = (-1 * path3_i435) and path3_i453 = (path3_i442 + 1) and path3_i455 = (-1 * path3_i453) and path3_i457 = (path3_i435 + 1) and path3_i455 = res_i433 and path3_i457 = res_i434 and path3_i457 = res_i435 and path3_i433 = initial_i433 and path3_i434 = initial_i434 and path3_i435 = initial_i435) and (path3_i442 != 0 and path3_i442 >= path3_i444 and path3_i442 >= path3_i444 and path3_i442 > path3_i435 and path3_i442 > path3_i435)) or ((path2_i433 = path2_i442 and path2_i444 = (-1 * path2_i435) and path2_i450 = (path2_i442 - 1) and path2_i451 = (-1 * path2_i450) and path2_i454 = (path2_i435 + 1) and path2_i451 = res_i433 and path2_i454 = res_i434 and path2_i454 = res_i435 and path2_i433 = initial_i433 and path2_i434 = initial_i434 and path2_i435 = initial_i435) and (path2_i442 < path2_i444 and path2_i442 < path2_i444 and path2_i442 < 0)) or ((path2_i433 = path2_i442 and path2_i444 = (-1 * path2_i435) and path2_i450 = (path2_i442 - 1) and path2_i451 = (-1 * path2_i450) and path2_i454 = (path2_i435 + 1) and path2_i451 = res_i433 and path2_i454 = res_i434 and path2_i454 = res_i435 and path2_i433 = initial_i433 and path2_i434 = initial_i434 and path2_i435 = initial_i435) and (path2_i442 < path2_i444 and path2_i442 < path2_i444 and path2_i442 > 0))) and (((res2_i433 = res2_i442 and res2_i444 = (-1 * res2_i435) and res2_i450 = (res2_i442 - 1) and res2_i451 = (-1 * res2_i450) and res2_i454 = (res2_i435 + 1) and res_i433 = res2_i433 and res_i434 = res2_i434 and res_i435 = res2_i435) and !(res2_i442 != 0 and res2_i442 < res2_i444 and res2_i442 < res2_i444)) and ((res3_i433 = res3_i442 and res3_i444 = (-1 * res3_i435) and res3_i453 = (res3_i442 + 1) and res3_i455 = (-1 * res3_i453) and res3_i457 = (res3_i435 + 1) and res_i433 = res3_i433 and res_i434 = res3_i434 and res_i435 = res3_i435) and !(res3_i442 != 0 and res3_i442 >= res3_i444 and res3_i442 >= res3_i444 and res3_i442 > res3_i435 and res3_i442 > res3_i435)) and ((res2_i433 = res2_i442 and res2_i444 = (-1 * res2_i435) and res2_i450 = (res2_i442 - 1) and res2_i451 = (-1 * res2_i450) and res2_i454 = (res2_i435 + 1) and res_i433 = res2_i433 and res_i434 = res2_i434 and res_i435 = res2_i435) and !(res2_i442 < res2_i444 and res2_i442 < res2_i444 and res2_i442 < 0)) and ((res2_i433 = res2_i442 and res2_i444 = (-1 * res2_i435) and res2_i450 = (res2_i442 - 1) and res2_i451 = (-1 * res2_i450) and res2_i454 = (res2_i435 + 1) and res_i433 = res2_i433 and res_i434 = res2_i434 and res_i435 = res2_i435) and !(res2_i442 < res2_i444 and res2_i442 < res2_i444 and res2_i442 > 0))))) to be UNSAT. Consequently, the loop will not terminate. ---------------------------------------- (4) NO