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