(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 PastaA9 {
    public static void main(int x, int y, int z) {
        if (y > 0) {
            while (x >= z) {
                z += y;
            }
        }
    }
}


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

Constructed TerminationGraph.

(2) Obligation:

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


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

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

(4) Obligation:

Set of 44 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 44 jbc graph edges to a weighted ITS with 44 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 44 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(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

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

obtained
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
by chaining
main_Load_1(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0

obtained
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
by chaining
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14

obtained
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
by chaining
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14

obtained
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
by chaining
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14

obtained
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
by chaining
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

(8) Obligation:

IntTrs with 8 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(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1

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

Moved arithmethic from constraints to rhss.

main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
was transformed to
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'

(10) Obligation:

IntTrs with 8 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14

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

Simplified expressions.

main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
was transformed to
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1

(12) Obligation:

IntTrs with 8 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14

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

Transformed 44 jbc graph edges to a weighted ITS with 44 rules.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Did no encode lower bounds for putfield and astore.

(14) Obligation:

IntTrs with 44 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(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

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

obtained
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
by chaining
main_Load_1(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0

obtained
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
by chaining
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14

obtained
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
by chaining
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14

obtained
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
by chaining
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14

obtained
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
by chaining
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

(16) Obligation:

IntTrs with 8 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(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1

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

Moved arithmethic from constraints to rhss.

main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27'
was transformed to
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'

(18) Obligation:

IntTrs with 8 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14

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

Simplified expressions.

main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: 0 >= 0 && static'1 <= static''' + 1 && 0 <= 2 && 0 <= static''' && static''' <= static + 2 && 0 < 1 && 0 <= 1 && 0 <= static && 0 <= static'1 && 0 < 2
was transformed to
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1

(20) Obligation:

IntTrs with 8 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: nonterm paths and paths from start to sinks
Rules:
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_170(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i1 < i27
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_72(i1, i14, i6, env, static) :|: 1 <= i14 && i1 < i6
main_LE_52(i1, i13, i6, env, static) -{0,0}> main_LE_53(i1, i13, i6, env, static) :|: i13 <= 0
main_LT_66(i1, i14, i6, env, static) -{1,1}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_166(i1, i14, i6, i27, env, static) -{1,1}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_142(i1, i14, i6, i16, env, static) -{7,7}> main_LT_166(i1, i14, i6, i16 + i14, env, static) :|: 1 <= i14 && i16 + i14 = i27'
main_Load_1(i1, i4, i6, env, static) -{16,16}> main_LE_52(i1, i4, i6, env, static'1) :|: static'1 <= static''' + 1 && 0 <= static''' && static''' <= static + 2 && 0 <= static && 0 <= static'1
main_LE_52(i1, i14, i6, env, static) -{3,3}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14

(21) TerminationGraphToComplexityProof (BOTH CONCRETE BOUNDS(ID, ADD(6)) transformation)

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

(22) Obligation:

Set of 41 edges based on JBC Program.
Performed SCC analyses:
  • Used field analysis yielded the following read fields:

Considered paths: all paths from start

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

Transformed 41 jbc graph edges to a weighted ITS with 41 rules.
Used simplified encoding of division and modulo.
Filtered conditions with variables that do not depend on the variables on the lhs or rhs without taking transitive dependencies into account.
Filtered fields of type java.lang.Object.
Did no encode lower bounds for putfield and astore.

(24) Obligation:

IntTrs with 41 rules
Start term: main_Load_1(#0, #1, #2, env, static)
Considered paths: all paths from start
Rules:
main_Load_1(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

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

obtained
main_Load_1(i1, i4, i6, env, static) -{20,20}> main_Load_142(i1, i4, i6, i6, env, static'1) :|: 1 <= i4 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 >= 0 && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1
by chaining
main_Load_1(i1, i4, i6, env, static) -{0,0}> main_Load_4(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_4(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_ConstantStackPush_6(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) :|: iconst_0 = 0
langle_clinit_rangle_ArrayCreate_12(iconst_0, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) :|: a2 = 2 && iconst_0 = 0 && 0 < a2
langle_clinit_rangle_FieldAccess_13(a2, i1, i4, i6, iconst_0, env, static) -{1,1}> langle_clinit_rangle_New_16(i1, i4, i6, env, static') :|: 0 <= a2 && iconst_0 = 0 && static' <= static + a2 && 0 <= static && 0 < a2
langle_clinit_rangle_New_16(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_17(i1, i4, i6, env, static) :|: 0 >= 0
langle_clinit_rangle_New_17(i1, i4, i6, env, static) -{0,0}> langle_clinit_rangle_New_19(i1, i4, i6, env, static) :|: 0 <= static
langle_clinit_rangle_New_19(i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) :|: 0 < o2 && o2 = 1
langle_clinit_rangle_Duplicate_20(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_ConstantStackPush_22(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_clinit_rangle_InvokeMethod_23(o2, NULL, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) :|: NULL = 0 && 0 < o2
langle_init_rangle_Load_25(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_27(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Load_29(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_InvokeMethod_31(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_34(o2, i1, i4, i6, env, static) -{1,1}> langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_init_rangle_Return_36(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) :|: 0 < o2
langle_clinit_rangle_FieldAccess_39(o2, i1, i4, i6, env, static) -{1,1}> langle_clinit_rangle_Return_40(i1, i4, i6, env, static') :|: 0 < o2 && 0 <= o2 && 0 <= static && static' <= static + o2
langle_clinit_rangle_Return_40(i1, i4, i6, env, static) -{1,1}> main_Load_45(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_45(i1, i4, i6, env, static) -{0,0}> main_Load_46(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_46(i1, i4, i6, env, static) -{0,0}> main_Load_47(i1, i4, i6, env, static) :|: 0 <= static
main_Load_47(i1, i4, i6, env, static) -{0,0}> main_Load_48(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_48(i1, i4, i6, env, static) -{0,0}> main_Load_49(i1, i4, i6, env, static) :|: 0 >= 0
main_Load_49(i1, i4, i6, env, static) -{1,1}> main_LE_52(i1, i4, i6, env, static) :|: 0 >= 0
main_LE_52(i1, i14, i6, env, static) -{0,0}> main_LE_54(i1, i14, i6, env, static) :|: 1 <= i14
main_LE_54(i1, i14, i6, env, static) -{1,1}> main_Load_58(i1, i14, i6, env, static) :|: 1 <= i14 && 0 < i14
main_Load_58(i1, i14, i6, env, static) -{1,1}> main_Load_62(i1, i14, i6, env, static) :|: 1 <= i14
main_Load_62(i1, i14, i6, env, static) -{1,1}> main_LT_66(i1, i14, i6, env, static) :|: 1 <= i14
main_LT_66(i1, i14, i6, env, static) -{0,0}> main_LT_73(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_LT_73(i1, i14, i6, env, static) -{1,1}> main_Load_80(i1, i14, i6, env, static) :|: 1 <= i14 && i6 <= i1
main_Load_80(i1, i14, i6, env, static) -{0,0}> main_Load_142(i1, i14, i6, i6, env, static) :|: 1 <= i14

obtained
main_Load_142(i1, i14, i6, i16, env, static) -{8,8}> main_Load_142(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1
by chaining
main_Load_142(i1, i14, i6, i16, env, static) -{1,1}> main_Load_144(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_Load_144(i1, i14, i6, i16, env, static) -{1,1}> main_IntArithmetic_145(i1, i14, i6, i16, env, static) :|: 1 <= i14
main_IntArithmetic_145(i1, i14, i6, i16, env, static) -{1,1}> main_Store_148(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i16 + i14 = i27
main_Store_148(i1, i14, i6, i27, env, static) -{1,1}> main_JMP_150(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_JMP_150(i1, i14, i6, i27, env, static) -{1,1}> main_Load_157(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_157(i1, i14, i6, i27, env, static) -{1,1}> main_Load_158(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_Load_158(i1, i14, i6, i27, env, static) -{1,1}> main_LT_166(i1, i14, i6, i27, env, static) :|: 1 <= i14
main_LT_166(i1, i14, i6, i27, env, static) -{0,0}> main_LT_171(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_LT_171(i1, i14, i6, i27, env, static) -{1,1}> main_Load_175(i1, i14, i6, i27, env, static) :|: 1 <= i14 && i27 <= i1
main_Load_175(i1, i14, i6, i27, env, static) -{0,0}> main_Load_142(i1, i14, i6, i27, env, static) :|: 1 <= i14

(26) 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(i1, i4, i6, env, static) -{20,20}> main_Load_142(i1, i4, i6, i6, env, static'1) :|: 1 <= i4 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 >= 0 && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1
main_Load_142(i1, i14, i6, i16, env, static) -{8,8}> main_Load_142(i1, i14, i6, i27', env, static) :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1

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

Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements:

main_Load_1(x1, x2, x3, x4, x5) → main_Load_1(x1, x2, x3, x5)
main_Load_142(x1, x2, x3, x4, x5, x6) → main_Load_142(x1, x2, x4)

(28) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_1(i1, i4, i6, static) -{20,20}> main_Load_142(i1, i4, i6) :|: 1 <= i4 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 >= 0 && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1
main_Load_142(i1, i14, i16) -{8,8}> main_Load_142(i1, i14, i27') :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1

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

Moved arithmethic from constraints to rhss.

main_Load_142(i1, i14, i16) -{8,8}> main_Load_142(i1, i14, i27') :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1
was transformed to
main_Load_142(i1, i14, i16) -{8,8}> main_Load_142(i1, i14, i16 + i14) :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1

(30) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_142(i1, i14, i16) -{8,8}> main_Load_142(i1, i14, i16 + i14) :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1
main_Load_1(i1, i4, i6, static) -{20,20}> main_Load_142(i1, i4, i6) :|: 1 <= i4 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 >= 0 && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1

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

Simplified expressions.

main_Load_1(i1, i4, i6, static) -{20,20}> main_Load_142(i1, i4, i6) :|: 1 <= i4 && 0 < 2 && 0 <= static'1 && 0 <= static && 0 <= 1 && 0 < 1 && static''' <= static + 2 && 0 <= static''' && 0 <= 2 && 0 >= 0 && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1
was transformed to
main_Load_1(i1, i4, i6, static) -{20,20}> main_Load_142(i1, i4, i6) :|: 1 <= i4 && 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1

(32) Obligation:

IntTrs with 2 rules
Start term: main_Load_1(#0, #1, #2, static)
Considered paths: all paths from start
Rules:
main_Load_142(i1, i14, i16) -{8,8}> main_Load_142(i1, i14, i16 + i14) :|: 1 <= i14 && i16 + i14 = i27' && i27' <= i1
main_Load_1(i1, i4, i6, static) -{20,20}> main_Load_142(i1, i4, i6) :|: 1 <= i4 && 0 <= static'1 && 0 <= static && static''' <= static + 2 && 0 <= static''' && 0 < i4 && i6 <= i1 && static'1 <= static''' + 1

(33) koat Proof (EQUIVALENT transformation)

YES(?, 8*ar_0 + 8*ar_1 + 8*ar_2 + 28)

Initial complexity problem:
1: T:
(Comp: ?, Cost: 8) main_Load_142(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2 + ar_1, arityPad)) [ 1 <= ar_1 /\ ar_2 + ar_1 = i27' /\ i27' <= ar_0 ]
(Comp: ?, Cost: 20) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2, arityPad)) [ 1 <= ar_1 /\ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ 0 < ar_1 /\ ar_2 <= ar_0 /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0

Repeatedly propagating knowledge in problem 1 produces the following problem:
2: T:
(Comp: ?, Cost: 8) main_Load_142(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2 + ar_1, arityPad)) [ 1 <= ar_1 /\ ar_2 + ar_1 = i27' /\ i27' <= ar_0 ]
(Comp: 1, Cost: 20) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2, arityPad)) [ 1 <= ar_1 /\ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ 0 < ar_1 /\ ar_2 <= ar_0 /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0

A polynomial rank function with
Pol(main_Load_142) = V_1 - V_2 - V_3 + 1
Pol(main_Load_1) = V_1 - V_2 - V_3 + 1
Pol(koat_start) = V_1 - V_2 - V_3 + 1
orients all transitions weakly and the transition
main_Load_142(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2 + ar_1, arityPad)) [ 1 <= ar_1 /\ ar_2 + ar_1 = i27' /\ i27' <= ar_0 ]
strictly and produces the following problem:
3: T:
(Comp: ar_0 + ar_1 + ar_2 + 1, Cost: 8) main_Load_142(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2 + ar_1, arityPad)) [ 1 <= ar_1 /\ ar_2 + ar_1 = i27' /\ i27' <= ar_0 ]
(Comp: 1, Cost: 20) main_Load_1(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_142(ar_0, ar_1, ar_2, arityPad)) [ 1 <= ar_1 /\ 0 <= static'1 /\ 0 <= ar_3 /\ static''' <= ar_3 + 2 /\ 0 <= static''' /\ 0 < ar_1 /\ ar_2 <= ar_0 /\ static'1 <= static''' + 1 ]
(Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(main_Load_1(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]
start location: koat_start
leaf cost: 0

Complexity upper bound 8*ar_0 + 8*ar_1 + 8*ar_2 + 28

Time: 0.102 sec (SMT: 0.095 sec)

(34) BOUNDS(CONSTANT, 28 + 8 * |#0| + 8 * |#1| + 8 * |#2|)