(0) Obligation:
Need to prove time_complexity of the following program:
/**
* Java can do infinite data objects, too.
* Here we take the first n elements from an
* ascending infinite list of integer numbers.
*
* @author Carsten Fuhs
*/
public class Take {
public static int[] take(int n, MyIterator f) {
int[] result = new int[n];
for (int i = 0; i < n; ++i) {
if (f.hasNext()) {
result[i] = f.next();
}
else {
break;
}
}
return result;
}
public static void main(int start, int howMany) {
From f = new From(start);
int[] firstHowMany = take(howMany, f);
}
}
interface MyIterator {
boolean hasNext();
int next();
}
class From implements MyIterator {
private int current;
public From(int start) {
this.current = start;
}
public boolean hasNext() {
return true;
}
public int next() {
return current++;
}
}
(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(2) Obligation:
Termination Graph based on JBC Program:
Take.main(II)V: Graph of 127 nodes with 1 SCC.
(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(50)) transformation)
Extracted set of 76 edges for the analysis of TIME complexity. Kept leaves.
(4) Obligation:
Set of 76 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: nonterm paths and paths from start to sinks
(5) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 76 jbc graph edges to a weighted ITS with 79 rules.
Used simplified encoding of division and modulo.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Did no encode lower bounds for putfield and astore.
(6) Obligation:
IntTrs with 79 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_New_1(i2, i3, env, static) -{0,0}> main_New_3(i2, i3, env, static) :|: 0 >= 0
main_New_3(i2, i3, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_17(i2, i3, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_17(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, env, static) -{1,1}> langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_27(o2, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_27(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_32(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Load_32(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_38(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, env, static) -{1,1}> main_New_46(i2, i3, env, static) :|: 0 >= 0
main_New_46(i2, i3, env, static) -{0,0}> main_New_48(i2, i3, env, static) :|: 0 >= 0
main_New_48(i2, i3, env, static) -{0,0}> main_New_52(i2, i3, env, static) :|: 0 <= static
main_New_52(i2, i3, env, static) -{0,0}> main_New_53(i2, i3, env, static) :|: 0 >= 0
main_New_53(i2, i3, env, static) -{0,0}> main_New_55(i2, i3, env, static) :|: 0 >= 0
main_New_55(i2, i3, env, static) -{0,0}> main_New_57(i2, i3, env, static) :|: 0 >= 0
main_New_57(i2, i3, env, static) -{1,1}> main_Duplicate_59(i2, i3, o4, iconst_0, env, static) :|: o4 = 1 && 0 < o4 && iconst_0 = 0
main_Duplicate_59(i2, i3, o4, iconst_0, env, static) -{1,1}> main_Load_60(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_Load_60(i2, i3, o4, iconst_0, env, static) -{1,1}> main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(7) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_New_1(
i2,
i3,
env,
static) -{23,23}>
langle_init_rangle_FieldAccess_66(
1,
i2,
i3,
0,
env,
static'1) :|:
static'1 <=
static''' +
1 &&
0 <
1 && 0 >= 0 &&
0 <=
2 &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <=
1 &&
0 <=
static &&
0 <
2 &&
0 <=
static'1by chaining
main_New_1(
i2,
i3,
env,
static) -{0,0}>
main_New_3(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_3(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_17(
i2,
i3,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_17(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_20(
i2,
i3,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_20(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
env,
static) -{1,1}>
main_New_46(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_46(
i2,
i3,
env,
static) -{0,0}>
main_New_48(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_48(
i2,
i3,
env,
static) -{0,0}>
main_New_52(
i2,
i3,
env,
static) :|:
0 <=
staticmain_New_52(
i2,
i3,
env,
static) -{0,0}>
main_New_53(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_53(
i2,
i3,
env,
static) -{0,0}>
main_New_55(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_55(
i2,
i3,
env,
static) -{0,0}>
main_New_57(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_57(
i2,
i3,
env,
static) -{1,1}>
main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
o4 =
1 &&
0 <
o4 &&
iconst_0 =
0main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_FieldAccess_66(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0obtained
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
by chaining
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
obtained
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
by chaining
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
obtained
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
by chaining
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
obtained
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
by chaining
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
obtained
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
by chaining
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(8) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(9) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
was transformed to
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
(10) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
(11) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && i53 + 1 = i61'
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3'
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
was transformed to
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
(12) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && i53 + 1 = i61'
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3'
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(13) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 76 jbc graph edges to a weighted ITS with 79 rules.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Did no encode lower bounds for putfield and astore.
(14) Obligation:
IntTrs with 79 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_New_1(i2, i3, env, static) -{0,0}> main_New_3(i2, i3, env, static) :|: 0 >= 0
main_New_3(i2, i3, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_17(i2, i3, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_17(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, env, static) -{1,1}> langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_27(o2, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_27(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_32(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Load_32(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_38(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, env, static) -{1,1}> main_New_46(i2, i3, env, static) :|: 0 >= 0
main_New_46(i2, i3, env, static) -{0,0}> main_New_48(i2, i3, env, static) :|: 0 >= 0
main_New_48(i2, i3, env, static) -{0,0}> main_New_52(i2, i3, env, static) :|: 0 <= static
main_New_52(i2, i3, env, static) -{0,0}> main_New_53(i2, i3, env, static) :|: 0 >= 0
main_New_53(i2, i3, env, static) -{0,0}> main_New_55(i2, i3, env, static) :|: 0 >= 0
main_New_55(i2, i3, env, static) -{0,0}> main_New_57(i2, i3, env, static) :|: 0 >= 0
main_New_57(i2, i3, env, static) -{1,1}> main_Duplicate_59(i2, i3, o4, iconst_0, env, static) :|: o4 = 1 && 0 < o4 && iconst_0 = 0
main_Duplicate_59(i2, i3, o4, iconst_0, env, static) -{1,1}> main_Load_60(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_Load_60(i2, i3, o4, iconst_0, env, static) -{1,1}> main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(15) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_New_1(
i2,
i3,
env,
static) -{23,23}>
langle_init_rangle_FieldAccess_66(
1,
i2,
i3,
0,
env,
static'1) :|:
static'1 <=
static''' +
1 &&
0 <
1 && 0 >= 0 &&
0 <=
2 &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <=
1 &&
0 <=
static &&
0 <
2 &&
0 <=
static'1by chaining
main_New_1(
i2,
i3,
env,
static) -{0,0}>
main_New_3(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_3(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_17(
i2,
i3,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_17(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_20(
i2,
i3,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_20(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
env,
static) -{1,1}>
main_New_46(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_46(
i2,
i3,
env,
static) -{0,0}>
main_New_48(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_48(
i2,
i3,
env,
static) -{0,0}>
main_New_52(
i2,
i3,
env,
static) :|:
0 <=
staticmain_New_52(
i2,
i3,
env,
static) -{0,0}>
main_New_53(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_53(
i2,
i3,
env,
static) -{0,0}>
main_New_55(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_55(
i2,
i3,
env,
static) -{0,0}>
main_New_57(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_57(
i2,
i3,
env,
static) -{1,1}>
main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
o4 =
1 &&
0 <
o4 &&
iconst_0 =
0main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_FieldAccess_66(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0obtained
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
by chaining
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
obtained
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
by chaining
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
obtained
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
by chaining
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
obtained
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
by chaining
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
obtained
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
by chaining
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(16) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(17) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
was transformed to
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
(18) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
(19) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && i53 + 1 = i61'
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3'
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
was transformed to
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
(20) Obligation:
IntTrs with 17 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_393(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24 && i52 <= i54
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{6,6}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i11, o4, i2, env, static) -{0,0}> take_ArrayCreate_84(i11, o4, i2, env, static) :|: 0 < o4 && i11 <= -1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_446(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{16,16}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52, i2, env, static) :|: i54 < i52 && 0 < a24 && 1 <= i52 && 0 <= i54 && 0 < o28 && i53 + 1 = i61'
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{2,2}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < a24 && 0 < o28 && 0 <= i54
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayCreate_82(i12, o4, i2, env, static) -{4,4}> take_Load_380(i12, o4, i12 + 2, 0, i2, i2, env, static) :|: 0 <= i12 && a3' = i12 + 2 && 0 < o4 && 0 < a3'
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(21) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(50)) transformation)
Extracted set of 73 edges for the analysis of TIME complexity. Dropped leaves.
(22) Obligation:
Set of 73 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: all paths from start
(23) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 73 jbc graph edges to a weighted ITS with 76 rules.
Used simplified encoding of division and modulo.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Filtered fields of type java.lang.Object.
Did no encode lower bounds for putfield and astore.
(24) Obligation:
IntTrs with 76 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_New_1(i2, i3, env, static) -{0,0}> main_New_3(i2, i3, env, static) :|: 0 >= 0
main_New_3(i2, i3, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i2, i3, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_13(iconst_0, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_15(a2, i2, i3, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_17(i2, i3, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_17(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, env, static) -{1,1}> langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_21(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_24(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_27(o2, i2, i3, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_27(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_30(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Load_32(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Load_32(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, env, static) :|: 0 < o2
langle_init_rangle_Return_38(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, env, static) -{1,1}> main_New_46(i2, i3, env, static) :|: 0 >= 0
main_New_46(i2, i3, env, static) -{0,0}> main_New_48(i2, i3, env, static) :|: 0 >= 0
main_New_48(i2, i3, env, static) -{0,0}> main_New_52(i2, i3, env, static) :|: 0 <= static
main_New_52(i2, i3, env, static) -{0,0}> main_New_53(i2, i3, env, static) :|: 0 >= 0
main_New_53(i2, i3, env, static) -{0,0}> main_New_55(i2, i3, env, static) :|: 0 >= 0
main_New_55(i2, i3, env, static) -{0,0}> main_New_57(i2, i3, env, static) :|: 0 >= 0
main_New_57(i2, i3, env, static) -{1,1}> main_Duplicate_59(i2, i3, o4, iconst_0, env, static) :|: o4 = 1 && 0 < o4 && iconst_0 = 0
main_Duplicate_59(i2, i3, o4, iconst_0, env, static) -{1,1}> main_Load_60(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_Load_60(i2, i3, o4, iconst_0, env, static) -{1,1}> main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
main_InvokeMethod_61(i2, i3, o4, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_62(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_InvokeMethod_63(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_64(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_Load_65(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) :|: 0 < o4 && iconst_0 = 0
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(25) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_New_1(
i2,
i3,
env,
static) -{23,23}>
langle_init_rangle_FieldAccess_66(
1,
i2,
i3,
0,
env,
static'1) :|:
static'1 <=
static''' +
1 &&
0 <
1 && 0 >= 0 &&
0 <=
2 &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <=
1 &&
0 <=
static &&
0 <
2 &&
0 <=
static'1by chaining
main_New_1(
i2,
i3,
env,
static) -{0,0}>
main_New_3(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_3(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_13(
iconst_0,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_15(
a2,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_17(
i2,
i3,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_17(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_19(
i2,
i3,
env,
static) -{0,0}>
langle_clinit_rangle_New_20(
i2,
i3,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_20(
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_21(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_24(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_26(
o2,
NULL,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_27(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_30(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Load_32(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_36(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_37(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_init_rangle_Return_38(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
env,
static) -{1,1}>
main_New_46(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_46(
i2,
i3,
env,
static) -{0,0}>
main_New_48(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_48(
i2,
i3,
env,
static) -{0,0}>
main_New_52(
i2,
i3,
env,
static) :|:
0 <=
staticmain_New_52(
i2,
i3,
env,
static) -{0,0}>
main_New_53(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_53(
i2,
i3,
env,
static) -{0,0}>
main_New_55(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_55(
i2,
i3,
env,
static) -{0,0}>
main_New_57(
i2,
i3,
env,
static) :|: 0 >= 0
main_New_57(
i2,
i3,
env,
static) -{1,1}>
main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
o4 =
1 &&
0 <
o4 &&
iconst_0 =
0main_Duplicate_59(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_Load_60(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0main_InvokeMethod_61(
i2,
i3,
o4,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_62(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_InvokeMethod_63(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_64(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0langle_init_rangle_Load_65(
o4,
i2,
i3,
iconst_0,
env,
static) -{1,1}>
langle_init_rangle_FieldAccess_66(
o4,
i2,
i3,
iconst_0,
env,
static) :|:
0 <
o4 &&
iconst_0 =
0obtained
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{10,10}> take_Load_380(i3, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
by chaining
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{1,1}> main_Store_70(i2, i3, o4, env, static) :|: 0 < o4
main_Store_70(i2, i3, o4, env, static) -{1,1}> main_Load_72(i2, i3, o4, env, static) :|: 0 < o4
main_Load_72(i2, i3, o4, env, static) -{1,1}> main_Load_75(i2, i3, o4, env, static) :|: 0 < o4
main_Load_75(i2, i3, o4, env, static) -{1,1}> main_InvokeMethod_76(i2, i3, o4, env, static) :|: 0 < o4
main_InvokeMethod_76(i2, i3, o4, env, static) -{1,1}> take_Load_78(i3, o4, i2, env, static) :|: 0 < o4
take_Load_78(i3, o4, i2, env, static) -{1,1}> take_ArrayCreate_82(i3, o4, i2, env, static) :|: 0 < o4
take_ArrayCreate_82(i12, o4, i2, env, static) -{0,0}> take_ArrayCreate_85(i12, o4, i2, env, static) :|: 0 < o4 && 0 <= i12
take_ArrayCreate_85(i12, o4, i2, env, static) -{1,1}> take_Store_88(a3, i12, o4, i2, env, static) :|: 0 < a3 && a3 = i12 + 2 && 0 < o4 && 0 <= i12
take_Store_88(a3, i12, o4, i2, env, static) -{1,1}> take_ConstantStackPush_91(i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && 0 <= i12
take_ConstantStackPush_91(i12, o4, a3, i2, env, static) -{1,1}> take_Store_92(iconst_0, i12, o4, a3, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Store_92(iconst_0, i12, o4, a3, i2, env, static) -{1,1}> take_Load_94(i12, o4, a3, iconst_0, i2, env, static) :|: 0 < a3 && 0 < o4 && iconst_0 = 0 && 0 <= i12
take_Load_94(i12, o4, a3, iconst_0, i2, env, static) -{0,0}> take_Load_203(i12, o4, a3, iconst_0, i2, i2, env, static) :|: 0 < a3 && 0 <= iconst_0 && 0 < o4 && iconst_0 <= 1 && iconst_0 = 0 && 0 <= i12
take_Load_203(i22, o10, a8, i24, i2, i23, env, static) -{0,0}> take_Load_295(i22, o10, a8, i24, i2, i23, env, static) :|: 0 <= i24 && i24 <= 1 && i24 <= 2 && 0 <= i22 && 0 < o10 && 0 < a8
take_Load_295(i37, o19, a16, i39, i2, i38, env, static) -{0,0}> take_Load_380(i37, o19, a16, i39, i2, i38, env, static) :|: 0 < a16 && 0 <= i39 && 0 < o19 && 0 <= i37 && i39 <= 2
obtained
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{18,18}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
by chaining
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_382(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_Load_382(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_GE_391(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && 0 <= i54 && 0 < a24
take_GE_391(i54, i52, o28, a24, i2, i53, env, static) -{0,0}> take_GE_394(i54, i52, o28, a24, i2, i53, env, static) :|: 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_GE_394(i54, i52, o28, a24, i2, i53, env, static) -{1,1}> take_Load_396(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24
take_Load_396(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_398(o28, i52, a24, i54, i2, i53, env, static) -{1,1}> hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
hasNext_ConstantStackPush_402(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
hasNext_Return_408(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_EQ_410(iconst_1, i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_412(i52, o28, a24, i54, i2, i53, env, static) :|: 0 < iconst_1 && 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
take_Load_412(i52, o28, a24, i54, i2, i53, env, static) -{1,1}> take_Load_414(a24, i52, o28, i54, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_414(a24, i52, o28, i54, i2, i53, env, static) -{1,1}> take_Load_416(a24, i54, i52, o28, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_Load_416(a24, i54, i52, o28, i2, i53, env, static) -{1,1}> take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_InvokeMethod_417(a24, i54, o28, i52, i2, i53, env, static) -{1,1}> next_Load_419(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Load_419(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_420(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_FieldAccess_422(o28, a24, i54, i52, i2, i53, env, static) -{1,1}> next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_Duplicate_435(o28, i53, a24, i54, i52, i2, env, static) -{1,1}> next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
next_ConstantStackPush_438(i53, o28, a24, i54, i52, i2, env, static) -{1,1}> next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) :|: 1 <= i52 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
next_IntArithmetic_440(i53, o28, iconst_1, a24, i54, i52, i2, env, static) -{1,1}> next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) :|: 1 <= i52 && i53 + iconst_1 = i61 && 0 < o28 && iconst_1 = 1 && 0 <= i54 && 0 < a24
obtained
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 0 < a24 && 0 <= i54 && 1 <= i52 && 0 < o28
by chaining
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
take_ArrayAccess_444(a24, i54, i53, i52, o28, i2, i61, env, static) -{0,0}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 1 <= i52 && 0 < o28 && 0 <= i54 && 0 < a24
obtained
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
by chaining
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{1,1}> take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && i54 + 1 = i63 && 0 <= i54 && 0 < a24
take_JMP_451(i52, o28, a24, i63, i2, i61, env, static) -{1,1}> take_Load_453(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24
take_Load_453(i52, o28, a24, i63, i2, i61, env, static) -{0,0}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i52 && 1 <= i63 && 0 < o28 && 0 < a24 && 0 <= i63
(26) Obligation:
IntTrs with 11 rules
Start term: main_New_1(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_New_1(i2, i3, env, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0, env, static) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4', env, static) :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4, env, static) -{10,10}> take_Load_380(i3, o4, a3', 0, i2, i2, env, static) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_Load_380(i52, o28, a24, i54, i2, i53, env, static) -{18,18}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52, i2, env, static) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52, i2, env, static) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i2, i61, env, static) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i2, i61, env, static) -{1,1}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) :|: 0 < a24 && 0 <= i54 && 1 <= i52 && 0 < o28
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i2, i61, env, static) -{1,1}> take_Inc_449(i52, o28, a24', i54, i2, i61, env, static) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i2, i61, env, static) -{2,2}> take_Load_380(i52, o28, a24, i63, i2, i61, env, static) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(27) WeightedIntTrsUnneededArgumentFilterProof (CONCRETE UPPER BOUND(ID) transformation)
Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements:
main_New_1(x1, x2, x3, x4) → main_New_1(x1, x2, x4)
langle_init_rangle_FieldAccess_66(x1, x2, x3, x4, x5, x6) → langle_init_rangle_FieldAccess_66(x1, x2, x3, x4)
langle_init_rangle_Return_68(x1, x2, x3, x4, x5) → langle_init_rangle_Return_68(x1, x2, x3)
take_Load_380(x1, x2, x3, x4, x5, x6, x7, x8) → take_Load_380(x1, x2, x3, x4, x6)
next_FieldAccess_442(x1, x2, x3, x4, x5, x6, x7, x8, x9) → next_FieldAccess_442(x1, x2, x3, x4, x5, x6)
next_Return_443(x1, x2, x3, x4, x5, x6, x7, x8, x9) → next_Return_443(x1, x2, x3, x4, x5, x7)
take_ArrayAccess_445(x1, x2, x3, x4, x5, x6, x7, x8, x9) → take_ArrayAccess_445(x1, x2, x3, x4, x5, x7)
take_Inc_449(x1, x2, x3, x4, x5, x6, x7, x8) → take_Inc_449(x1, x2, x3, x4, x6)
(28) Obligation:
IntTrs with 11 rules
Start term: main_New_1(#0, #1, static)
Considered paths: all paths from start
Rules:
main_New_1(i2, i3, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, a3', 0, i2) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
next_Return_443(i53, a24, i54, i52, o28, i61) -{1,1}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) :|: 0 < a24 && 0 <= i54 && 1 <= i52 && 0 < o28
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
take_Inc_449(i52, o28, a24, i54, i61) -{2,2}> take_Load_380(i52, o28, a24, i63, i61) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
(29) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
take_Inc_449(i52, o28, a24, i54, i61) -{2,2}> take_Load_380(i52, o28, a24, i63, i61) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
was transformed to
take_Inc_449(i52, o28, a24, i54, i61) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i61) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i61', a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, a3', 0, i2) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, i3 + 2, 0, i2) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
(30) Obligation:
IntTrs with 11 rules
Start term: main_New_1(#0, #1, static)
Considered paths: all paths from start
Rules:
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
main_New_1(i2, i3, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
take_Inc_449(i52, o28, a24, i54, i61) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i61) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
next_Return_443(i53, a24, i54, i52, o28, i61) -{1,1}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) :|: 0 < a24 && 0 <= i54 && 1 <= i52 && 0 < o28
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, i3 + 2, 0, i2) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
(31) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, i3 + 2, 0, i2) :|: 0 <= 2 && 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3' && 0 <= 0 && 0 <= 1
was transformed to
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, i3 + 2, 0, i2) :|: 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3'
main_New_1(i2, i3, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0) :|: static'1 <= static''' + 1 && 0 < 1 && 0 >= 0 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 <= 1 && 0 <= static && 0 < 2 && 0 <= static'1
was transformed to
main_New_1(i2, i3, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && 0 < 1 && i53 + 1 = i61'
was transformed to
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && i53 + 1 = i61'
(32) Obligation:
IntTrs with 11 rules
Start term: main_New_1(#0, #1, static)
Considered paths: all paths from start
Rules:
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: o28' <= o28 + i61 && 1 <= i52 && 0 < o28 && 0 < o28' && 0 < i61 && 0 <= i54 && 0 < a24
take_Inc_449(i52, o28, a24, i54, i61) -{2,2}> take_Load_380(i52, o28, a24, i54 + 1, i61) :|: 1 <= i63 && 0 <= i63 && 1 <= i52 && 0 < a24 && i54 + 1 = i63 && 0 < o28 && 0 <= i54
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && 0 < i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && a24' <= a24 + i53
take_Load_380(i52, o28, a24, i54, i53) -{18,18}> next_FieldAccess_442(i53, o28, i53 + 1, a24, i54, i52) :|: 0 < o28 && 0 < a24 && 1 <= i52 && 0 <= i54 && i54 < i52 && i53 + 1 = i61'
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: i2 <= 0 && o4' <= o4 + -1 * i2 && 0 < o4 && iconst_0 = 0 && 0 < o4'
next_Return_443(i53, a24, i54, i52, o28, i61) -{1,1}> take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) :|: 0 < a24 && 0 <= i54 && 1 <= i52 && 0 < o28
main_New_1(i2, i3, static) -{23,23}> langle_init_rangle_FieldAccess_66(1, i2, i3, 0) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
langle_init_rangle_Return_68(i2, i3, o4) -{10,10}> take_Load_380(i3, o4, i3 + 2, 0, i2) :|: 0 <= i3 && a3' = i3 + 2 && 0 < o4 && 0 < a3'
next_FieldAccess_442(i53, o28, i61, a24, i54, i52) -{1,1}> next_Return_443(i53, a24, i54, i52, o28', i61) :|: 1 <= i52 && o28' <= o28 + -1 * i61 && 0 < o28 && 0 < o28' && 0 <= i54 && 0 < a24 && i61 <= 0
take_ArrayAccess_445(a24, i54, i53, i52, o28, i61) -{1,1}> take_Inc_449(i52, o28, a24', i54, i61) :|: 1 <= i52 && a24' <= a24 + -1 * i53 && 0 < o28 && i54 < i52 && 0 <= i54 && 0 < a24 && 0 < a24' && i53 <= 0
langle_init_rangle_FieldAccess_66(o4, i2, i3, iconst_0) -{1,1}> langle_init_rangle_Return_68(i2, i3, o4') :|: o4' <= o4 + i2 && 0 < o4 && iconst_0 = 0 && 0 < i2 && 0 < o4'
(33) koat Proof (EQUIVALENT transformation)
YES(?, 56*ar_1 + 73)
Initial complexity problem:
1: T:
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ o28' <= ar_1 + ar_2 /\ 1 <= ar_5 /\ 0 < ar_1 /\ 0 < o28' /\ 0 < ar_2 /\ 0 <= ar_4 /\ 0 < ar_3 ]
(Comp: ?, Cost: 2) take_Inc_449(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_0, ar_1, ar_2, ar_3 + 1, ar_4, arityPad)) [ 1 <= i63 /\ 0 <= i63 /\ 1 <= ar_0 /\ 0 < ar_2 /\ ar_3 + 1 = i63 /\ 0 < ar_1 /\ 0 <= ar_3 ]
(Comp: ?, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ 0 < ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ a24' <= ar_0 + ar_2 ]
(Comp: ?, Cost: 18) take_Load_380(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_FieldAccess_442(ar_4, ar_1, ar_4 + 1, ar_2, ar_3, ar_0)) [ 0 < ar_1 /\ 0 < ar_2 /\ 1 <= ar_0 /\ 0 <= ar_3 /\ ar_3 < ar_0 /\ ar_4 + 1 = i61' ]
(Comp: ?, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ ar_1 <= 0 /\ o4' <= ar_0 - ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < o4' ]
(Comp: ?, Cost: 1) next_Return_443(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_ArrayAccess_445(ar_1, ar_2, ar_0, ar_3, ar_4, ar_5)) [ 0 < ar_1 /\ 0 <= ar_2 /\ 1 <= ar_3 /\ 0 < ar_4 ]
(Comp: ?, Cost: 23) main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_FieldAccess_66(1, ar_0, ar_1, 0, arityPad, arityPad)) [ static'1 <= static''' + 1 /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 ]
(Comp: ?, Cost: 10) langle_init_rangle_Return_68(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_1, ar_2, ar_1 + 2, 0, ar_0, arityPad)) [ 0 <= ar_1 /\ a3' = ar_1 + 2 /\ 0 < ar_2 /\ 0 < a3' ]
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ 1 <= ar_5 /\ o28' <= ar_1 - ar_2 /\ 0 < ar_1 /\ 0 < o28' /\ 0 <= ar_4 /\ 0 < ar_3 /\ ar_2 <= 0 ]
(Comp: ?, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ a24' <= ar_0 - ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ ar_2 <= 0 ]
(Comp: ?, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ o4' <= ar_0 + ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < ar_1 /\ 0 < o4' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Repeatedly propagating knowledge in problem 1 produces the following problem:
2: T:
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ o28' <= ar_1 + ar_2 /\ 1 <= ar_5 /\ 0 < ar_1 /\ 0 < o28' /\ 0 < ar_2 /\ 0 <= ar_4 /\ 0 < ar_3 ]
(Comp: ?, Cost: 2) take_Inc_449(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_0, ar_1, ar_2, ar_3 + 1, ar_4, arityPad)) [ 1 <= i63 /\ 0 <= i63 /\ 1 <= ar_0 /\ 0 < ar_2 /\ ar_3 + 1 = i63 /\ 0 < ar_1 /\ 0 <= ar_3 ]
(Comp: ?, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ 0 < ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ a24' <= ar_0 + ar_2 ]
(Comp: ?, Cost: 18) take_Load_380(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_FieldAccess_442(ar_4, ar_1, ar_4 + 1, ar_2, ar_3, ar_0)) [ 0 < ar_1 /\ 0 < ar_2 /\ 1 <= ar_0 /\ 0 <= ar_3 /\ ar_3 < ar_0 /\ ar_4 + 1 = i61' ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ ar_1 <= 0 /\ o4' <= ar_0 - ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < o4' ]
(Comp: ?, Cost: 1) next_Return_443(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_ArrayAccess_445(ar_1, ar_2, ar_0, ar_3, ar_4, ar_5)) [ 0 < ar_1 /\ 0 <= ar_2 /\ 1 <= ar_3 /\ 0 < ar_4 ]
(Comp: 1, Cost: 23) main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_FieldAccess_66(1, ar_0, ar_1, 0, arityPad, arityPad)) [ static'1 <= static''' + 1 /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 ]
(Comp: 2, Cost: 10) langle_init_rangle_Return_68(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_1, ar_2, ar_1 + 2, 0, ar_0, arityPad)) [ 0 <= ar_1 /\ a3' = ar_1 + 2 /\ 0 < ar_2 /\ 0 < a3' ]
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ 1 <= ar_5 /\ o28' <= ar_1 - ar_2 /\ 0 < ar_1 /\ 0 < o28' /\ 0 <= ar_4 /\ 0 < ar_3 /\ ar_2 <= 0 ]
(Comp: ?, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ a24' <= ar_0 - ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ ar_2 <= 0 ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ o4' <= ar_0 + ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < ar_1 /\ 0 < o4' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
A polynomial rank function with
Pol(next_FieldAccess_442) = -2*V_5 + 2*V_6
Pol(next_Return_443) = -2*V_3 + 2*V_4
Pol(take_Inc_449) = 2*V_1 - 2*V_4 - 1
Pol(take_Load_380) = 2*V_1 - 2*V_4 + 1
Pol(take_ArrayAccess_445) = -2*V_2 + 2*V_4
Pol(langle_init_rangle_FieldAccess_66) = 2*V_3 + 1
Pol(langle_init_rangle_Return_68) = 2*V_2 + 1
Pol(main_New_1) = 2*V_2 + 1
Pol(koat_start) = 2*V_2 + 1
orients all transitions weakly and the transitions
take_Load_380(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_FieldAccess_442(ar_4, ar_1, ar_4 + 1, ar_2, ar_3, ar_0)) [ 0 < ar_1 /\ 0 < ar_2 /\ 1 <= ar_0 /\ 0 <= ar_3 /\ ar_3 < ar_0 /\ ar_4 + 1 = i61' ]
take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ 0 < ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ a24' <= ar_0 + ar_2 ]
take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ a24' <= ar_0 - ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ ar_2 <= 0 ]
strictly and produces the following problem:
3: T:
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ o28' <= ar_1 + ar_2 /\ 1 <= ar_5 /\ 0 < ar_1 /\ 0 < o28' /\ 0 < ar_2 /\ 0 <= ar_4 /\ 0 < ar_3 ]
(Comp: ?, Cost: 2) take_Inc_449(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_0, ar_1, ar_2, ar_3 + 1, ar_4, arityPad)) [ 1 <= i63 /\ 0 <= i63 /\ 1 <= ar_0 /\ 0 < ar_2 /\ ar_3 + 1 = i63 /\ 0 < ar_1 /\ 0 <= ar_3 ]
(Comp: 2*ar_1 + 1, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ 0 < ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ a24' <= ar_0 + ar_2 ]
(Comp: 2*ar_1 + 1, Cost: 18) take_Load_380(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_FieldAccess_442(ar_4, ar_1, ar_4 + 1, ar_2, ar_3, ar_0)) [ 0 < ar_1 /\ 0 < ar_2 /\ 1 <= ar_0 /\ 0 <= ar_3 /\ ar_3 < ar_0 /\ ar_4 + 1 = i61' ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ ar_1 <= 0 /\ o4' <= ar_0 - ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < o4' ]
(Comp: ?, Cost: 1) next_Return_443(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_ArrayAccess_445(ar_1, ar_2, ar_0, ar_3, ar_4, ar_5)) [ 0 < ar_1 /\ 0 <= ar_2 /\ 1 <= ar_3 /\ 0 < ar_4 ]
(Comp: 1, Cost: 23) main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_FieldAccess_66(1, ar_0, ar_1, 0, arityPad, arityPad)) [ static'1 <= static''' + 1 /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 ]
(Comp: 2, Cost: 10) langle_init_rangle_Return_68(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_1, ar_2, ar_1 + 2, 0, ar_0, arityPad)) [ 0 <= ar_1 /\ a3' = ar_1 + 2 /\ 0 < ar_2 /\ 0 < a3' ]
(Comp: ?, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ 1 <= ar_5 /\ o28' <= ar_1 - ar_2 /\ 0 < ar_1 /\ 0 < o28' /\ 0 <= ar_4 /\ 0 < ar_3 /\ ar_2 <= 0 ]
(Comp: 2*ar_1 + 1, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ a24' <= ar_0 - ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ ar_2 <= 0 ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ o4' <= ar_0 + ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < ar_1 /\ 0 < o4' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Repeatedly propagating knowledge in problem 3 produces the following problem:
4: T:
(Comp: 2*ar_1 + 1, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ o28' <= ar_1 + ar_2 /\ 1 <= ar_5 /\ 0 < ar_1 /\ 0 < o28' /\ 0 < ar_2 /\ 0 <= ar_4 /\ 0 < ar_3 ]
(Comp: 4*ar_1 + 2, Cost: 2) take_Inc_449(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_0, ar_1, ar_2, ar_3 + 1, ar_4, arityPad)) [ 1 <= i63 /\ 0 <= i63 /\ 1 <= ar_0 /\ 0 < ar_2 /\ ar_3 + 1 = i63 /\ 0 < ar_1 /\ 0 <= ar_3 ]
(Comp: 2*ar_1 + 1, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ 0 < ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ a24' <= ar_0 + ar_2 ]
(Comp: 2*ar_1 + 1, Cost: 18) take_Load_380(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_FieldAccess_442(ar_4, ar_1, ar_4 + 1, ar_2, ar_3, ar_0)) [ 0 < ar_1 /\ 0 < ar_2 /\ 1 <= ar_0 /\ 0 <= ar_3 /\ ar_3 < ar_0 /\ ar_4 + 1 = i61' ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ ar_1 <= 0 /\ o4' <= ar_0 - ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < o4' ]
(Comp: 4*ar_1 + 2, Cost: 1) next_Return_443(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_ArrayAccess_445(ar_1, ar_2, ar_0, ar_3, ar_4, ar_5)) [ 0 < ar_1 /\ 0 <= ar_2 /\ 1 <= ar_3 /\ 0 < ar_4 ]
(Comp: 1, Cost: 23) main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_FieldAccess_66(1, ar_0, ar_1, 0, arityPad, arityPad)) [ static'1 <= static''' + 1 /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 ]
(Comp: 2, Cost: 10) langle_init_rangle_Return_68(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Load_380(ar_1, ar_2, ar_1 + 2, 0, ar_0, arityPad)) [ 0 <= ar_1 /\ a3' = ar_1 + 2 /\ 0 < ar_2 /\ 0 < a3' ]
(Comp: 2*ar_1 + 1, Cost: 1) next_FieldAccess_442(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(next_Return_443(ar_0, ar_3, ar_4, ar_5, o28', ar_2)) [ 1 <= ar_5 /\ o28' <= ar_1 - ar_2 /\ 0 < ar_1 /\ 0 < o28' /\ 0 <= ar_4 /\ 0 < ar_3 /\ ar_2 <= 0 ]
(Comp: 2*ar_1 + 1, Cost: 1) take_ArrayAccess_445(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(take_Inc_449(ar_3, ar_4, a24', ar_1, ar_5, arityPad)) [ 1 <= ar_3 /\ a24' <= ar_0 - ar_2 /\ 0 < ar_4 /\ ar_1 < ar_3 /\ 0 <= ar_1 /\ 0 < ar_0 /\ 0 < a24' /\ ar_2 <= 0 ]
(Comp: 1, Cost: 1) langle_init_rangle_FieldAccess_66(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(langle_init_rangle_Return_68(ar_1, ar_2, o4', arityPad, arityPad, arityPad)) [ o4' <= ar_0 + ar_1 /\ 0 < ar_0 /\ ar_3 = 0 /\ 0 < ar_1 /\ 0 < o4' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5) -> Com_1(main_New_1(ar_0, ar_1, ar_2, ar_3, ar_4, ar_5)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Complexity upper bound 56*ar_1 + 73
Time: 0.523 sec (SMT: 0.440 sec)
(34) BOUNDS(CONSTANT, 73 + 56 * |#1|)