(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 PastaA10 {
public static void main(int x, int y) {
while (x != y) {
if (x > y) {
y++;
} else {
x++;
}
}
}
}
(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Constructed TerminationGraph.
(2) Obligation:
Termination Graph based on JBC Program:
PastaA10.main(II)V: Graph of 67 nodes with 2 SCCs.
(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(6)) transformation)
Extracted set of 62 edges for the analysis of TIME complexity. Kept leaves.
(4) Obligation:
Set of 62 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: nonterm paths and paths from start to sinks
(5) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 62 jbc graph edges to a weighted ITS with 62 rules.
Used simplified encoding of division and modulo.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Did no encode lower bounds for putfield and astore.
(6) Obligation:
IntTrs with 62 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_2(i2, i4, env, static) -{0,0}> main_Load_4(i2, i4, env, static) :|: 0 >= 0
main_Load_4(i2, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_13(i2, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_13(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_14(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_14(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_15(i2, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_15(i2, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) :|: o1 = 1 && 0 < o1
langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_22(o1, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_init_rangle_Load_22(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Load_25(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_27(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_27(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_29(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_29(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_Return_33(i2, i4, env, static') :|: static' <= static + o1 && 0 <= o1 && 0 <= static && 0 < o1
langle_clinit_rangle_Return_33(i2, i4, env, static) -{1,1}> main_Load_41(i2, i4, env, static) :|: 0 >= 0
main_Load_41(i2, i4, env, static) -{0,0}> main_Load_42(i2, i4, env, static) :|: 0 >= 0
main_Load_42(i2, i4, env, static) -{0,0}> main_Load_43(i2, i4, env, static) :|: 0 <= static
main_Load_43(i2, i4, env, static) -{0,0}> main_Load_45(i2, i4, env, static) :|: 0 >= 0
main_Load_45(i2, i4, env, static) -{0,0}> main_Load_48(i2, i4, env, static) :|: 0 >= 0
main_Load_48(i2, i4, env, static) -{1,1}> main_Load_50(i2, i4, env, static) :|: 0 >= 0
main_Load_50(i2, i4, env, static) -{1,1}> main_EQ_52(i2, i4, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_57(i2, i4, env, static) :|: !(i2 = i4)
main_EQ_57(i2, i4, env, static) -{1,1}> main_Load_60(i2, i4, env, static) :|: !(i2 = i4)
main_Load_60(i2, i4, env, static) -{1,1}> main_Load_62(i2, i4, env, static) :|: 0 >= 0
main_Load_62(i2, i4, env, static) -{1,1}> main_LE_68(i2, i4, env, static) :|: 0 >= 0
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
(7) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_2(
i2,
i4,
env,
static) -{17,17}>
main_EQ_52(
i2,
i4,
env,
static'1) :|: 0 >= 0 &&
0 <
2 &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
static'1 <=
static''' +
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
0 <
1by chaining
main_Load_2(
i2,
i4,
env,
static) -{0,0}>
main_Load_4(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_4(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_13(
i2,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_13(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_15(
i2,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_15(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) :|:
o1 =
1 &&
0 <
o1langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_33(
i2,
i4,
env,
static') :|:
static' <=
static +
o1 &&
0 <=
o1 &&
0 <=
static &&
0 <
o1langle_clinit_rangle_Return_33(
i2,
i4,
env,
static) -{1,1}>
main_Load_41(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_41(
i2,
i4,
env,
static) -{0,0}>
main_Load_42(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_42(
i2,
i4,
env,
static) -{0,0}>
main_Load_43(
i2,
i4,
env,
static) :|:
0 <=
staticmain_Load_43(
i2,
i4,
env,
static) -{0,0}>
main_Load_45(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_45(
i2,
i4,
env,
static) -{0,0}>
main_Load_48(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_48(
i2,
i4,
env,
static) -{1,1}>
main_Load_50(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i4,
env,
static) -{1,1}>
main_EQ_52(
i2,
i4,
env,
static) :|: 0 >= 0
obtained
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
by chaining
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_57(i2, i4, env, static) :|: !(i2 = i4)
main_EQ_57(i2, i4, env, static) -{1,1}> main_Load_60(i2, i4, env, static) :|: !(i2 = i4)
main_Load_60(i2, i4, env, static) -{1,1}> main_Load_62(i2, i4, env, static) :|: 0 >= 0
main_Load_62(i2, i4, env, static) -{1,1}> main_LE_68(i2, i4, env, static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
obtained
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
by chaining
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
obtained
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
by chaining
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
obtained
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
by chaining
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
obtained
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
by chaining
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
(8) Obligation:
IntTrs with 11 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
(9) RemoveDivModProof (CONCRETE UPPER BOUND(ID) transformation)
Removed div and mod.
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
(10) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(11) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(12) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(13) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: i4 < i2 && i4 + 1 = i8'
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i2 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 + 1 = i127' && i64 < i4
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 + 1 = i129' && i66 < i2
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: i2 < i4 && i2 + 1 = i7'
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
was transformed to
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i4 < i2
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
(14) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 + 1 = i129' && i66 < i2
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: i4 < i2 && i4 + 1 = i8'
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 + 1 = i127' && i64 < i4
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: i2 < i4 && i2 + 1 = i7'
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i2 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i4 < i2
(15) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 62 jbc graph edges to a weighted ITS with 62 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.
(16) Obligation:
IntTrs with 62 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_2(i2, i4, env, static) -{0,0}> main_Load_4(i2, i4, env, static) :|: 0 >= 0
main_Load_4(i2, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_13(i2, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_13(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_14(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_14(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_15(i2, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_15(i2, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) :|: o1 = 1 && 0 < o1
langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_22(o1, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_init_rangle_Load_22(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Load_25(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_27(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_27(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_29(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_29(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_Return_33(i2, i4, env, static') :|: static' <= static + o1 && 0 <= o1 && 0 <= static && 0 < o1
langle_clinit_rangle_Return_33(i2, i4, env, static) -{1,1}> main_Load_41(i2, i4, env, static) :|: 0 >= 0
main_Load_41(i2, i4, env, static) -{0,0}> main_Load_42(i2, i4, env, static) :|: 0 >= 0
main_Load_42(i2, i4, env, static) -{0,0}> main_Load_43(i2, i4, env, static) :|: 0 <= static
main_Load_43(i2, i4, env, static) -{0,0}> main_Load_45(i2, i4, env, static) :|: 0 >= 0
main_Load_45(i2, i4, env, static) -{0,0}> main_Load_48(i2, i4, env, static) :|: 0 >= 0
main_Load_48(i2, i4, env, static) -{1,1}> main_Load_50(i2, i4, env, static) :|: 0 >= 0
main_Load_50(i2, i4, env, static) -{1,1}> main_EQ_52(i2, i4, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_57(i2, i4, env, static) :|: !(i2 = i4)
main_EQ_57(i2, i4, env, static) -{1,1}> main_Load_60(i2, i4, env, static) :|: !(i2 = i4)
main_Load_60(i2, i4, env, static) -{1,1}> main_Load_62(i2, i4, env, static) :|: 0 >= 0
main_Load_62(i2, i4, env, static) -{1,1}> main_LE_68(i2, i4, env, static) :|: 0 >= 0
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
(17) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_2(
i2,
i4,
env,
static) -{17,17}>
main_EQ_52(
i2,
i4,
env,
static'1) :|: 0 >= 0 &&
0 <
2 &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
static'1 <=
static''' +
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
0 <
1by chaining
main_Load_2(
i2,
i4,
env,
static) -{0,0}>
main_Load_4(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_4(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_13(
i2,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_13(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_15(
i2,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_15(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) :|:
o1 =
1 &&
0 <
o1langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_33(
i2,
i4,
env,
static') :|:
static' <=
static +
o1 &&
0 <=
o1 &&
0 <=
static &&
0 <
o1langle_clinit_rangle_Return_33(
i2,
i4,
env,
static) -{1,1}>
main_Load_41(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_41(
i2,
i4,
env,
static) -{0,0}>
main_Load_42(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_42(
i2,
i4,
env,
static) -{0,0}>
main_Load_43(
i2,
i4,
env,
static) :|:
0 <=
staticmain_Load_43(
i2,
i4,
env,
static) -{0,0}>
main_Load_45(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_45(
i2,
i4,
env,
static) -{0,0}>
main_Load_48(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_48(
i2,
i4,
env,
static) -{1,1}>
main_Load_50(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i4,
env,
static) -{1,1}>
main_EQ_52(
i2,
i4,
env,
static) :|: 0 >= 0
obtained
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
by chaining
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_57(i2, i4, env, static) :|: !(i2 = i4)
main_EQ_57(i2, i4, env, static) -{1,1}> main_Load_60(i2, i4, env, static) :|: !(i2 = i4)
main_Load_60(i2, i4, env, static) -{1,1}> main_Load_62(i2, i4, env, static) :|: 0 >= 0
main_Load_62(i2, i4, env, static) -{1,1}> main_LE_68(i2, i4, env, static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
obtained
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
by chaining
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
obtained
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
by chaining
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
obtained
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
by chaining
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
obtained
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
by chaining
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
(18) Obligation:
IntTrs with 11 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
(19) RemoveDivModProof (CONCRETE UPPER BOUND(ID) transformation)
Removed div and mod.
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && !(i2 = i4)
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
(20) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(21) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(22) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
(23) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: i4 < i2 && i4 + 1 = i8'
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 < i4
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i2 < i4
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 + 1 = i127' && i64 < i4
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 + 1 = i129' && i66 < i2
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: i2 < i4 && i2 + 1 = i7'
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
was transformed to
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: 0 >= 0 && i2 > i4
was transformed to
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i4 < i2
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
(24) Obligation:
IntTrs with 14 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_EQ_305(i2, i4, i66, env, static) -{5,5}> main_JMP_254(i2, i4, i66 + 1, env, static) :|: i66 + 1 = i129' && i66 < i2
main_Load_2(i2, i4, env, static) -{17,17}> main_EQ_52(i2, i4, env, static'1) :|: 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_56(i4, env, static) :|: i2 = i4
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i4 + 1, env, static) :|: i4 < i2 && i4 + 1 = i8'
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_306(i2, i4, env, static) :|: i64 = i4
main_JMP_253(i2, i4, i64, env, static) -{3,3}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 + 1 = i127' && i64 < i4
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_316(i66, i4, env, static) :|: i2 = i66
main_EQ_297(i2, i4, i64, env, static) -{5,5}> main_JMP_253(i2, i4, i64 + 1, env, static) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i2 + 1, env, static) :|: i2 < i4 && i2 + 1 = i7'
main_JMP_254(i2, i4, i66, env, static) -{3,3}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i2 < i4
main_EQ_52(i2, i4, env, static) -{3,3}> main_LE_68(i2, i4, env, static) :|: i4 < i2
(25) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(6)) transformation)
Extracted set of 59 edges for the analysis of TIME complexity. Dropped leaves.
(26) Obligation:
Set of 59 edges based on JBC Program.
Performed SCC analyses:
- Used field analysis yielded the following read fields:
Considered paths: all paths from start
(27) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)
Transformed 59 jbc graph edges to a weighted ITS with 59 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.
(28) Obligation:
IntTrs with 59 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_Load_2(i2, i4, env, static) -{0,0}> main_Load_4(i2, i4, env, static) :|: 0 >= 0
main_Load_4(i2, i4, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(i2, i4, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_9(iconst_0, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_11(a2, i2, i4, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_13(i2, i4, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_13(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_14(i2, i4, env, static) :|: 0 >= 0
langle_clinit_rangle_New_14(i2, i4, env, static) -{0,0}> langle_clinit_rangle_New_15(i2, i4, env, static) :|: 0 <= static
langle_clinit_rangle_New_15(i2, i4, env, static) -{1,1}> langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) :|: o1 = 1 && 0 < o1
langle_clinit_rangle_Duplicate_16(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_ConstantStackPush_17(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_clinit_rangle_InvokeMethod_20(o1, NULL, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_22(o1, i2, i4, env, static) :|: NULL = 0 && 0 < o1
langle_init_rangle_Load_22(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_24(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Load_25(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Load_25(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_InvokeMethod_26(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_27(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_27(o1, i2, i4, env, static) -{1,1}> langle_init_rangle_Return_29(o1, i2, i4, env, static) :|: 0 < o1
langle_init_rangle_Return_29(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) :|: 0 < o1
langle_clinit_rangle_FieldAccess_31(o1, i2, i4, env, static) -{1,1}> langle_clinit_rangle_Return_33(i2, i4, env, static') :|: static' <= static + o1 && 0 <= o1 && 0 <= static && 0 < o1
langle_clinit_rangle_Return_33(i2, i4, env, static) -{1,1}> main_Load_41(i2, i4, env, static) :|: 0 >= 0
main_Load_41(i2, i4, env, static) -{0,0}> main_Load_42(i2, i4, env, static) :|: 0 >= 0
main_Load_42(i2, i4, env, static) -{0,0}> main_Load_43(i2, i4, env, static) :|: 0 <= static
main_Load_43(i2, i4, env, static) -{0,0}> main_Load_45(i2, i4, env, static) :|: 0 >= 0
main_Load_45(i2, i4, env, static) -{0,0}> main_Load_48(i2, i4, env, static) :|: 0 >= 0
main_Load_48(i2, i4, env, static) -{1,1}> main_Load_50(i2, i4, env, static) :|: 0 >= 0
main_Load_50(i2, i4, env, static) -{1,1}> main_EQ_52(i2, i4, env, static) :|: 0 >= 0
main_EQ_52(i2, i4, env, static) -{0,0}> main_EQ_57(i2, i4, env, static) :|: !(i2 = i4)
main_EQ_57(i2, i4, env, static) -{1,1}> main_Load_60(i2, i4, env, static) :|: !(i2 = i4)
main_Load_60(i2, i4, env, static) -{1,1}> main_Load_62(i2, i4, env, static) :|: 0 >= 0
main_Load_62(i2, i4, env, static) -{1,1}> main_LE_68(i2, i4, env, static) :|: 0 >= 0
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
(29) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
obtained
main_Load_2(
i2,
i4,
env,
static) -{20,20}>
main_LE_68(
i2,
i4,
env,
static'1) :|: 0 >= 0 &&
0 <
2 && !(
i2 =
i4) &&
0 <=
static'1 &&
0 <=
static &&
0 <=
1 &&
static'1 <=
static''' +
1 &&
static''' <=
static +
2 &&
0 <=
static''' &&
0 <=
2 &&
0 <
1by chaining
main_Load_2(
i2,
i4,
env,
static) -{0,0}>
main_Load_4(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_4(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_5(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) :|:
iconst_0 =
0langle_clinit_rangle_ArrayCreate_9(
iconst_0,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) :|:
a2 =
2 &&
iconst_0 =
0 &&
0 <
a2langle_clinit_rangle_FieldAccess_11(
a2,
i2,
i4,
iconst_0,
env,
static) -{1,1}>
langle_clinit_rangle_New_13(
i2,
i4,
env,
static') :|:
0 <=
a2 &&
iconst_0 =
0 &&
static' <=
static +
a2 &&
0 <=
static &&
0 <
a2langle_clinit_rangle_New_13(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) :|: 0 >= 0
langle_clinit_rangle_New_14(
i2,
i4,
env,
static) -{0,0}>
langle_clinit_rangle_New_15(
i2,
i4,
env,
static) :|:
0 <=
staticlangle_clinit_rangle_New_15(
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) :|:
o1 =
1 &&
0 <
o1langle_clinit_rangle_Duplicate_16(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_ConstantStackPush_17(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_clinit_rangle_InvokeMethod_20(
o1,
NULL,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) :|:
NULL =
0 &&
0 <
o1langle_init_rangle_Load_22(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_24(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Load_25(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_InvokeMethod_26(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_27(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_init_rangle_Return_29(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) :|:
0 <
o1langle_clinit_rangle_FieldAccess_31(
o1,
i2,
i4,
env,
static) -{1,1}>
langle_clinit_rangle_Return_33(
i2,
i4,
env,
static') :|:
static' <=
static +
o1 &&
0 <=
o1 &&
0 <=
static &&
0 <
o1langle_clinit_rangle_Return_33(
i2,
i4,
env,
static) -{1,1}>
main_Load_41(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_41(
i2,
i4,
env,
static) -{0,0}>
main_Load_42(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_42(
i2,
i4,
env,
static) -{0,0}>
main_Load_43(
i2,
i4,
env,
static) :|:
0 <=
staticmain_Load_43(
i2,
i4,
env,
static) -{0,0}>
main_Load_45(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_45(
i2,
i4,
env,
static) -{0,0}>
main_Load_48(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_48(
i2,
i4,
env,
static) -{1,1}>
main_Load_50(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_50(
i2,
i4,
env,
static) -{1,1}>
main_EQ_52(
i2,
i4,
env,
static) :|: 0 >= 0
main_EQ_52(
i2,
i4,
env,
static) -{0,0}>
main_EQ_57(
i2,
i4,
env,
static) :|: !(
i2 =
i4)
main_EQ_57(
i2,
i4,
env,
static) -{1,1}>
main_Load_60(
i2,
i4,
env,
static) :|: !(
i2 =
i4)
main_Load_60(
i2,
i4,
env,
static) -{1,1}>
main_Load_62(
i2,
i4,
env,
static) :|: 0 >= 0
main_Load_62(
i2,
i4,
env,
static) -{1,1}>
main_LE_68(
i2,
i4,
env,
static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_73(i2, i4, env, static) :|: i4 < i2
main_LE_73(i2, i4, env, static) -{1,1}> main_Inc_77(i2, i4, env, static) :|: i4 < i2
main_Inc_77(i2, i4, env, static) -{1,1}> main_JMP_79(i2, i4, i8, env, static) :|: i4 + 1 = i8
main_JMP_79(i2, i4, i8, env, static) -{0,0}> main_JMP_254(i2, i4, i8, env, static) :|: 0 >= 0
obtained
main_JMP_254(i2, i4, i66, env, static) -{8,8}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
by chaining
main_JMP_254(i2, i4, i66, env, static) -{1,1}> main_Load_259(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_259(i2, i4, i66, env, static) -{1,1}> main_Load_270(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_270(i2, i4, i66, env, static) -{1,1}> main_EQ_305(i2, i4, i66, env, static) :|: 0 >= 0
main_EQ_305(i2, i4, i66, env, static) -{0,0}> main_EQ_317(i2, i4, i66, env, static) :|: !(i2 = i66)
main_EQ_317(i2, i4, i66, env, static) -{1,1}> main_Load_334(i2, i4, i66, env, static) :|: i66 < i2
main_Load_334(i2, i4, i66, env, static) -{1,1}> main_Load_352(i2, i4, i66, env, static) :|: 0 >= 0
main_Load_352(i2, i4, i66, env, static) -{1,1}> main_LE_412(i2, i4, i66, env, static) :|: 0 >= 0
main_LE_412(i2, i4, i66, env, static) -{0,0}> main_LE_418(i2, i4, i66, env, static) :|: i66 < i2
main_LE_418(i2, i4, i66, env, static) -{1,1}> main_Inc_436(i2, i4, i66, env, static) :|: i66 < i2
main_Inc_436(i2, i4, i66, env, static) -{1,1}> main_JMP_454(i2, i4, i129, env, static) :|: i66 + 1 = i129
main_JMP_454(i2, i4, i129, env, static) -{0,0}> main_JMP_254(i2, i4, i129, env, static) :|: 0 >= 0
obtained
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
by chaining
main_LE_68(i2, i4, env, static) -{0,0}> main_LE_72(i2, i4, env, static) :|: i2 <= i4
main_LE_72(i2, i4, env, static) -{1,1}> main_Inc_76(i2, i4, env, static) :|: i2 < i4
main_Inc_76(i2, i4, env, static) -{1,1}> main_JMP_78(i2, i4, i7, env, static) :|: i2 + 1 = i7
main_JMP_78(i2, i4, i7, env, static) -{0,0}> main_JMP_253(i2, i4, i7, env, static) :|: 0 >= 0
obtained
main_JMP_253(i2, i4, i64, env, static) -{8,8}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
by chaining
main_JMP_253(i2, i4, i64, env, static) -{1,1}> main_Load_256(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_256(i2, i4, i64, env, static) -{1,1}> main_Load_260(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_260(i2, i4, i64, env, static) -{1,1}> main_EQ_297(i2, i4, i64, env, static) :|: 0 >= 0
main_EQ_297(i2, i4, i64, env, static) -{0,0}> main_EQ_307(i2, i4, i64, env, static) :|: !(i64 = i4)
main_EQ_307(i2, i4, i64, env, static) -{1,1}> main_Load_319(i2, i4, i64, env, static) :|: i64 < i4
main_Load_319(i2, i4, i64, env, static) -{1,1}> main_Load_341(i2, i4, i64, env, static) :|: 0 >= 0
main_Load_341(i2, i4, i64, env, static) -{1,1}> main_LE_387(i2, i4, i64, env, static) :|: 0 >= 0
main_LE_387(i2, i4, i64, env, static) -{0,0}> main_LE_417(i2, i4, i64, env, static) :|: i64 <= i4
main_LE_417(i2, i4, i64, env, static) -{1,1}> main_Inc_433(i2, i4, i64, env, static) :|: i64 < i4
main_Inc_433(i2, i4, i64, env, static) -{1,1}> main_JMP_449(i2, i4, i127, env, static) :|: i64 + 1 = i127
main_JMP_449(i2, i4, i127, env, static) -{0,0}> main_JMP_253(i2, i4, i127, env, static) :|: 0 >= 0
(30) Obligation:
IntTrs with 5 rules
Start term: main_Load_2(#0, #1, env, static)
Considered paths: all paths from start
Rules:
main_Load_2(i2, i4, env, static) -{20,20}> main_LE_68(i2, i4, env, static'1) :|: 0 >= 0 && 0 < 2 && !(i2 = i4) && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_254(i2, i4, i8', env, static) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_JMP_254(i2, i4, i66, env, static) -{8,8}> main_JMP_254(i2, i4, i129', env, static) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
main_LE_68(i2, i4, env, static) -{2,2}> main_JMP_253(i2, i4, i7', env, static) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_JMP_253(i2, i4, i64, env, static) -{8,8}> main_JMP_253(i2, i4, i127', env, static) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
(31) 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_2(x1, x2, x3, x4) → main_Load_2(x1, x2, x4)
main_LE_68(x1, x2, x3, x4) → main_LE_68(x1, x2)
main_JMP_254(x1, x2, x3, x4, x5) → main_JMP_254(x1, x3)
main_JMP_253(x1, x2, x3, x4, x5) → main_JMP_253(x2, x3)
(32) Obligation:
IntTrs with 5 rules
Start term: main_Load_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && !(i2 = i4) && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i8') :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i7') :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
(33) RemoveDivModProof (CONCRETE UPPER BOUND(ID) transformation)
Removed div and mod.
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && !(i64 = i4)
was transformed to
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && !(i2 = i66)
was transformed to
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && !(i2 = i4) && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
was transformed to
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 > i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 < i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
(34) Obligation:
IntTrs with 8 rules
Start term: main_Load_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 > i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i7') :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i8') :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 < i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
(35) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Moved arithmethic from constraints to rhss.
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i129') :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i127') :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i7') :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i2 + 1) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i8') :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i4 + 1) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
(36) Obligation:
IntTrs with 8 rules
Start term: main_Load_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 > i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i2 + 1) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 < i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i4 + 1) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
(37) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)
Simplified expressions.
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 < i4
was transformed to
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: i64 + 1 = i127' && i64 < i4
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 > i66
was transformed to
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: i66 + 1 = i129' && i66 < i2
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 > i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
was transformed to
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: i4 < i2 && 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i2 + 1) :|: 0 >= 0 && i2 < i4 && i2 + 1 = i7' && i2 <= i4
was transformed to
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i2 + 1) :|: i2 < i4 && i2 + 1 = i7'
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: 0 >= 0 && 0 < 2 && i2 < i4 && 0 <= static'1 && 0 <= static && 0 <= 1 && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 < 1
was transformed to
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: i2 < i4 && 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: 0 >= 0 && i64 < i4 && i64 <= i4 && i64 + 1 = i127' && i64 > i4
was transformed to
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: 0 >= 0 && i66 < i2 && i66 + 1 = i129' && i2 < i66
was transformed to
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i4 + 1) :|: 0 >= 0 && i4 < i2 && i4 + 1 = i8'
was transformed to
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i4 + 1) :|: i4 < i2 && i4 + 1 = i8'
(38) Obligation:
IntTrs with 8 rules
Start term: main_Load_2(#0, #1, static)
Considered paths: all paths from start
Rules:
main_LE_68(i2, i4) -{2,2}> main_JMP_253(i4, i2 + 1) :|: i2 < i4 && i2 + 1 = i7'
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: i66 < i2 && i66 + 1 = i129' && i2 < i66
main_LE_68(i2, i4) -{2,2}> main_JMP_254(i2, i4 + 1) :|: i4 < i2 && i4 + 1 = i8'
main_JMP_254(i2, i66) -{8,8}> main_JMP_254(i2, i66 + 1) :|: i66 + 1 = i129' && i66 < i2
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: i64 + 1 = i127' && i64 < i4
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: i4 < i2 && 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_Load_2(i2, i4, static) -{20,20}> main_LE_68(i2, i4) :|: i2 < i4 && 0 <= static'1 && 0 <= static && static'1 <= static''' + 1 && static''' <= static + 2 && 0 <= static'''
main_JMP_253(i4, i64) -{8,8}> main_JMP_253(i4, i64 + 1) :|: i64 < i4 && i64 + 1 = i127' && i4 < i64
(39) koat Proof (EQUIVALENT transformation)
YES(?, 32*ar_0 + 32*ar_1 + 76)
Initial complexity problem:
1: T:
(Comp: ?, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\ ar_0 + 1 = i7' ]
(Comp: ?, Cost: 8) main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i129' /\ ar_0 < ar_1 ]
(Comp: ?, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i8' ]
(Comp: ?, Cost: 8) main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
(Comp: ?, Cost: 8) main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
(Comp: ?, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: ?, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: ?, Cost: 8) main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i127' /\ ar_0 < ar_1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Testing for reachability in the complexity graph removes the following transitions from problem 1:
main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i129' /\ ar_0 < ar_1 ]
main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i127' /\ ar_0 < ar_1 ]
We thus obtain the following problem:
2: T:
(Comp: ?, Cost: 8) main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
(Comp: ?, Cost: 8) main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
(Comp: ?, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\ ar_0 + 1 = i7' ]
(Comp: ?, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i8' ]
(Comp: ?, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: ?, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Repeatedly propagating knowledge in problem 2 produces the following problem:
3: T:
(Comp: ?, Cost: 8) main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
(Comp: ?, Cost: 8) main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
(Comp: 1, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\ ar_0 + 1 = i7' ]
(Comp: 1, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i8' ]
(Comp: 1, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: 1, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
A polynomial rank function with
Pol(main_JMP_254) = V_1 - V_2
Pol(main_JMP_253) = V_1 - V_2
and size complexities
S("koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-0) = ar_0
S("koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-1) = ar_1
S("koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]", 0-2) = ar_2
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-0) = ar_0
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-1) = ar_1
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-2) = ?
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-0) = ar_0
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-1) = ar_1
S("main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\\ 0 <= static'1 /\\ 0 <= ar_2 /\\ static'1 <= static''' + 1 /\\ static''' <= ar_2 + 2 /\\ 0 <= static''' ]", 0-2) = ?
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\\ ar_1 + 1 = i8' ]", 0-0) = ar_0
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\\ ar_1 + 1 = i8' ]", 0-1) = ar_1 + 1
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\\ ar_1 + 1 = i8' ]", 0-2) = ?
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\\ ar_0 + 1 = i7' ]", 0-0) = ar_1
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\\ ar_0 + 1 = i7' ]", 0-1) = ar_0 + 1
S("main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\\ ar_0 + 1 = i7' ]", 0-2) = ?
S("main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\\ ar_1 < ar_0 ]", 0-0) = ar_1
S("main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\\ ar_1 < ar_0 ]", 0-1) = ?
S("main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\\ ar_1 < ar_0 ]", 0-2) = ?
S("main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\\ ar_1 < ar_0 ]", 0-0) = ar_0
S("main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\\ ar_1 < ar_0 ]", 0-1) = ?
S("main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\\ ar_1 < ar_0 ]", 0-2) = ?
orients the transitions
main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
weakly and the transitions
main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
strictly and produces the following problem:
4: T:
(Comp: 2*ar_0 + 2*ar_1 + 2, Cost: 8) main_JMP_254(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i129' /\ ar_1 < ar_0 ]
(Comp: 2*ar_0 + 2*ar_1 + 2, Cost: 8) main_JMP_253(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_0, ar_1 + 1, arityPad)) [ ar_1 + 1 = i127' /\ ar_1 < ar_0 ]
(Comp: 1, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_253(ar_1, ar_0 + 1, arityPad)) [ ar_0 < ar_1 /\ ar_0 + 1 = i7' ]
(Comp: 1, Cost: 2) main_LE_68(ar_0, ar_1, ar_2) -> Com_1(main_JMP_254(ar_0, ar_1 + 1, arityPad)) [ ar_1 < ar_0 /\ ar_1 + 1 = i8' ]
(Comp: 1, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_0 < ar_1 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: 1, Cost: 20) main_Load_2(ar_0, ar_1, ar_2) -> Com_1(main_LE_68(ar_0, ar_1, arityPad)) [ ar_1 < ar_0 /\ 0 <= static'1 /\ 0 <= ar_2 /\ static'1 <= static''' + 1 /\ static''' <= ar_2 + 2 /\ 0 <= static''' ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2) -> Com_1(main_Load_2(ar_0, ar_1, ar_2)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0
Complexity upper bound 32*ar_0 + 32*ar_1 + 76
Time: 0.156 sec (SMT: 0.143 sec)
(40) BOUNDS(CONSTANT, 76 + 32 * |#0| + 32 * |#1|)