(0) Obligation:
Need to prove time_complexity of the following program:
/**
* Example taken from "A Term Rewriting Approach to the Automated Termination
* Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf)
* and converted to Java.
*/
public class PastaB13 {
public static void main(int x, int y, int z) {
while (x > z || y > z) {
if (x > z) {
x--;
} else if (y > z) {
y--;
} else {
continue;
}
}
}
}
(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(2) Obligation:
Termination Graph based on JBC Program:
PastaB13.main(III)V: Graph of 56 nodes with 1 SCC.
(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(2)) transformation)
Extracted set of 54 edges for the analysis of TIME complexity. Dropped leaves.
(4) Obligation:
Set of 54 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 54 jbc graph edges to a weighted ITS with 54 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 54 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: all paths from start
Rules:
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_3(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_3(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_18(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, i5, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, i5, env, static) -{1,1}> main_Load_46(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_46(i2, i3, i5, env, static) -{0,0}> main_Load_47(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_47(i2, i3, i5, env, static) -{0,0}> main_Load_48(i2, i3, i5, env, static) :|: 0 <= static
main_Load_48(i2, i3, i5, env, static) -{0,0}> main_Load_49(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_49(i2, i3, i5, env, static) -{0,0}> main_Load_50(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_50(i2, i3, i5, env, static) -{1,1}> main_Load_51(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_51(i2, i3, i5, env, static) -{0,0}> main_Load_704(i2, i3, i5, i2, i3, env, static) :|: 0 >= 0
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
(7) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_1(
i2,
i3,
i5,
env,
static) -{16,16}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static'1) :|: 0 >= 0 &&
0 <
2 &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
0 <
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
static'1 <=
static''' +
1by chaining
main_Load_1(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_3(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_3(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_46(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_46(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_47(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_47(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_48(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticmain_Load_48(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_49(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_49(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_50(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_51(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_51(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{13,13}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
(8) Obligation:
IntTrs with 4 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: all paths from start
Rules:
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{13,13}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
(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_Load_1(x1, x2, x3, x4, x5) → main_Load_1(x1, x2, x3, x5)
main_GT_705(x1, x2, x3, x4, x5, x6, x7) → main_GT_705(x3, x4, x5)
main_Load_704(x1, x2, x3, x4, x5, x6, x7) → main_Load_704(x3, x4, x5)
(10) Obligation:
IntTrs with 4 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_1(i2, i3, i5, static) -{16,16}> main_Load_704(i5, i2, i3) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_Load_704(i5, i348, i349) -{1,1}> main_GT_705(i5, i348, i349) :|: 0 >= 0
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i360') :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i356', i349) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
(11) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i360') :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
was transformed to
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i349 + -1) :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i356', i349) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i348 + -1, i349) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
(12) Obligation:
IntTrs with 4 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i349 + -1) :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
main_Load_704(i5, i348, i349) -{1,1}> main_GT_705(i5, i348, i349) :|: 0 >= 0
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i348 + -1, i349) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
main_Load_1(i2, i3, i5, static) -{16,16}> main_Load_704(i5, i2, i3) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
(13) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i348 + -1, i349) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i348 - 1, i349) :|: i348 - 1 = i356' && i5 < i348
main_Load_1(i2, i3, i5, static) -{16,16}> main_Load_704(i5, i2, i3) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
was transformed to
main_Load_1(i2, i3, i5, static) -{16,16}> main_Load_704(i5, i2, i3) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i349 + -1) :|: 0 >= 0 && i348 <= i5 && i5 < i349 && i349 + -1 = i360'
was transformed to
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i349 - 1) :|: i348 <= i5 && i5 < i349 && i349 - 1 = i360'
(14) Obligation:
IntTrs with 4 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_GT_705(i5, i348, i349) -{13,13}> main_Load_704(i5, i348, i349 - 1) :|: i348 <= i5 && i5 < i349 && i349 - 1 = i360'
main_GT_705(i5, i348, i349) -{7,7}> main_Load_704(i5, i348 - 1, i349) :|: i348 - 1 = i356' && i5 < i348
main_Load_704(i5, i348, i349) -{1,1}> main_GT_705(i5, i348, i349) :|: 0 >= 0
main_Load_1(i2, i3, i5, static) -{16,16}> main_Load_704(i5, i2, i3) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
(15) koat Proof (EQUIVALENT transformation)
YES(?, 14*ar_1 + 22*ar_2 + 8*ar_0 + 17)
Initial complexity problem:
1: T:
(Comp: ?, Cost: 13) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
(Comp: ?, Cost: 7) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
(Comp: ?, Cost: 1) main_Load_704(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_GT_705(ar_0, ar_1, ar_2, arityPad)) [ 0 >= 0 ]
(Comp: ?, Cost: 16) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_2, ar_0, ar_1, arityPad)) [ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(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: ?, Cost: 13) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
(Comp: ?, Cost: 7) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
(Comp: ?, Cost: 1) main_Load_704(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_GT_705(ar_0, ar_1, ar_2, arityPad)) [ 0 >= 0 ]
(Comp: 1, Cost: 16) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_2, ar_0, ar_1, arityPad)) [ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
A polynomial rank function with
Pol(main_GT_705) = -V_1 + V_3
Pol(main_Load_704) = -V_1 + V_3
Pol(main_Load_1) = V_2 - V_3
Pol(koat_start) = V_2 - V_3
orients all transitions weakly and the transition
main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
strictly and produces the following problem:
3: T:
(Comp: ar_1 + ar_2, Cost: 13) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
(Comp: ?, Cost: 7) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
(Comp: ?, Cost: 1) main_Load_704(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_GT_705(ar_0, ar_1, ar_2, arityPad)) [ 0 >= 0 ]
(Comp: 1, Cost: 16) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_2, ar_0, ar_1, arityPad)) [ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
A polynomial rank function with
Pol(main_GT_705) = -V_1 + V_2
Pol(main_Load_704) = -V_1 + V_2
Pol(main_Load_1) = V_1 - V_3
Pol(koat_start) = V_1 - V_3
orients all transitions weakly and the transition
main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
strictly and produces the following problem:
4: T:
(Comp: ar_1 + ar_2, Cost: 13) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
(Comp: ar_0 + ar_2, Cost: 7) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
(Comp: ?, Cost: 1) main_Load_704(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_GT_705(ar_0, ar_1, ar_2, arityPad)) [ 0 >= 0 ]
(Comp: 1, Cost: 16) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_2, ar_0, ar_1, arityPad)) [ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Repeatedly propagating knowledge in problem 4 produces the following problem:
5: T:
(Comp: ar_1 + ar_2, Cost: 13) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1, ar_2 - 1, arityPad)) [ ar_1 <= ar_0 /\ ar_0 < ar_2 /\ ar_2 - 1 = i360' ]
(Comp: ar_0 + ar_2, Cost: 7) main_GT_705(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_0, ar_1 - 1, ar_2, arityPad)) [ ar_1 - 1 = i356' /\ ar_0 < ar_1 ]
(Comp: ar_0 + 2*ar_2 + ar_1 + 1, Cost: 1) main_Load_704(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_GT_705(ar_0, ar_1, ar_2, arityPad)) [ 0 >= 0 ]
(Comp: 1, Cost: 16) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_704(ar_2, ar_0, ar_1, arityPad)) [ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Complexity upper bound 14*ar_1 + 22*ar_2 + 8*ar_0 + 17
Time: 0.078 sec (SMT: 0.068 sec)
(16) BOUNDS(CONSTANT, 17 + 8 * |#0| + 14 * |#1| + 22 * |#2|)
(17) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(2)) transformation)
Extracted set of 55 edges for the analysis of TIME complexity. Kept leaves.
(18) Obligation:
Set of 55 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 55 jbc graph edges to a weighted ITS with 55 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 55 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_3(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_3(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_18(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, i5, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, i5, env, static) -{1,1}> main_Load_46(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_46(i2, i3, i5, env, static) -{0,0}> main_Load_47(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_47(i2, i3, i5, env, static) -{0,0}> main_Load_48(i2, i3, i5, env, static) :|: 0 <= static
main_Load_48(i2, i3, i5, env, static) -{0,0}> main_Load_49(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_49(i2, i3, i5, env, static) -{0,0}> main_Load_50(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_50(i2, i3, i5, env, static) -{1,1}> main_Load_51(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_51(i2, i3, i5, env, static) -{0,0}> main_Load_704(i2, i3, i5, i2, i3, env, static) :|: 0 >= 0
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
(21) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_1(
i2,
i3,
i5,
env,
static) -{16,16}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static'1) :|: 0 >= 0 &&
0 <
2 &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
0 <
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
static'1 <=
static''' +
1by chaining
main_Load_1(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_3(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_3(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_46(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_46(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_47(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_47(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_48(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticmain_Load_48(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_49(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_49(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_50(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_51(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_51(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
obtained
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
by chaining
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
(22) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
(23) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
was transformed to
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
(24) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
(25) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
was transformed to
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 - 1, env, static) :|: i5 < i349 && i349 - 1 = i360' && i348 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 - 1, i349, env, static) :|: i348 - 1 = i356' && i5 < i348
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
was transformed to
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
(26) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 - 1, i349, env, static) :|: i348 - 1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 - 1, env, static) :|: i5 < i349 && i349 - 1 = i360' && i348 <= i5
(27) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 55 jbc graph edges to a weighted ITS with 55 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.
(28) Obligation:
IntTrs with 55 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_3(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_3(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_14(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_18(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Return_40(i2, i3, i5, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i2, i3, i5, env, static) -{1,1}> main_Load_46(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_46(i2, i3, i5, env, static) -{0,0}> main_Load_47(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_47(i2, i3, i5, env, static) -{0,0}> main_Load_48(i2, i3, i5, env, static) :|: 0 <= static
main_Load_48(i2, i3, i5, env, static) -{0,0}> main_Load_49(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_49(i2, i3, i5, env, static) -{0,0}> main_Load_50(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_50(i2, i3, i5, env, static) -{1,1}> main_Load_51(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_51(i2, i3, i5, env, static) -{0,0}> main_Load_704(i2, i3, i5, i2, i3, env, static) :|: 0 >= 0
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
(29) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_1(
i2,
i3,
i5,
env,
static) -{16,16}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static'1) :|: 0 >= 0 &&
0 <
2 &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
0 <
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
static'1 <=
static''' +
1by chaining
main_Load_1(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_3(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_3(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_12(
iconst_0,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_14(
a2,
i2,
i3,
i5,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_16(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_18(
i2,
i3,
i5,
env,
static) -{0,0}>
langle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_19(
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2 &&
o2 =
1langle_clinit_rangle_Duplicate_20(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_ConstantStackPush_22(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_clinit_rangle_InvokeMethod_23(
o2,
NULL,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) :|:
NULL =
0 &&
0 <
o2langle_init_rangle_Load_25(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_27(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Load_29(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_InvokeMethod_31(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_34(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_init_rangle_Return_36(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) :|:
0 <
o2langle_clinit_rangle_FieldAccess_39(
o2,
i2,
i3,
i5,
env,
static) -{1,1}>
langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static') :|:
0 <
o2 &&
0 <=
o2 &&
0 <=
static &&
static' <=
static +
o2langle_clinit_rangle_Return_40(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_46(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_46(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_47(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_47(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_48(
i2,
i3,
i5,
env,
static) :|:
0 <=
staticmain_Load_48(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_49(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_49(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_50(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i3,
i5,
env,
static) -{1,1}>
main_Load_51(
i2,
i3,
i5,
env,
static) :|: 0 >= 0
main_Load_51(
i2,
i3,
i5,
env,
static) -{0,0}>
main_Load_704(
i2,
i3,
i5,
i2,
i3,
env,
static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_707(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_GT_707(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_709(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_709(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_711(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_711(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
obtained
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
by chaining
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_716(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_716(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Load_719(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Load_719(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_722(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_722(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_724(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_724(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_726(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_LE_726(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_727(i2, i3, i5, i348, i349, env, static) :|: i348 <= i5
main_Load_727(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_728(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_Load_728(i2, i3, i5, i349, i348, env, static) -{1,1}> main_LE_729(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0
main_LE_729(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_730(i2, i3, i5, i349, i348, env, static) :|: i5 < i349
main_LE_730(i2, i3, i5, i349, i348, env, static) -{1,1}> main_Inc_731(i2, i3, i5, i348, i349, env, static) :|: i5 < i349
main_Inc_731(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_732(i2, i3, i5, i348, i360, env, static) :|: i349 + -1 = i360
main_JMP_732(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_733(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_733(i2, i3, i5, i348, i360, env, static) -{1,1}> main_Load_734(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
main_Load_734(i2, i3, i5, i348, i360, env, static) -{0,0}> main_Load_704(i2, i3, i5, i348, i360, env, static) :|: 0 >= 0
obtained
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
by chaining
main_GT_705(i2, i3, i5, i348, i349, env, static) -{0,0}> main_GT_706(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_GT_706(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_708(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Load_708(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Load_710(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_Load_710(i2, i3, i5, i348, i349, env, static) -{1,1}> main_LE_712(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_712(i2, i3, i5, i348, i349, env, static) -{0,0}> main_LE_714(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_LE_714(i2, i3, i5, i348, i349, env, static) -{1,1}> main_Inc_717(i2, i3, i5, i348, i349, env, static) :|: i5 < i348
main_Inc_717(i2, i3, i5, i348, i349, env, static) -{1,1}> main_JMP_720(i2, i3, i5, i356, i349, env, static) :|: i348 + -1 = i356
main_JMP_720(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_723(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_723(i2, i3, i5, i356, i349, env, static) -{1,1}> main_Load_725(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
main_Load_725(i2, i3, i5, i356, i349, env, static) -{0,0}> main_Load_704(i2, i3, i5, i356, i349, env, static) :|: 0 >= 0
(30) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
(31) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i356', i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i360', env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
was transformed to
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
(32) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
(33) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 + -1, env, static) :|: 0 >= 0 && i5 < i349 && i349 + -1 = i360' && i348 <= i5
was transformed to
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 - 1, env, static) :|: i5 < i349 && i349 - 1 = i360' && i348 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 + -1, i349, env, static) :|: 0 >= 0 && i348 + -1 = i356' && i5 < i348
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 - 1, i349, env, static) :|: i348 - 1 = i356' && i5 < i348
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: 0 >= 0 && i348 <= i5
was transformed to
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && static'1 <= static''' + 1
was transformed to
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
(34) Obligation:
IntTrs with 6 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_704(i2, i3, i5, i348, i349, env, static) -{1,1}> main_GT_705(i2, i3, i5, i348, i349, env, static) :|: 0 >= 0
main_LE_713(i2, i3, i5, i349, i348, env, static) -{0,0}> main_LE_715(i2, i3, i5, i349, i348, env, static) :|: i349 <= i5
main_GT_705(i2, i3, i5, i348, i349, env, static) -{3,3}> main_LE_713(i2, i3, i5, i349, i348, env, static) :|: i348 <= i5
main_Load_1(i2, i3, i5, env, static) -{16,16}> main_Load_704(i2, i3, i5, i2, i3, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
main_GT_705(i2, i3, i5, i348, i349, env, static) -{7,7}> main_Load_704(i2, i3, i5, i348 - 1, i349, env, static) :|: i348 - 1 = i356' && i5 < i348
main_LE_713(i2, i3, i5, i349, i348, env, static) -{10,10}> main_Load_704(i2, i3, i5, i348, i349 - 1, env, static) :|: i5 < i349 && i349 - 1 = i360' && i348 <= i5