4.43/1.99 YES 4.43/2.00 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 4.43/2.00 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.43/2.00 4.43/2.00 4.43/2.00 termination of the given Bare JBC problem could be proven: 4.43/2.00 4.43/2.00 (0) Bare JBC problem 4.43/2.00 (1) BareJBCToJBCProof [EQUIVALENT, 95 ms] 4.43/2.00 (2) JBC problem 4.43/2.00 (3) JBCToGraph [EQUIVALENT, 278 ms] 4.43/2.00 (4) JBCTerminationGraph 4.43/2.00 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 4.43/2.00 (6) TRUE 4.43/2.00 4.43/2.00 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (0) 4.43/2.00 Obligation: 4.43/2.00 need to prove termination of the following program: 4.43/2.00 /** 4.43/2.00 * A loop continously throwing and catching an exception. 4.43/2.00 * The exception is thrown before the statement that makes the loop 4.43/2.00 * progress, but the exception body contains another statement making the 4.43/2.00 * loop progress. 4.43/2.00 * 4.43/2.00 * All calls terminate. 4.43/2.00 * 4.43/2.00 * Julia + BinTerm prove that all calls terminate. 4.43/2.00 * 4.43/2.00 * @author Fausto Spoto 4.43/2.00 */ 4.43/2.00 4.43/2.00 public class Exc5 { 4.43/2.00 public static void main(String[] args) { 4.43/2.00 int i = 0; 4.43/2.00 4.43/2.00 while (i < 20) { 4.43/2.00 i--; 4.43/2.00 4.43/2.00 try { 4.43/2.00 if (i > 10) throw null; 4.43/2.00 i += 2; 4.43/2.00 } 4.43/2.00 catch (NullPointerException e) { 4.43/2.00 i += 2; 4.43/2.00 } 4.43/2.00 } 4.43/2.00 } 4.43/2.00 } 4.43/2.00 4.43/2.00 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (1) BareJBCToJBCProof (EQUIVALENT) 4.43/2.00 initialized classpath 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (2) 4.43/2.00 Obligation: 4.43/2.00 need to prove termination of the following program: 4.43/2.00 /** 4.43/2.00 * A loop continously throwing and catching an exception. 4.43/2.00 * The exception is thrown before the statement that makes the loop 4.43/2.00 * progress, but the exception body contains another statement making the 4.43/2.00 * loop progress. 4.43/2.00 * 4.43/2.00 * All calls terminate. 4.43/2.00 * 4.43/2.00 * Julia + BinTerm prove that all calls terminate. 4.43/2.00 * 4.43/2.00 * @author Fausto Spoto 4.43/2.00 */ 4.43/2.00 4.43/2.00 public class Exc5 { 4.43/2.00 public static void main(String[] args) { 4.43/2.00 int i = 0; 4.43/2.00 4.43/2.00 while (i < 20) { 4.43/2.00 i--; 4.43/2.00 4.43/2.00 try { 4.43/2.00 if (i > 10) throw null; 4.43/2.00 i += 2; 4.43/2.00 } 4.43/2.00 catch (NullPointerException e) { 4.43/2.00 i += 2; 4.43/2.00 } 4.43/2.00 } 4.43/2.00 } 4.43/2.00 } 4.43/2.00 4.43/2.00 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (3) JBCToGraph (EQUIVALENT) 4.43/2.00 Constructed TerminationGraph. 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (4) 4.43/2.00 Obligation: 4.43/2.00 Termination Graph based on JBC Program: 4.43/2.00 Exc5.main([Ljava/lang/String;)V: Graph of 371 nodes with 0 SCCs. 4.43/2.00 4.43/2.00 4.43/2.00 4.43/2.00 4.43/2.00 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (5) TerminationGraphToSCCProof (SOUND) 4.43/2.00 Proven termination by absence of SCCs 4.43/2.00 ---------------------------------------- 4.43/2.00 4.43/2.00 (6) 4.43/2.00 TRUE 4.47/2.05 EOF