(0) Obligation:
Need to prove time_complexity of the following program:
public class MinusMin{
public static int min (int x, int y) {
if (x < y) return x;
else return y;
}
public static void main(int x, int y) {
int res = 0;
while (min(x-1,y) == y) {
y++;
res++;
}
}
}
(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(2) Obligation:
Termination Graph based on JBC Program:
MinusMin.main(II)V: Graph of 79 nodes with 1 SCC.
(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(11)) transformation)
Extracted set of 61 edges for the analysis of TIME complexity. Dropped leaves.
(4) Obligation:
Set of 61 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: all paths from start
(5) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 61 jbc graph edges to a weighted ITS with 61 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.
(6) Obligation:
IntTrs with 61 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{0,0}> main_ConstantStackPush_4(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_4(i1, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Load_28(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, env, static) -{1,1}> main_ConstantStackPush_47(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_47(i1, i4, env, static) -{0,0}> main_ConstantStackPush_49(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_49(i1, i4, env, static) -{0,0}> main_ConstantStackPush_50(i1, i4, env, static) :|: 0 <= static
main_ConstantStackPush_50(i1, i4, env, static) -{0,0}> main_ConstantStackPush_51(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_51(i1, i4, env, static) -{0,0}> main_ConstantStackPush_52(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_52(i1, i4, env, static) -{1,1}> main_Store_53(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Store_53(i1, i4, iconst_0, env, static) -{1,1}> main_Load_54(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_54(i1, i4, iconst_0, env, static) -{1,1}> main_ConstantStackPush_55(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_ConstantStackPush_55(i1, i4, iconst_0, env, static) -{1,1}> main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) -{1,1}> main_Load_58(i1, i4, i6, iconst_0, env, static) :|: i1 - iconst_1 = i6 && iconst_1 = 1 && iconst_0 = 0
main_Load_58(i1, i4, i6, iconst_0, env, static) -{1,1}> main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) :|: iconst_0 = 0
main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) -{1,1}> min_Load_62(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_62(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_64(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_64(i6, i4, i1, iconst_0, env, static) -{1,1}> min_GE_69(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_77(i6, i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_GE_77(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_79(i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_Load_79(i4, i1, iconst_0, env, static) -{1,1}> min_Return_82(i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Return_82(i4, i1, iconst_0, env, static) -{1,1}> main_Load_84(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_84(i1, i4, iconst_0, env, static) -{1,1}> main_NE_99(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_NE_99(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_108(i1, i4, iconst_0, env, static) :|: i4 = i4 && iconst_0 = 0
main_Inc_108(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_113(i1, i4, i13, iconst_0, env, static) :|: i4 + 1 = i13 && iconst_0 = 0
main_Inc_113(i1, i4, i13, iconst_0, env, static) -{1,1}> main_JMP_116(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_JMP_116(i1, i4, i13, iconst_1, env, static) -{1,1}> main_Load_118(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1
main_Load_118(i1, i4, i13, iconst_1, env, static) -{0,0}> main_Load_228(i1, i4, i13, iconst_1, env, static) :|: iconst_1 <= 2 && 1 <= iconst_1 && iconst_1 = 1
main_Load_228(i1, i4, i70, i71, env, static) -{0,0}> main_Load_352(i1, i4, i70, i71, env, static) :|: i71 <= 3 && i71 <= 2 && 1 <= i71
main_Load_352(i1, i4, i132, i133, env, static) -{0,0}> main_Load_435(i1, i4, i132, i133, env, static) :|: 1 <= i133 && i133 <= 3
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(7) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{32,32}>
main_Load_435(
i1,
i4,
i13',
1,
env,
static'1) :|:
i4 <=
i6' &&
1 <=
1 &&
1 <=
3 &&
0 <=
2 &&
static'1 <=
static''' +
1 &&
i1 -
1 =
i6' &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <
1 &&
0 <=
1 &&
0 <=
static &&
0 <=
static'1 && 0 >= 0 &&
1 <=
2 &&
i4 +
1 =
i13' &&
0 <
2by chaining
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_4(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_4(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i1,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i1,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i1,
i4,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i1,
i4,
env,
static) -{1,1}>
main_ConstantStackPush_47(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_47(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_49(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_49(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_50(
i1,
i4,
env,
static) :|:
0 <=
staticmain_ConstantStackPush_50(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_51(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_51(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_52(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_52(
i1,
i4,
env,
static) -{1,1}>
main_Store_53(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Store_53(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_Load_54(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Load_54(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) :|:
iconst_1 =
1 &&
iconst_0 =
0main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) -{1,1}>
main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
i1 -
iconst_1 =
i6 &&
iconst_1 =
1 &&
iconst_0 =
0main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
iconst_0 =
0main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_GE_69(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_GE_69(
i6,
i4,
i1,
iconst_0,
env,
static) -{0,0}>
min_GE_77(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
i4 <=
i6 &&
iconst_0 =
0min_GE_77(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_Load_79(
i4,
i1,
iconst_0,
env,
static) :|:
i4 <=
i6 &&
iconst_0 =
0min_Load_79(
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_Return_82(
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Return_82(
i4,
i1,
iconst_0,
env,
static) -{1,1}>
main_Load_84(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Load_84(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_NE_99(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_NE_99(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_Inc_108(
i1,
i4,
iconst_0,
env,
static) :|:
i4 =
i4 &&
iconst_0 =
0main_Inc_108(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_Inc_113(
i1,
i4,
i13,
iconst_0,
env,
static) :|:
i4 +
1 =
i13 &&
iconst_0 =
0main_Inc_113(
i1,
i4,
i13,
iconst_0,
env,
static) -{1,1}>
main_JMP_116(
i1,
i4,
i13,
iconst_1,
env,
static) :|:
iconst_1 =
1 &&
iconst_0 =
0main_JMP_116(
i1,
i4,
i13,
iconst_1,
env,
static) -{1,1}>
main_Load_118(
i1,
i4,
i13,
iconst_1,
env,
static) :|:
iconst_1 =
1main_Load_118(
i1,
i4,
i13,
iconst_1,
env,
static) -{0,0}>
main_Load_228(
i1,
i4,
i13,
iconst_1,
env,
static) :|:
iconst_1 <=
2 &&
1 <=
iconst_1 &&
iconst_1 =
1main_Load_228(
i1,
i4,
i70,
i71,
env,
static) -{0,0}>
main_Load_352(
i1,
i4,
i70,
i71,
env,
static) :|:
i71 <=
3 &&
i71 <=
2 &&
1 <=
i71main_Load_352(
i1,
i4,
i132,
i133,
env,
static) -{0,0}>
main_Load_435(
i1,
i4,
i132,
i133,
env,
static) :|:
1 <=
i133 &&
i133 <=
3obtained
main_Load_435(i1, i4, i186, i187, env, static) -{15,15}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
by chaining
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(8) Obligation:
IntTrs with 2 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{32,32}> main_Load_435(i1, i4, i13', 1, env, static'1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
main_Load_435(i1, i4, i186, i187, env, static) -{15,15}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
(9) WeightedIntTrsUnneededArgumentFilterProof (CONCRETE UPPER BOUND(ID) transformation)
Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements:
main_ConstantStackPush_2(x1, x2, x3, x4) → main_ConstantStackPush_2(x1, x2, x4)
main_Load_435(x1, x2, x3, x4, x5, x6) → main_Load_435(x1, x2, x3, x4)
(10) Obligation:
IntTrs with 2 rules
Start term: main_ConstantStackPush_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i13', 1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
main_Load_435(i1, i4, i186, i187) -{15,15}> main_Load_435(i1, i4, i241', i243') :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
(11) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_Load_435(i1, i4, i186, i187) -{15,15}> main_Load_435(i1, i4, i241', i243') :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
was transformed to
main_Load_435(i1, i4, i186, i187) -{15,15}> main_Load_435(i1, i4, i186 + 1, i187 + 1) :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i13', 1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i4 + 1, 1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
(12) Obligation:
IntTrs with 2 rules
Start term: main_ConstantStackPush_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_Load_435(i1, i4, i186, i187) -{15,15}> main_Load_435(i1, i4, i186 + 1, i187 + 1) :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i4 + 1, 1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
(13) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i4 + 1, 1) :|: i4 <= i6' && 1 <= 1 && 1 <= 3 && 0 <= 2 && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 1 <= 2 && i4 + 1 = i13' && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i4 + 1, 1) :|: i4 <= i6' && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1 && i4 + 1 = i13'
(14) Obligation:
IntTrs with 2 rules
Start term: main_ConstantStackPush_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_ConstantStackPush_2(i1, i4, static) -{32,32}> main_Load_435(i1, i4, i4 + 1, 1) :|: i4 <= i6' && static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1 && i4 + 1 = i13'
main_Load_435(i1, i4, i186, i187) -{15,15}> main_Load_435(i1, i4, i186 + 1, i187 + 1) :|: i186 <= i198' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i187 + 1 = i243' && i1 - 1 = i198' && i186 + 1 = i241'
(15) koat Proof (EQUIVALENT transformation)
YES(?, 15*ar_0 + 15*ar_1 + 32)
Initial complexity problem:
1: T:
(Comp: ?, Cost: 32) main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_1 + 1, 1)) [ ar_1 <= i6' /\ static'1 <= static''' + 1 /\ ar_0 - 1 = i6' /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 /\ ar_1 + 1 = i13' ]
(Comp: ?, Cost: 15) main_Load_435(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_2 + 1, ar_3 + 1)) [ ar_2 <= i198' /\ 1 <= i243' /\ 2 <= i243' /\ 1 <= ar_3 /\ ar_3 + 1 = i243' /\ ar_0 - 1 = i198' /\ ar_2 + 1 = i241' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Repeatedly propagating knowledge in problem 1 produces the following problem:
2: T:
(Comp: 1, Cost: 32) main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_1 + 1, 1)) [ ar_1 <= i6' /\ static'1 <= static''' + 1 /\ ar_0 - 1 = i6' /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 /\ ar_1 + 1 = i13' ]
(Comp: ?, Cost: 15) main_Load_435(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_2 + 1, ar_3 + 1)) [ ar_2 <= i198' /\ 1 <= i243' /\ 2 <= i243' /\ 1 <= ar_3 /\ ar_3 + 1 = i243' /\ ar_0 - 1 = i198' /\ ar_2 + 1 = i241' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
A polynomial rank function with
Pol(main_ConstantStackPush_2) = V_1 - V_2
Pol(main_Load_435) = V_1 - V_3
Pol(koat_start) = V_1 - V_2
orients all transitions weakly and the transition
main_Load_435(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_2 + 1, ar_3 + 1)) [ ar_2 <= i198' /\ 1 <= i243' /\ 2 <= i243' /\ 1 <= ar_3 /\ ar_3 + 1 = i243' /\ ar_0 - 1 = i198' /\ ar_2 + 1 = i241' ]
strictly and produces the following problem:
3: T:
(Comp: 1, Cost: 32) main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_1 + 1, 1)) [ ar_1 <= i6' /\ static'1 <= static''' + 1 /\ ar_0 - 1 = i6' /\ 0 <= static''' /\ static''' <= ar_2 + 2 /\ 0 <= ar_2 /\ 0 <= static'1 /\ ar_1 + 1 = i13' ]
(Comp: ar_0 + ar_1, Cost: 15) main_Load_435(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_435(ar_0, ar_1, ar_2 + 1, ar_3 + 1)) [ ar_2 <= i198' /\ 1 <= i243' /\ 2 <= i243' /\ 1 <= ar_3 /\ ar_3 + 1 = i243' /\ ar_0 - 1 = i198' /\ ar_2 + 1 = i241' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_ConstantStackPush_2(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Complexity upper bound 15*ar_0 + 15*ar_1 + 32
Time: 0.073 sec (SMT: 0.066 sec)
(16) BOUNDS(CONSTANT, 32 + 15 * |#0| + 15 * |#1|)
(17) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(11)) transformation)
Extracted set of 63 edges for the analysis of TIME complexity. Kept leaves.
(18) Obligation:
Set of 63 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
(19) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 63 jbc graph edges to a weighted ITS with 63 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.
(20) Obligation:
IntTrs with 63 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{0,0}> main_ConstantStackPush_4(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_4(i1, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Load_28(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, env, static) -{1,1}> main_ConstantStackPush_47(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_47(i1, i4, env, static) -{0,0}> main_ConstantStackPush_49(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_49(i1, i4, env, static) -{0,0}> main_ConstantStackPush_50(i1, i4, env, static) :|: 0 <= static
main_ConstantStackPush_50(i1, i4, env, static) -{0,0}> main_ConstantStackPush_51(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_51(i1, i4, env, static) -{0,0}> main_ConstantStackPush_52(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_52(i1, i4, env, static) -{1,1}> main_Store_53(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Store_53(i1, i4, iconst_0, env, static) -{1,1}> main_Load_54(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_54(i1, i4, iconst_0, env, static) -{1,1}> main_ConstantStackPush_55(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_ConstantStackPush_55(i1, i4, iconst_0, env, static) -{1,1}> main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) -{1,1}> main_Load_58(i1, i4, i6, iconst_0, env, static) :|: i1 - iconst_1 = i6 && iconst_1 = 1 && iconst_0 = 0
main_Load_58(i1, i4, i6, iconst_0, env, static) -{1,1}> main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) :|: iconst_0 = 0
main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) -{1,1}> min_Load_62(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_62(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_64(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_64(i6, i4, i1, iconst_0, env, static) -{1,1}> min_GE_69(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_77(i6, i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_77(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_79(i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_Load_79(i4, i1, iconst_0, env, static) -{1,1}> min_Return_82(i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Return_82(i4, i1, iconst_0, env, static) -{1,1}> main_Load_84(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_84(i1, i4, iconst_0, env, static) -{1,1}> main_NE_99(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_NE_99(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_108(i1, i4, iconst_0, env, static) :|: i4 = i4 && iconst_0 = 0
main_Inc_108(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_113(i1, i4, i13, iconst_0, env, static) :|: i4 + 1 = i13 && iconst_0 = 0
main_Inc_113(i1, i4, i13, iconst_0, env, static) -{1,1}> main_JMP_116(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_JMP_116(i1, i4, i13, iconst_1, env, static) -{1,1}> main_Load_118(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1
main_Load_118(i1, i4, i13, iconst_1, env, static) -{0,0}> main_Load_228(i1, i4, i13, iconst_1, env, static) :|: iconst_1 <= 2 && 1 <= iconst_1 && iconst_1 = 1
main_Load_228(i1, i4, i70, i71, env, static) -{0,0}> main_Load_352(i1, i4, i70, i71, env, static) :|: i71 <= 3 && i71 <= 2 && 1 <= i71
main_Load_352(i1, i4, i132, i133, env, static) -{0,0}> main_Load_435(i1, i4, i132, i133, env, static) :|: 1 <= i133 && i133 <= 3
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(21) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{24,24}>
min_GE_69(
i6',
i4,
i1,
0,
env,
static'1) :|:
static'1 <=
static''' +
1 &&
0 <=
2 &&
i1 -
1 =
i6' &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <
1 &&
0 <=
1 &&
0 <=
static &&
0 <=
static'1 && 0 >= 0 &&
0 <
2by chaining
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_4(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_4(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i1,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i1,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i1,
i4,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i1,
i4,
env,
static) -{1,1}>
main_ConstantStackPush_47(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_47(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_49(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_49(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_50(
i1,
i4,
env,
static) :|:
0 <=
staticmain_ConstantStackPush_50(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_51(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_51(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_52(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_52(
i1,
i4,
env,
static) -{1,1}>
main_Store_53(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Store_53(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_Load_54(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Load_54(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) :|:
iconst_1 =
1 &&
iconst_0 =
0main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) -{1,1}>
main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
i1 -
iconst_1 =
i6 &&
iconst_1 =
1 &&
iconst_0 =
0main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
iconst_0 =
0main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_GE_69(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0obtained
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
by chaining
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_77(i6, i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_GE_77(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_79(i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_Load_79(i4, i1, iconst_0, env, static) -{1,1}> min_Return_82(i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Return_82(i4, i1, iconst_0, env, static) -{1,1}> main_Load_84(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_84(i1, i4, iconst_0, env, static) -{1,1}> main_NE_99(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_NE_99(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_108(i1, i4, iconst_0, env, static) :|: i4 = i4 && iconst_0 = 0
main_Inc_108(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_113(i1, i4, i13, iconst_0, env, static) :|: i4 + 1 = i13 && iconst_0 = 0
main_Inc_113(i1, i4, i13, iconst_0, env, static) -{1,1}> main_JMP_116(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_JMP_116(i1, i4, i13, iconst_1, env, static) -{1,1}> main_Load_118(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1
main_Load_118(i1, i4, i13, iconst_1, env, static) -{0,0}> main_Load_228(i1, i4, i13, iconst_1, env, static) :|: iconst_1 <= 2 && 1 <= iconst_1 && iconst_1 = 1
main_Load_228(i1, i4, i70, i71, env, static) -{0,0}> main_Load_352(i1, i4, i70, i71, env, static) :|: i71 <= 3 && i71 <= 2 && 1 <= i71
main_Load_352(i1, i4, i132, i133, env, static) -{0,0}> main_Load_435(i1, i4, i132, i133, env, static) :|: 1 <= i133 && i133 <= 3
obtained
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
by chaining
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
obtained
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
by chaining
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(22) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(23) MovedArithmeticToConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from lhss to constraints.
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
(24) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
(25) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
was transformed to
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
was transformed to
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
was transformed to
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(26) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(27) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && i4 <= i6 && x = 0
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
(28) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && i4 <= i6 && x = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
(29) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 63 jbc graph edges to a weighted ITS with 63 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.
(30) Obligation:
IntTrs with 63 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{0,0}> main_ConstantStackPush_4(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_4(i1, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Load_28(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, env, static) -{1,1}> main_ConstantStackPush_47(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_47(i1, i4, env, static) -{0,0}> main_ConstantStackPush_49(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_49(i1, i4, env, static) -{0,0}> main_ConstantStackPush_50(i1, i4, env, static) :|: 0 <= static
main_ConstantStackPush_50(i1, i4, env, static) -{0,0}> main_ConstantStackPush_51(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_51(i1, i4, env, static) -{0,0}> main_ConstantStackPush_52(i1, i4, env, static) :|: 0 >= 0
main_ConstantStackPush_52(i1, i4, env, static) -{1,1}> main_Store_53(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Store_53(i1, i4, iconst_0, env, static) -{1,1}> main_Load_54(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_54(i1, i4, iconst_0, env, static) -{1,1}> main_ConstantStackPush_55(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_ConstantStackPush_55(i1, i4, iconst_0, env, static) -{1,1}> main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_IntArithmetic_56(i1, i4, iconst_1, iconst_0, env, static) -{1,1}> main_Load_58(i1, i4, i6, iconst_0, env, static) :|: i1 - iconst_1 = i6 && iconst_1 = 1 && iconst_0 = 0
main_Load_58(i1, i4, i6, iconst_0, env, static) -{1,1}> main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) :|: iconst_0 = 0
main_InvokeMethod_60(i1, i4, i6, iconst_0, env, static) -{1,1}> min_Load_62(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_62(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_64(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Load_64(i6, i4, i1, iconst_0, env, static) -{1,1}> min_GE_69(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_77(i6, i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_77(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_79(i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_Load_79(i4, i1, iconst_0, env, static) -{1,1}> min_Return_82(i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Return_82(i4, i1, iconst_0, env, static) -{1,1}> main_Load_84(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_84(i1, i4, iconst_0, env, static) -{1,1}> main_NE_99(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_NE_99(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_108(i1, i4, iconst_0, env, static) :|: i4 = i4 && iconst_0 = 0
main_Inc_108(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_113(i1, i4, i13, iconst_0, env, static) :|: i4 + 1 = i13 && iconst_0 = 0
main_Inc_113(i1, i4, i13, iconst_0, env, static) -{1,1}> main_JMP_116(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_JMP_116(i1, i4, i13, iconst_1, env, static) -{1,1}> main_Load_118(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1
main_Load_118(i1, i4, i13, iconst_1, env, static) -{0,0}> main_Load_228(i1, i4, i13, iconst_1, env, static) :|: iconst_1 <= 2 && 1 <= iconst_1 && iconst_1 = 1
main_Load_228(i1, i4, i70, i71, env, static) -{0,0}> main_Load_352(i1, i4, i70, i71, env, static) :|: i71 <= 3 && i71 <= 2 && 1 <= i71
main_Load_352(i1, i4, i132, i133, env, static) -{0,0}> main_Load_435(i1, i4, i132, i133, env, static) :|: 1 <= i133 && i133 <= 3
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(31) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{24,24}>
min_GE_69(
i6',
i4,
i1,
0,
env,
static'1) :|:
static'1 <=
static''' +
1 &&
0 <=
2 &&
i1 -
1 =
i6' &&
0 <=
static''' &&
static''' <=
static +
2 &&
0 <
1 &&
0 <=
1 &&
0 <=
static &&
0 <=
static'1 && 0 >= 0 &&
0 <
2by chaining
main_ConstantStackPush_2(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_4(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_4(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_13(
a2,
i1,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i1,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_17(
i1,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i1,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Load_28(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i1,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i1,
i4,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i1,
i4,
env,
static) -{1,1}>
main_ConstantStackPush_47(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_47(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_49(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_49(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_50(
i1,
i4,
env,
static) :|:
0 <=
staticmain_ConstantStackPush_50(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_51(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_51(
i1,
i4,
env,
static) -{0,0}>
main_ConstantStackPush_52(
i1,
i4,
env,
static) :|: 0 >= 0
main_ConstantStackPush_52(
i1,
i4,
env,
static) -{1,1}>
main_Store_53(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Store_53(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_Load_54(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_Load_54(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) :|:
iconst_0 =
0main_ConstantStackPush_55(
i1,
i4,
iconst_0,
env,
static) -{1,1}>
main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) :|:
iconst_1 =
1 &&
iconst_0 =
0main_IntArithmetic_56(
i1,
i4,
iconst_1,
iconst_0,
env,
static) -{1,1}>
main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
i1 -
iconst_1 =
i6 &&
iconst_1 =
1 &&
iconst_0 =
0main_Load_58(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) :|:
iconst_0 =
0main_InvokeMethod_60(
i1,
i4,
i6,
iconst_0,
env,
static) -{1,1}>
min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_62(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0min_Load_64(
i6,
i4,
i1,
iconst_0,
env,
static) -{1,1}>
min_GE_69(
i6,
i4,
i1,
iconst_0,
env,
static) :|:
iconst_0 =
0obtained
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
by chaining
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_77(i6, i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_GE_77(i6, i4, i1, iconst_0, env, static) -{1,1}> min_Load_79(i4, i1, iconst_0, env, static) :|: i4 <= i6 && iconst_0 = 0
min_Load_79(i4, i1, iconst_0, env, static) -{1,1}> min_Return_82(i4, i1, iconst_0, env, static) :|: iconst_0 = 0
min_Return_82(i4, i1, iconst_0, env, static) -{1,1}> main_Load_84(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_Load_84(i1, i4, iconst_0, env, static) -{1,1}> main_NE_99(i1, i4, iconst_0, env, static) :|: iconst_0 = 0
main_NE_99(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_108(i1, i4, iconst_0, env, static) :|: i4 = i4 && iconst_0 = 0
main_Inc_108(i1, i4, iconst_0, env, static) -{1,1}> main_Inc_113(i1, i4, i13, iconst_0, env, static) :|: i4 + 1 = i13 && iconst_0 = 0
main_Inc_113(i1, i4, i13, iconst_0, env, static) -{1,1}> main_JMP_116(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1 && iconst_0 = 0
main_JMP_116(i1, i4, i13, iconst_1, env, static) -{1,1}> main_Load_118(i1, i4, i13, iconst_1, env, static) :|: iconst_1 = 1
main_Load_118(i1, i4, i13, iconst_1, env, static) -{0,0}> main_Load_228(i1, i4, i13, iconst_1, env, static) :|: iconst_1 <= 2 && 1 <= iconst_1 && iconst_1 = 1
main_Load_228(i1, i4, i70, i71, env, static) -{0,0}> main_Load_352(i1, i4, i70, i71, env, static) :|: i71 <= 3 && i71 <= 2 && 1 <= i71
main_Load_352(i1, i4, i132, i133, env, static) -{0,0}> main_Load_435(i1, i4, i132, i133, env, static) :|: 1 <= i133 && i133 <= 3
obtained
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
by chaining
main_Load_435(i1, i4, i186, i187, env, static) -{1,1}> main_ConstantStackPush_437(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_ConstantStackPush_437(i1, i4, i186, i187, env, static) -{1,1}> main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1
main_IntArithmetic_444(i1, i4, iconst_1, i186, i187, env, static) -{1,1}> main_Load_448(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187 && iconst_1 = 1 && i1 - iconst_1 = i198
main_Load_448(i1, i4, i198, i186, i187, env, static) -{1,1}> main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) :|: 1 <= i187
main_InvokeMethod_450(i1, i4, i198, i186, i187, env, static) -{1,1}> min_Load_451(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_451(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_452(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Load_452(i198, i186, i1, i4, i187, env, static) -{1,1}> min_GE_477(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187
obtained
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
by chaining
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_489(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_GE_489(i198, i186, i1, i4, i187, env, static) -{1,1}> min_Load_493(i186, i1, i4, i187, env, static) :|: 1 <= i187 && i186 <= i198
min_Load_493(i186, i1, i4, i187, env, static) -{1,1}> min_Return_501(i186, i1, i4, i187, env, static) :|: 1 <= i187
min_Return_501(i186, i1, i4, i187, env, static) -{1,1}> main_Load_507(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_Load_507(i1, i4, i186, i187, env, static) -{1,1}> main_NE_521(i1, i4, i186, i187, env, static) :|: 1 <= i187
main_NE_521(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_571(i1, i4, i186, i187, env, static) :|: 1 <= i187 && i186 = i186
main_Inc_571(i1, i4, i186, i187, env, static) -{1,1}> main_Inc_575(i1, i4, i241, i187, env, static) :|: i186 + 1 = i241 && 1 <= i187
main_Inc_575(i1, i4, i241, i187, env, static) -{1,1}> main_JMP_584(i1, i4, i241, i243, env, static) :|: 1 <= i187 && i187 + 1 = i243 && 2 <= i243
main_JMP_584(i1, i4, i241, i243, env, static) -{1,1}> main_Load_590(i1, i4, i241, i243, env, static) :|: 2 <= i243
main_Load_590(i1, i4, i241, i243, env, static) -{0,0}> main_Load_435(i1, i4, i241, i243, env, static) :|: 1 <= i243 && 2 <= i243
(32) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(33) MovedArithmeticToConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from lhss to constraints.
min_GE_69(i6, i4, i1, 0, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
(34) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
(35) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, iconst_0, env, static) :|: iconst_0 = 0 && i6 < i4
was transformed to
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i13', 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i198', i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
was transformed to
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i6', i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i241', i243', env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
was transformed to
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(36) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
(37) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && 1 <= 1 && 1 <= 3 && i4 <= i6 && 1 <= 2 && x = 0
was transformed to
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && i4 <= i6 && x = 0
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && 0 <= 2 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 >= 0 && 0 < 2
was transformed to
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
(38) Obligation:
IntTrs with 6 rules
Start term: main_ConstantStackPush_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_435(i1, i4, i186, i187, env, static) -{7,7}> min_GE_477(i1 - 1, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i1 - 1 = i198'
min_GE_69(i6, i4, i1, x, env, static) -{8,8}> main_Load_435(i1, i4, i4 + 1, 1, env, static) :|: i4 + 1 = i13' && i4 <= i6 && x = 0
min_GE_69(i6, i4, i1, iconst_0, env, static) -{0,0}> min_GE_78(i6, i4, i1, 0, env, static) :|: iconst_0 = 0 && i6 < i4
min_GE_477(i198, i186, i1, i4, i187, env, static) -{8,8}> main_Load_435(i1, i4, i186 + 1, i187 + 1, env, static) :|: i186 + 1 = i241' && 1 <= i243' && 2 <= i243' && 1 <= i187 && i186 <= i198 && i187 + 1 = i243'
main_ConstantStackPush_2(i1, i4, env, static) -{24,24}> min_GE_69(i1 - 1, i4, i1, 0, env, static'1) :|: static'1 <= static''' + 1 && i1 - 1 = i6' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
min_GE_477(i198, i186, i1, i4, i187, env, static) -{0,0}> min_GE_490(i198, i186, i1, i4, i187, env, static) :|: 1 <= i187 && i198 < i186