(0) Obligation:
JBC Problem based on JBC Program:
Manifest-Version: 1.0
Created-By: 1.6.0_24 (Apple Inc.)
Main-Class: NO_10
public class NO_10 {
public static void main(String args[]) {
int j = 100;
for (int i = 0; i < j; i++) j++;
}
}
(1) JBCNonTerm (EQUIVALENT transformation)
Reached a loop using the following run:
0:
<NO_10.main||0: push 100|| - || ->
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a372092
String.CASE_INSENSITIVE_ORDER: o186047
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o186047!: String$CaseInsensitiveComparator()
a372092([java.io.ObjectStreamField|]): length 0
a372094([java.lang.String...]): length [0,+inf)
1:
<NO_10.main||2: store INT to #1|| - ||100>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a372092
String.CASE_INSENSITIVE_ORDER: o186047
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o186047!: String$CaseInsensitiveComparator()
a372092([java.io.ObjectStreamField|]): length 0
a372094([java.lang.String...]): length [0,+inf)
2:
<NO_10.main||3: push 0||#1: 100|| ->
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a372092
String.CASE_INSENSITIVE_ORDER: o186047
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o186047!: String$CaseInsensitiveComparator()
a372092([java.io.ObjectStreamField|]): length 0
a372094([java.lang.String...]): length [0,+inf)
3:
<NO_10.main||4: store INT to #2||#1: 100||0>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a372092
String.CASE_INSENSITIVE_ORDER: o186047
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o186047!: String$CaseInsensitiveComparator()
a372092([java.io.ObjectStreamField|]): length 0
a372094([java.lang.String...]): length [0,+inf)
4:
<NO_10.main||5: load INT #2||#1: 100, #2: 0|| ->
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a372092
String.CASE_INSENSITIVE_ORDER: o186047
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o186047!: String$CaseInsensitiveComparator()
a372092([java.io.ObjectStreamField|]): length 0
a372094([java.lang.String...]): length [0,+inf)
In the loop head node, references [i21, i20] were interesting.
By SMT, we could prove
((100 <= initial_i20 and 0 <= initial_i21 and 0 <= initial_i1) and (((path1_i24 = (path1_i20 + 1) and path1_i25 = (path1_i21 + 1) and path1_i24 = res_i20 and path1_i25 = res_i21 and path1_i1 = res_i1 and path1_i20 = initial_i20 and path1_i21 = initial_i21 and path1_i1 = initial_i1) and path1_i21 < path1_i20) and ((res_i24 = (res_i20 + 1) and res_i25 = (res_i21 + 1)) and !res_i21 < res_i20)))
to be UNSAT. Consequently, the loop will not terminate.