/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files
--------------------------------------------------------------------------------
NO
proof of /export/starexec/sandbox/benchmark/theBenchmark.jar
# AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty
termination of the given Bare JBC problem could be disproven:
(0) Bare JBC problem
(1) BareJBCToJBCProof [EQUIVALENT, 96 ms]
(2) JBC problem
(3) JBCNonTerm [COMPLETE, 478 ms]
(4) NO
----------------------------------------
(0)
Obligation:
need to prove termination of the following program:
/**
* A loop continously throwing and catching an exception.
* The exception is thrown before the statement that makes the loop
* progress, but another statement inside the exception catcher make the
* loop progress. However, this is not enough to prove progression since
* i is decreased at the beginning of the loop.
*
* The call to main() diverges.
*
* Julia + BinTerm cannot prove that the call to main() terminates.
*
* @author Fausto Spoto
*/
public class Exc4 {
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++;
}
}
}
}
----------------------------------------
(1) BareJBCToJBCProof (EQUIVALENT)
initialized classpath
----------------------------------------
(2)
Obligation:
need to prove termination of the following program:
/**
* A loop continously throwing and catching an exception.
* The exception is thrown before the statement that makes the loop
* progress, but another statement inside the exception catcher make the
* loop progress. However, this is not enough to prove progression since
* i is decreased at the beginning of the loop.
*
* The call to main() diverges.
*
* Julia + BinTerm cannot prove that the call to main() terminates.
*
* @author Fausto Spoto
*/
public class Exc4 {
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++;
}
}
}
}
----------------------------------------
(3) JBCNonTerm (COMPLETE)
Constructed a run with a repetition. States 119 and 138 are repetitions (when considering only the interesting positions [lv_0_1]).
0:
YES: (JL1)
1:
YES: (JL1)
2:
YES: (JL1)
3:
YES: (JL1)
4:
YES: (JL1)
5:
YES: (JL1)
6:
YES: (JL1)
7:
YES: (JL1)
8:
YES: (JL1)
9:
YES: (JL1)
10:
YES: (JL1)
11:
YES: (JL1)
12:
YES: (JL1)
13:
YES: (JL1)
14:
YES: (JL1)
15:
YES: (JL1)
16:
YES: (JL1)
17:
YES: (JL1)
18:
YES: (JL1)
19:
YES: (JL1)
20:
YES: (JL1)
21:
YES: (JL1)
22:
YES: (JL1)
23:
YES: (JL1)
24:
YES: (JL1)
25:
YES: (JL1)
26:
YES: (JL1)
27:
YES: (JL1)
28:
YES: (JL1)
29:
YES: (JL1)
30:
YES: (JL1)
31:
YES: (JL1)
32:
YES: (JL1)
33:
YES: (JL1)
34:
YES: (JL1)
35:
YES: (JL1)
36:
YES: (JL1)
37:
YES: (JL1)
38:
YES: (JL1)
39:
YES: (JL1)
40:
YES: (JL1)
41:
YES: (JL1)
42:
YES: (JL1)
43:
YES: (JL1)
44:
YES: (JL1)
45:
YES: (JL1)
46:
YES: (JL1)
47:
YES: (JL1)
48:
YES: (JL1)
49:
YES: (JL1)
50:
YES: (JL1)
51:
YES: (JL1)
52:
YES: (JL1)
53:
YES: (JL1)
54:
YES: (JL1)
55:
YES: (JL1)
56:
YES: (JL1)
57:
YES: (JL1)
58:
YES: (JL1)
59:
YES: (JL1)
60:
YES: (JL1)
61:
YES: (JL1)
62:
YES: (JL1)
63:
YES: (JL1)
64:
YES: (JL1)
65:
YES: (JL1)
66:
YES: (JL1)
67:
YES: (JL1)
68:
YES: (JL1)
69:
YES: (JL1)
70:
YES: (JL1)
71:
YES: (JL1)
72:
YES: (JL1)
73:
YES: (JL1)
74:
YES: (JL1)
75:
YES: (JL1)
76:
YES: (JL1)
77:
YES: (JL1)
78:
YES: (JL1)
79:
YES: (JL1)
80:
YES: (JL1)
81:
YES: (JL1)
82:
YES: (JL1)
83:
YES: (JL1)
84:
YES: (JL1)
85:
YES: (JL1)
86:
YES: (JL1)
87:
YES: (JL1)
88:
YES: (JL1)
89:
YES: (JL1)
90:
YES: (JL1)
91:
YES: (JL1)
92:
YES: (JL1)
93:
YES: (JL1)
94:
YES: (JL1)
95:
YES: (JL1)
96:
YES: (JL1)
97:
YES: (JL1)
98:
YES: (JL1)
99:
YES: (JL1)
100:
YES: (JL1)
101:
YES: (JL1)
102:
YES: (JL1)
103:
YES: (JL1)
104:
YES: (JL1)
105:
YES: (JL1)
106:
YES: (JL1)
107:
YES: (JL1)
108:
YES: (JL1)
109:
YES: (JL1)
110:
YES: (JL1)
111:
YES: (JL1)
112:
YES: (JL1)
113:
YES: (JL1)
114:
YES: (JL1)
115:
YES: (JL1)
116:
YES: (JL1)
117:
YES: (JL1)
118:
YES: (JL1)
119:
YES: (JL1)
120:()V||0: load ADDR this||this: o237|| ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
121:()V||1: java.lang.RuntimeException.()V|| - ||o237>
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
122:()V||0: load ADDR this||this: o237|| ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
123:()V||1: java.lang.Exception.()V|| - ||o237>
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
124:()V||0: load ADDR this||this: o237|| ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
125:()V||1: java.lang.Throwable.()V|| - ||o237>
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
126:()V||0: load ADDR this||this: o237|| ->
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
127:()V||1: java.lang.Object.()V||this: o237||o237>
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
128:()V||4: load ADDR this||this: o237|| ->
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
129:()V||5: load ADDR this||this: o237||o237>
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
130:()V||6: Write to cause||this: o237||o237, o237>
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=#, detailMessage=#, stackTrace=#) -->{java.lang.Object|}
YES: (JL1)
131:()V||9: load ADDR this||this: o237|| ->
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
132:()V||10: java.lang.Throwable.fillInStackTrace()Ljava/lang/Throwable;|| - ||o237>
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
133:()V||13: pop|| - ||o237>
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
134:()V||14: return|| - || ->
()V||1: java.lang.Throwable.|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
135:()V||4: return|| - || ->
()V||1: java.lang.Exception.|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
136:()V||4: return|| - || ->
()V||1: java.lang.RuntimeException.|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
137:()V||4: return|| - || ->
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
138:
o237!: Throwable(Exception(RuntimeException(NullPointerException())), backtrace=#, cause=o237, detailMessage=#, stackTrace=#) -->{{java.lang.NullPointerException|, java.lang.Object|}}
YES: (JL1)
----------------------------------------
(4)
NO