(0) Obligation:
JBC Problem based on JBC Program:
Manifest-Version: 1.0
Created-By: 1.6.0_26 (Sun Microsystems Inc.)
Main-Class: simple/whileNestedOffset/Main
package simple.whileNestedOffset;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
WhileNestedOffset.increase(args.length);
}
}
package simple.whileNestedOffset;
public class WhileNestedOffset {
public static void increase(int i) {
int j;
while (i < 10) {
j = i;
while (j > 5) {
j++;
}
i++;
}
}
}
(1) JBCNonTerm (EQUIVALENT transformation)
Reached a loop using the following run:
0:
<simple.whileNestedOffset.Main.main||0: load ADDR args||args: a184|| ->
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
1:
<simple.whileNestedOffset.Main.main||1: arraylength|| - ||a184>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
2:
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase(I)V|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
3:
<simple.whileNestedOffset.WhileNestedOffset.increase||0: load INT i||i: 6|| ->
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
4:
<simple.whileNestedOffset.WhileNestedOffset.increase||1: push 10||i: 6||6>
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
5:
<simple.whileNestedOffset.WhileNestedOffset.increase||3: GE||i: 6||6, 10>
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
6:
<simple.whileNestedOffset.WhileNestedOffset.increase||6: load INT i||i: 6|| ->
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
7:
<simple.whileNestedOffset.WhileNestedOffset.increase||7: store INT to j||i: 6||6>
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
8:
<simple.whileNestedOffset.WhileNestedOffset.increase||8: load INT j||i: 6, j: 6|| ->
<simple.whileNestedOffset.Main.main||2: simple.whileNestedOffset.WhileNestedOffset.increase|| - ||6>
String.serialVersionUID: -6849794470754667710L
String.serialPersistentFields: a182
String.CASE_INSENSITIVE_ORDER: o92
String$CaseInsensitiveComparator.serialVersionUID: 8575799808933029326L
RuntimeException.serialVersionUID: -7034897190745766939L
Exception.serialVersionUID: -3387516993124229948L
Throwable.serialVersionUID: -3042686055658047285L
o92!: String$CaseInsensitiveComparator()
a182([java.io.ObjectStreamField|]): length 0
a184([java.lang.String...]): length 6
In the loop head node, references [i95] were interesting.
By SMT, we could prove
((0 <= initial_i41 and initial_i41 <= 9 and 0 <= initial_i95 and 0 <= initial_i18) and (((path1_i95 = path1_i111 and path1_i113 = (path1_i111 + 1) and path1_i41 = res_i41 and path1_i113 = res_i95 and path1_i18 = res_i18 and path1_i41 = initial_i41 and path1_i95 = initial_i95 and path1_i18 = initial_i18) and path1_i111 > 5) and ((res_i95 = res_i111 and res_i113 = (res_i111 + 1)) and !res_i111 > 5)))
to be UNSAT. Consequently, the loop will not terminate.