5.60/2.38 NO
5.90/2.45 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar
5.90/2.45 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty
5.90/2.45
5.90/2.45
5.90/2.45 termination of the given Bare JBC problem could be disproven:
5.90/2.45
5.90/2.45 (0) Bare JBC problem
5.90/2.45 (1) BareJBCToJBCProof [EQUIVALENT, 94 ms]
5.90/2.45 (2) JBC problem
5.90/2.45 (3) JBCNonTerm [COMPLETE, 480 ms]
5.90/2.45 (4) NO
5.90/2.45
5.90/2.45
5.90/2.45 ----------------------------------------
5.90/2.45
5.90/2.45 (0)
5.90/2.45 Obligation:
5.90/2.45 need to prove termination of the following program:
5.90/2.45 /**
5.90/2.45 * A loop continously throwing and catching an exception.
5.90/2.45 * Since the exception is thrown before the statement that makes the loop
5.90/2.45 * progress, that loop diverges.
5.90/2.45 *
5.90/2.45 * The call to main() diverges.
5.90/2.45 *
5.90/2.45 * Julia + BinTerm cannot prove that the call to main() terminates.
5.90/2.45 *
5.90/2.45 * @author Fausto Spoto
5.90/2.45 */
5.90/2.45
5.90/2.45 public class Exc2 {
5.90/2.45 public static void main(String[] args) {
5.90/2.45 int i = 0;
5.90/2.45
5.90/2.45 while (i < 20) {
5.90/2.45 try {
5.90/2.45 if (i > 10) throw null;
5.90/2.45 i++;
5.90/2.45 }
5.90/2.45 catch (NullPointerException e) {
5.90/2.45 }
5.90/2.45 }
5.90/2.45 }
5.90/2.45 }
5.90/2.45
5.90/2.45
5.90/2.45 ----------------------------------------
5.90/2.45
5.90/2.45 (1) BareJBCToJBCProof (EQUIVALENT)
5.90/2.45 initialized classpath
5.90/2.45 ----------------------------------------
5.90/2.45
5.90/2.45 (2)
5.90/2.45 Obligation:
5.90/2.45 need to prove termination of the following program:
5.90/2.45 /**
5.90/2.45 * A loop continously throwing and catching an exception.
5.90/2.45 * Since the exception is thrown before the statement that makes the loop
5.90/2.45 * progress, that loop diverges.
5.90/2.45 *
5.90/2.45 * The call to main() diverges.
5.90/2.45 *
5.90/2.45 * Julia + BinTerm cannot prove that the call to main() terminates.
5.90/2.45 *
5.90/2.45 * @author Fausto Spoto
5.90/2.45 */
5.90/2.45
5.90/2.45 public class Exc2 {
5.90/2.45 public static void main(String[] args) {
5.90/2.45 int i = 0;
5.90/2.45
5.90/2.45 while (i < 20) {
5.90/2.45 try {
5.90/2.45 if (i > 10) throw null;
5.90/2.45 i++;
5.90/2.45 }
5.90/2.45 catch (NullPointerException e) {
5.90/2.45 }
5.90/2.45 }
5.90/2.45 }
5.90/2.45 }
5.90/2.45
5.90/2.45
5.90/2.45 ----------------------------------------
5.90/2.45
5.90/2.45 (3) JBCNonTerm (COMPLETE)
5.90/2.45 Constructed a run with a repetition. States 98 and 117 are repetitions (when considering only the interesting positions [lv_0_1]).
5.90/2.45
5.90/2.45 0:
5.90/2.45 YES: (JL1)
5.90/2.45 1:
5.90/2.45 YES: (JL1)
5.90/2.45 2:
5.90/2.45 YES: (JL1)
5.90/2.45 3:
5.90/2.45 YES: (JL1)
5.90/2.45 4:
5.90/2.45 YES: (JL1)
5.90/2.45 5:
5.90/2.45 YES: (JL1)
5.90/2.45 6:
5.90/2.45 YES: (JL1)
5.90/2.45 7:
5.90/2.45 YES: (JL1)
5.90/2.45 8:
5.90/2.45 YES: (JL1)
5.90/2.45 9:
5.90/2.45 YES: (JL1)
5.90/2.45 10:
5.90/2.45 YES: (JL1)
5.90/2.45 11:
5.90/2.45 YES: (JL1)
5.90/2.45 12:
5.90/2.45 YES: (JL1)
5.90/2.45 13:
5.90/2.45 YES: (JL1)
5.90/2.45 14:
5.90/2.45 YES: (JL1)
5.90/2.45 15:
5.90/2.45 YES: (JL1)
5.90/2.45 16:
5.90/2.45 YES: (JL1)
5.90/2.45 17:
5.90/2.45 YES: (JL1)
5.90/2.45 18:
5.90/2.45 YES: (JL1)
5.90/2.45 19:
5.90/2.45 YES: (JL1)
5.90/2.45 20:
5.90/2.45 YES: (JL1)
5.90/2.45 21:
5.90/2.45 YES: (JL1)
5.90/2.45 22:
5.90/2.45 YES: (JL1)
5.90/2.45 23:
5.90/2.45 YES: (JL1)
5.90/2.45 24:
5.90/2.45 YES: (JL1)
5.90/2.45 25:
5.90/2.45 YES: (JL1)
5.90/2.45 26:
5.90/2.45 YES: (JL1)
5.90/2.45 27:
5.90/2.45 YES: (JL1)
5.90/2.45 28:
5.90/2.45 YES: (JL1)
5.90/2.45 29:
5.90/2.45 YES: (JL1)
5.90/2.45 30:
5.90/2.45 YES: (JL1)
5.90/2.45 31:
5.90/2.45 YES: (JL1)
5.90/2.45 32:
5.90/2.45 YES: (JL1)
5.90/2.45 33:
5.90/2.45 YES: (JL1)
5.90/2.45 34:
5.90/2.45 YES: (JL1)
5.90/2.45 35:
5.90/2.45 YES: (JL1)
5.90/2.45 36:
5.90/2.45 YES: (JL1)
5.90/2.45 37:
5.90/2.45 YES: (JL1)
5.90/2.45 38:
5.90/2.45 YES: (JL1)
5.90/2.45 39:
5.90/2.45 YES: (JL1)
5.90/2.45 40:
5.90/2.45 YES: (JL1)
5.90/2.45 41:
5.90/2.45 YES: (JL1)
5.90/2.45 42:
5.90/2.45 YES: (JL1)
5.90/2.45 43:
5.90/2.45 YES: (JL1)
5.90/2.45 44:
5.90/2.45 YES: (JL1)
5.90/2.45 45:
5.90/2.45 YES: (JL1)
5.90/2.45 46:
5.90/2.45 YES: (JL1)
5.90/2.45 47:
5.90/2.45 YES: (JL1)
5.90/2.45 48:
5.90/2.45 YES: (JL1)
5.90/2.45 49:
5.90/2.45 YES: (JL1)
5.90/2.45 50:
5.90/2.45 YES: (JL1)
5.90/2.45 51:
5.90/2.45 YES: (JL1)
5.90/2.45 52:
5.90/2.45 YES: (JL1)
5.90/2.45 53:
5.90/2.45 YES: (JL1)
5.90/2.45 54:
5.90/2.45 YES: (JL1)
5.90/2.45 55:
5.90/2.45 YES: (JL1)
5.90/2.45 56:
5.90/2.45 YES: (JL1)
5.90/2.45 57:
5.90/2.45 YES: (JL1)
5.90/2.45 58:
5.90/2.45 YES: (JL1)
5.90/2.45 59:
5.90/2.45 YES: (JL1)
5.90/2.45 60:
5.90/2.45 YES: (JL1)
5.90/2.45 61:
5.90/2.45 YES: (JL1)
5.90/2.45 62:
5.90/2.45 YES: (JL1)
5.90/2.45 63:
5.90/2.45 YES: (JL1)
5.90/2.45 64:
5.90/2.45 YES: (JL1)
5.90/2.45 65:
5.90/2.45 YES: (JL1)
5.90/2.45 66:
5.90/2.45 YES: (JL1)
5.90/2.45 67:
5.90/2.45 YES: (JL1)
5.90/2.45 68:
5.90/2.45 YES: (JL1)
5.90/2.45 69:
5.90/2.45 YES: (JL1)
5.90/2.45 70:
5.90/2.45 YES: (JL1)
5.90/2.45 71:
5.90/2.45 YES: (JL1)
5.90/2.45 72:
5.90/2.45 YES: (JL1)
5.90/2.45 73:
5.90/2.45 YES: (JL1)
5.90/2.45 74:
5.90/2.45 YES: (JL1)
5.90/2.45 75:
5.90/2.45 YES: (JL1)
5.90/2.45 76:
5.90/2.45 YES: (JL1)
5.90/2.45 77:
5.90/2.45 YES: (JL1)
5.90/2.45 78:
5.90/2.45 YES: (JL1)
5.90/2.45 79:
5.90/2.45 YES: (JL1)
5.90/2.45 80:
5.90/2.45 YES: (JL1)
5.90/2.45 81:
5.90/2.45 YES: (JL1)
5.90/2.45 82:
5.90/2.45 YES: (JL1)
5.90/2.45 83:
5.90/2.45 YES: (JL1)
5.90/2.45 84:
5.90/2.45 YES: (JL1)
5.90/2.45 85:
5.90/2.45 YES: (JL1)
5.90/2.45 86:
5.90/2.45 YES: (JL1)
5.90/2.45 87:
5.90/2.45 YES: (JL1)
5.90/2.45 88:
5.90/2.45 YES: (JL1)
5.90/2.45 89:
5.90/2.45 YES: (JL1)
5.90/2.45 90:
5.90/2.45 YES: (JL1)
5.90/2.45 91:
5.90/2.45 YES: (JL1)
5.90/2.45 92:
5.90/2.45 YES: (JL1)
5.90/2.45 93:
5.90/2.45 YES: (JL1)
5.90/2.45 94:
5.90/2.45 YES: (JL1)
5.90/2.45 95:
5.90/2.45 YES: (JL1)
5.90/2.45 96:
5.90/2.45 YES: (JL1)
5.90/2.45 97:
5.90/2.45 YES: (JL1)
5.90/2.45 98:
5.90/2.45 YES: (JL1)
5.90/2.45 99:()V||0: load ADDR this||this: o208|| ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 100:()V||1: java.lang.RuntimeException.()V|| - ||o208>
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 101:()V||0: load ADDR this||this: o208|| ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 102:()V||1: java.lang.Exception.()V|| - ||o208>
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 103:()V||0: load ADDR this||this: o208|| ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 104:()V||1: java.lang.Throwable.()V|| - ||o208>
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 105:()V||0: load ADDR this||this: o208|| ->
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 106:()V||1: java.lang.Object.()V||this: o208||o208>
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 107:()V||4: load ADDR this||this: o208|| ->
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 108:()V||5: load ADDR this||this: o208||o208>
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 109:()V||6: Write to cause||this: o208||o208, o208>
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
5.90/2.45 YES: (JL1)
5.90/2.45 110:()V||9: load ADDR this||this: o208|| ->
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 111:()V||10: java.lang.Throwable.fillInStackTrace()Ljava/lang/Throwable;|| - ||o208>
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 112:()V||13: pop|| - ||o208>
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 113:()V||14: return|| - || ->
5.90/2.45 ()V||1: java.lang.Throwable.|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 114:()V||4: return|| - || ->
5.90/2.45 ()V||1: java.lang.Exception.|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 115:()V||4: return|| - || ->
5.90/2.45 ()V||1: java.lang.RuntimeException.|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 116:()V||4: return|| - || ->
5.90/2.45
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45 117:
5.90/2.45 o208!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o208, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
5.90/2.45 YES: (JL1)
5.90/2.45
5.90/2.45 ----------------------------------------
5.90/2.45
5.90/2.45 (4)
5.90/2.45 NO
6.07/2.50 EOF