(0) Obligation:

JBC Problem based on JBC Program:
/**
* A loop continously throwing and catching an exception.
* The exception is thrown before the statement that makes the loop
* progress, but the exception body contains another statement making the
* loop progress.
*
* All calls terminate.
*
* Julia + BinTerm prove that all calls terminate.
*
* @author <A HREF="mailto:fausto.spoto@univr.it">Fausto Spoto</A>
*/

public class Exc5 {
public static void main(String[] args) {
int i = 0;

while (i < 20) {
i--;

try {
if (i > 10) throw null;
i += 2;
}
catch (NullPointerException e) {
i += 2;
}
}
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
Exc5.main([Ljava/lang/String;)V: Graph of 395 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Proven termination by absence of SCCs

(4) TRUE