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