(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 PastaB7 {
    public static void main(int x, int y, int z) {
        while (x > z && y > z) {
            x--;
            y--;
        }
    }
}


(1) JBCToGraph (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
PastaB7.main(III)V: Graph of 57 nodes with 1 SCC.


(3) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(7)) transformation)

Extracted set of 46 edges for the analysis of TIME complexity. Dropped leaves.

(4) Obligation:

Set of 46 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 46 jbc graph edges to a weighted ITS with 46 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 46 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_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(7) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

obtained
main_Load_1(i2, i3, i5, env, static) -{23,23}> main_JMP_195(i2, i3, i5, i9', i10', env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2
by chaining
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0

obtained
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{9,9}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41
by chaining
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(8) Obligation:

IntTrs with 2 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) -{23,23}> main_JMP_195(i2, i3, i5, i9', i10', env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{9,9}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41

(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_JMP_195(x1, x2, x3, x4, x5, x6, x7) → main_JMP_195(x3, x4, x5)

(10) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i9', i10') :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2
main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i79', i84') :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41

(11) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Moved arithmethic from constraints to rhss.

main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i79', i84') :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41
was transformed to
main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i41 + -1, i45 + -1) :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41

main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i9', i10') :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2
was transformed to
main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i2 + -1, i3 + -1) :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2

(12) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i41 + -1, i45 + -1) :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41
main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i2 + -1, i3 + -1) :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2

(13) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Simplified expressions.

main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i2 + -1, i3 + -1) :|: 0 >= 0 && static'1 <= static''' + 1 && i2 + -1 = i9' && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 + -1 = i10' && 0 < 2
was transformed to
main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i2 - 1, i3 - 1) :|: static'1 <= static''' + 1 && i2 - 1 = i9' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 - 1 = i10'

main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i41 + -1, i45 + -1) :|: 0 >= 0 && i41 + -1 = i79' && i5 < i45 && i45 + -1 = i84' && i5 < i41
was transformed to
main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i41 - 1, i45 - 1) :|: i41 - 1 = i79' && i5 < i45 && i45 - 1 = i84' && i5 < i41

(14) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_1(i2, i3, i5, static) -{23,23}> main_JMP_195(i5, i2 - 1, i3 - 1) :|: static'1 <= static''' + 1 && i2 - 1 = i9' && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1 && i5 < i2 && i5 < i3 && i3 - 1 = i10'
main_JMP_195(i5, i41, i45) -{9,9}> main_JMP_195(i5, i41 - 1, i45 - 1) :|: i41 - 1 = i79' && i5 < i45 && i45 - 1 = i84' && i5 < i41

(15) koat Proof (EQUIVALENT transformation)

YES(?, 9*ar_1 + 9*ar_2 + 23)

Initial complexity problem:
1: T:
(Comp: ?, Cost: 23) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_2, ar_0 - 1, ar_1 - 1, arityPad)) [ static'1 <= static''' + 1 /\ ar_0 - 1 = i9' /\ 0 <= static''' /\ static''' <= ar_3 + 2 /\ 0 <= ar_3 /\ 0 <= static'1 /\ ar_2 < ar_0 /\ ar_2 < ar_1 /\ ar_1 - 1 = i10' ]
(Comp: ?, Cost: 9) main_JMP_195(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_0, ar_1 - 1, ar_2 - 1, arityPad)) [ ar_1 - 1 = i79' /\ ar_0 < ar_2 /\ ar_2 - 1 = i84' /\ ar_0 < ar_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: 1, Cost: 23) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_2, ar_0 - 1, ar_1 - 1, arityPad)) [ static'1 <= static''' + 1 /\ ar_0 - 1 = i9' /\ 0 <= static''' /\ static''' <= ar_3 + 2 /\ 0 <= ar_3 /\ 0 <= static'1 /\ ar_2 < ar_0 /\ ar_2 < ar_1 /\ ar_1 - 1 = i10' ]
(Comp: ?, Cost: 9) main_JMP_195(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_0, ar_1 - 1, ar_2 - 1, arityPad)) [ ar_1 - 1 = i79' /\ ar_0 < ar_2 /\ ar_2 - 1 = i84' /\ ar_0 < ar_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_Load_1) = V_2 - V_3
Pol(main_JMP_195) = -V_1 + V_3
Pol(koat_start) = V_2 - V_3
orients all transitions weakly and the transition
main_JMP_195(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_0, ar_1 - 1, ar_2 - 1, arityPad)) [ ar_1 - 1 = i79' /\ ar_0 < ar_2 /\ ar_2 - 1 = i84' /\ ar_0 < ar_1 ]
strictly and produces the following problem:
3: T:
(Comp: 1, Cost: 23) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_2, ar_0 - 1, ar_1 - 1, arityPad)) [ static'1 <= static''' + 1 /\ ar_0 - 1 = i9' /\ 0 <= static''' /\ static''' <= ar_3 + 2 /\ 0 <= ar_3 /\ 0 <= static'1 /\ ar_2 < ar_0 /\ ar_2 < ar_1 /\ ar_1 - 1 = i10' ]
(Comp: ar_1 + ar_2, Cost: 9) main_JMP_195(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_JMP_195(ar_0, ar_1 - 1, ar_2 - 1, arityPad)) [ ar_1 - 1 = i79' /\ ar_0 < ar_2 /\ ar_2 - 1 = i84' /\ ar_0 < ar_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 9*ar_1 + 9*ar_2 + 23

Time: 0.094 sec (SMT: 0.086 sec)

(16) BOUNDS(CONSTANT, 23 + 9 * |#1| + 9 * |#2|)

(17) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(7)) transformation)

Extracted set of 50 edges for the analysis of TIME complexity. Kept leaves.

(18) Obligation:

Set of 50 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 50 jbc graph edges to a weighted ITS with 50 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 50 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_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(21) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

obtained
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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
by chaining
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0

obtained
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
by chaining
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0

obtained
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
by chaining
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0

obtained
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
by chaining
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0

obtained
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
by chaining
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0

obtained
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
by chaining
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(22) Obligation:

IntTrs with 10 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) -{17,17}> main_LE_54(i2, i3, i5, 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_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45

(23) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Moved arithmethic from constraints to rhss.

main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
was transformed to
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3

main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
was transformed to
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45

(24) Obligation:

IntTrs with 10 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5

(25) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Simplified expressions.

main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
was transformed to
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 - 1, i45 - 1, env, static) :|: i41 - 1 = i79' && i45 - 1 = i84' && i5 < i45

main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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) -{17,17}> main_LE_54(i2, i3, i5, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1

main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
was transformed to
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: i5 < i2

main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
was transformed to
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: i5 < i41

main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
was transformed to
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 - 1, i3 - 1, env, static) :|: i2 - 1 = i9' && i3 - 1 = i10' && i5 < i3

(26) Obligation:

IntTrs with 10 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: i5 < i2
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 - 1, i3 - 1, env, static) :|: i2 - 1 = i9' && i3 - 1 = i10' && i5 < i3
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 - 1, i45 - 1, env, static) :|: i41 - 1 = i79' && i45 - 1 = i84' && i5 < i45
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: i5 < i41
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5

(27) JBCGraphEdgesToCpxIntTrsProof (CONCRETE UPPER BOUND(ID) transformation)

Transformed 50 jbc graph edges to a weighted ITS with 50 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 50 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_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(29) StraightLineCodeCompressionProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

obtained
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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
by chaining
main_Load_1(i2, i3, i5, env, static) -{0,0}> main_Load_4(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_4(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(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_16(a2, i2, i3, i5, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_16(a2, i2, i3, i5, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_18(i2, i3, i5, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_18(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_19(i2, i3, i5, env, static) :|: 0 >= 0
langle_clinit_rangle_New_19(i2, i3, i5, env, static) -{0,0}> langle_clinit_rangle_New_20(i2, i3, i5, env, static) :|: 0 <= static
langle_clinit_rangle_New_20(i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_22(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_25(o2, i2, i3, i5, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_26(o2, NULL, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Load_28(o2, i2, i3, i5, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_28(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_Load_33(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Load_33(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_36(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_37(o2, i2, i3, i5, env, static) -{1,1}> langle_init_rangle_Return_38(o2, i2, i3, i5, env, static) :|: 0 < o2
langle_init_rangle_Return_38(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) -{1,1}> main_LE_54(i2, i3, i5, env, static) :|: 0 >= 0

obtained
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
by chaining
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_57(i2, i3, i5, env, static) :|: i5 < i2
main_LE_57(i2, i3, i5, env, static) -{1,1}> main_Load_61(i2, i3, i5, env, static) :|: i5 < i2
main_Load_61(i2, i3, i5, env, static) -{1,1}> main_Load_65(i2, i3, i5, env, static) :|: 0 >= 0
main_Load_65(i2, i3, i5, env, static) -{1,1}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0

obtained
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
by chaining
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_76(i2, i3, i5, env, static) :|: i5 < i3
main_LE_76(i2, i3, i5, env, static) -{1,1}> main_Inc_82(i2, i3, i5, env, static) :|: i5 < i3
main_Inc_82(i2, i3, i5, env, static) -{1,1}> main_Inc_85(i2, i3, i5, i9, env, static) :|: i2 + -1 = i9
main_Inc_85(i2, i3, i5, i9, env, static) -{1,1}> main_JMP_86(i2, i3, i5, i9, i10, env, static) :|: i3 + -1 = i10
main_JMP_86(i2, i3, i5, i9, i10, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i9, i10, env, static) :|: 0 >= 0

obtained
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
by chaining
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_200(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_200(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_204(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_204(i2, i3, i5, i41, i45, env, static) -{1,1}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0

obtained
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
by chaining
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_214(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_LE_214(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_218(i2, i3, i5, i41, i45, env, static) :|: i5 < i41
main_Load_218(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Load_233(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0
main_Load_233(i2, i3, i5, i45, i41, env, static) -{1,1}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0

obtained
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
by chaining
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_257(i2, i3, i5, i45, i41, env, static) :|: i5 < i45
main_LE_257(i2, i3, i5, i45, i41, env, static) -{1,1}> main_Inc_276(i2, i3, i5, i41, i45, env, static) :|: i5 < i45
main_Inc_276(i2, i3, i5, i41, i45, env, static) -{1,1}> main_Inc_288(i2, i3, i5, i79, i45, env, static) :|: i41 + -1 = i79
main_Inc_288(i2, i3, i5, i79, i45, env, static) -{1,1}> main_JMP_303(i2, i3, i5, i79, i84, env, static) :|: i45 + -1 = i84
main_JMP_303(i2, i3, i5, i79, i84, env, static) -{0,0}> main_JMP_195(i2, i3, i5, i79, i84, env, static) :|: 0 >= 0

(30) Obligation:

IntTrs with 10 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) -{17,17}> main_LE_54(i2, i3, i5, 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_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45

(31) MovedArithmeticFromConstraintsProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Moved arithmethic from constraints to rhss.

main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i9', i10', env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
was transformed to
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3

main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i79', i84', env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
was transformed to
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45

(32) Obligation:

IntTrs with 10 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5

(33) ExpressionSimplificationProof (BOTH CONCRETE BOUNDS(ID, ID) transformation)

Simplified expressions.

main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 + -1, i45 + -1, env, static) :|: 0 >= 0 && i41 + -1 = i79' && i45 + -1 = i84' && i5 < i45
was transformed to
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 - 1, i45 - 1, env, static) :|: i41 - 1 = i79' && i45 - 1 = i84' && i5 < i45

main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, 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) -{17,17}> main_LE_54(i2, i3, i5, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1

main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: 0 >= 0 && i5 < i2
was transformed to
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: i5 < i2

main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: 0 >= 0 && i5 < i41
was transformed to
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: i5 < i41

main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 + -1, i3 + -1, env, static) :|: 0 >= 0 && i2 + -1 = i9' && i3 + -1 = i10' && i5 < i3
was transformed to
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 - 1, i3 - 1, env, static) :|: i2 - 1 = i9' && i3 - 1 = i10' && i5 < i3

(34) Obligation:

IntTrs with 10 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LE_54(i2, i3, i5, env, static) -{3,3}> main_LE_70(i2, i3, i5, env, static) :|: i5 < i2
main_LE_70(i2, i3, i5, env, static) -{0,0}> main_LE_75(i2, i3, i5, env, static) :|: i3 <= i5
main_LE_70(i2, i3, i5, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i2 - 1, i3 - 1, env, static) :|: i2 - 1 = i9' && i3 - 1 = i10' && i5 < i3
main_JMP_195(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_212(i2, i3, i5, i41, i45, env, static) :|: 0 >= 0
main_LE_253(i2, i3, i5, i45, i41, env, static) -{0,0}> main_LE_256(i2, i3, i5, i45, i41, env, static) :|: i45 <= i5
main_Load_1(i2, i3, i5, env, static) -{17,17}> main_LE_54(i2, i3, i5, env, static'1) :|: 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && static'1 <= static''' + 1
main_LE_54(i2, i3, i5, env, static) -{0,0}> main_LE_56(i2, i3, i5, env, static) :|: i2 <= i5
main_LE_253(i2, i3, i5, i45, i41, env, static) -{3,3}> main_JMP_195(i2, i3, i5, i41 - 1, i45 - 1, env, static) :|: i41 - 1 = i79' && i45 - 1 = i84' && i5 < i45
main_LE_212(i2, i3, i5, i41, i45, env, static) -{3,3}> main_LE_253(i2, i3, i5, i45, i41, env, static) :|: i5 < i41
main_LE_212(i2, i3, i5, i41, i45, env, static) -{0,0}> main_LE_213(i2, i3, i5, i41, i45, env, static) :|: i41 <= i5