### (0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Power
`public class Power {    public static void main(String args[]) {	for (int i = 0; i < args.length; i++) {	    even(power(args.length, args[i].length()));	    odd( power(args.length, args[i].length()));	}	// power(args.length, args.length);    }    public static int power(int a, int n) {	if (n <= 0) return 1;	else if (n == 1) return a;	else {	    int r = power(a * a, n/2);	    if (n % 2 == 0) return r;	    else return a * r;	}    }    public static boolean even(int n) {	if (n <= 0) return true;	else if (n == 1) return false;	else return odd(n - 1);    }    public static boolean odd(int n) {	if (n <= 0) return false;	else if (n == 1) return true;	else return even(n - 1);    }}`

### (1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

### (2) Obligation:

FIGraph based on JBC Program:
Power.main([Ljava/lang/String;)V: Graph of 172 nodes with 1 SCC.

Power.power(II)I: Graph of 45 nodes with 0 SCCs.

Power.even(I)Z: Graph of 29 nodes with 0 SCCs.

Power.odd(I)Z: Graph of 27 nodes with 0 SCCs.

### (3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Logs:

Log for SCC 0:

Generated 26 rules for P and 26 rules for R.

Combined rules. Obtained 1 rules for P and 5 rules for R.

Filtered ground terms:

924_0_even_GT(x1, x2, x3) → 924_0_even_GT(x2, x3)
Cond_924_0_even_GT(x1, x2, x3, x4) → Cond_924_0_even_GT(x1, x3, x4)
1422_0_odd_Return(x1, x2) → 1422_0_odd_Return(x2)
1224_0_even_Return(x1, x2) → 1224_0_even_Return(x2)
1067_0_even_Return(x1, x2, x3) → 1067_0_even_Return
1372_0_odd_Return(x1, x2, x3) → 1372_0_odd_Return
980_0_even_Return(x1, x2) → 980_0_even_Return(x2)

Filtered duplicate args:

924_0_even_GT(x1, x2) → 924_0_even_GT(x2)
Cond_924_0_even_GT(x1, x2, x3) → Cond_924_0_even_GT(x1, x3)

Combined rules. Obtained 1 rules for P and 5 rules for R.

Finished conversion. Obtained 1 rules for P and 5 rules for R. System has predefined symbols.

Log for SCC 1:

Generated 16 rules for P and 27 rules for R.

Combined rules. Obtained 1 rules for P and 6 rules for R.

Filtered ground terms:

730_0_power_GT(x1, x2, x3) → 730_0_power_GT(x2, x3)
Cond_730_0_power_GT(x1, x2, x3, x4) → Cond_730_0_power_GT(x1, x3, x4)
1287_0_power_Return(x1) → 1287_0_power_Return
Cond_1072_0_power_NE(x1, x2, x3) → Cond_1072_0_power_NE(x1, x3)
1072_0_power_NE(x1, x2) → 1072_0_power_NE(x2)
1188_0_power_Return(x1) → 1188_0_power_Return
845_0_power_Return(x1, x2) → 845_0_power_Return
763_0_power_Return(x1, x2) → 763_0_power_Return

Filtered duplicate args:

730_0_power_GT(x1, x2) → 730_0_power_GT(x2)
Cond_730_0_power_GT(x1, x2, x3) → Cond_730_0_power_GT(x1, x3)

Filtered unneeded arguments:

Cond_1072_0_power_NE(x1, x2) → Cond_1072_0_power_NE(x1)

Combined rules. Obtained 1 rules for P and 6 rules for R.

Finished conversion. Obtained 1 rules for P and 6 rules for R. System has predefined symbols.

Log for SCC 2:

Generated 76 rules for P and 193 rules for R.

Combined rules. Obtained 14 rules for P and 25 rules for R.

Filtered ground terms:

2420_0_even_Load(x1, x2) → 2420_0_even_Load(x2)
1287_0_power_Return(x1, x2) → 1287_0_power_Return(x2)
845_0_power_Return(x1, x2, x3, x4) → 845_0_power_Return(x2, x4)
2595_0_power_Load(x1, x2, x3) → 2595_0_power_Load(x2, x3)
Cond_2420_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod2(x1, x3, x4)
1067_0_even_Return(x1, x2, x3) → 1067_0_even_Return
2636_0_odd_Load(x1, x2) → 2636_0_odd_Load(x2)
2387_0_power_Load(x1, x2, x3) → 2387_0_power_Load(x2, x3)
Cond_2636_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod2(x1, x3, x4)
1372_0_odd_Return(x1, x2, x3) → 1372_0_odd_Return
Cond_2636_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod1(x1, x3, x4)
1347_0_odd_Return(x1, x2) → 1347_0_odd_Return(x2)
1422_0_odd_Return(x1, x2) → 1422_0_odd_Return(x2)
763_0_power_Return(x1, x2, x3, x4) → 763_0_power_Return(x2)
1188_0_power_Return(x1, x2, x3, x4) → 1188_0_power_Return(x2, x3, x4)
Cond_2420_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod1(x1, x3, x4)
980_0_even_Return(x1, x2, x3) → 980_0_even_Return(x2)
1224_0_even_Return(x1, x2) → 1224_0_even_Return(x2)
Cond_1072_0_power_NE(x1, x2, x3, x4, x5) → Cond_1072_0_power_NE(x1, x3, x4, x5)
1072_0_power_NE(x1, x2, x3, x4) → 1072_0_power_NE(x2, x3, x4)
730_0_power_GT(x1, x2, x3, x4) → 730_0_power_GT(x2, x3, x4)
Cond_730_0_power_GT2(x1, x2, x3, x4, x5) → Cond_730_0_power_GT2(x1, x3, x4, x5)
960_0_power_Return(x1, x2, x3) → 960_0_power_Return(x2)
Cond_730_0_power_GT1(x1, x2, x3, x4, x5) → Cond_730_0_power_GT1(x1, x3, x4, x5)
Cond_730_0_power_GT(x1, x2, x3, x4, x5) → Cond_730_0_power_GT(x1, x3)
1300_0_odd_GT(x1, x2, x3) → 1300_0_odd_GT(x2, x3)
Cond_924_0_even_GT3(x1, x2, x3, x4) → Cond_924_0_even_GT3(x1, x3, x4)
924_0_even_GT(x1, x2, x3) → 924_0_even_GT(x2, x3)
1353_0_odd_Return(x1, x2) → 1353_0_odd_Return(x2)
Cond_924_0_even_GT2(x1, x2, x3, x4) → Cond_924_0_even_GT2(x1, x3, x4)
Cond_924_0_even_GT1(x1, x2, x3, x4) → Cond_924_0_even_GT1(x1)
Cond_924_0_even_GT(x1, x2, x3, x4) → Cond_924_0_even_GT(x1, x3, x4)
Cond_1300_0_odd_GT3(x1, x2, x3, x4) → Cond_1300_0_odd_GT3(x1, x3, x4)
1406_0_even_Return(x1, x2) → 1406_0_even_Return(x2)
Cond_1300_0_odd_GT2(x1, x2, x3, x4) → Cond_1300_0_odd_GT2(x1, x3, x4)
Cond_1300_0_odd_GT1(x1, x2, x3, x4) → Cond_1300_0_odd_GT1(x1)
Cond_1300_0_odd_GT(x1, x2, x3, x4) → Cond_1300_0_odd_GT(x1, x3, x4)

Filtered duplicate args:

845_0_power_Return(x1, x2) → 845_0_power_Return(x2)
1188_0_power_Return(x1, x2, x3) → 1188_0_power_Return(x1, x3)
730_0_power_GT(x1, x2, x3) → 730_0_power_GT(x1, x3)
Cond_730_0_power_GT2(x1, x2, x3, x4) → Cond_730_0_power_GT2(x1, x2, x4)
Cond_730_0_power_GT1(x1, x2, x3, x4) → Cond_730_0_power_GT1(x1, x2, x4)
1300_0_odd_GT(x1, x2) → 1300_0_odd_GT(x2)
Cond_924_0_even_GT3(x1, x2, x3) → Cond_924_0_even_GT3(x1, x3)
924_0_even_GT(x1, x2) → 924_0_even_GT(x2)
Cond_924_0_even_GT2(x1, x2, x3) → Cond_924_0_even_GT2(x1, x3)
Cond_924_0_even_GT(x1, x2, x3) → Cond_924_0_even_GT(x1, x3)
Cond_1300_0_odd_GT3(x1, x2, x3) → Cond_1300_0_odd_GT3(x1, x3)
Cond_1300_0_odd_GT2(x1, x2, x3) → Cond_1300_0_odd_GT2(x1, x3)
Cond_1300_0_odd_GT(x1, x2, x3) → Cond_1300_0_odd_GT(x1, x3)

Filtered unneeded arguments:

Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_1300_0_odd_GT(x1, x2) → Cond_1300_0_odd_GT(x1)
Cond_924_0_even_GT(x1, x2) → Cond_924_0_even_GT(x1)
Cond_1072_0_power_NE(x1, x2, x3, x4) → Cond_1072_0_power_NE(x1, x2, x3)

Filtered all free variables:

2595_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2595_1_main_InvokeMethod(x2, x3, x4, x5)
2636_1_main_InvokeMethod(x1, x2, x3, x4) → 2636_1_main_InvokeMethod(x2, x3, x4)
Cond_2636_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2636_1_main_InvokeMethod(x1, x3, x4)
2387_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 2387_1_main_InvokeMethod(x2, x3, x4, x5)
2420_1_main_InvokeMethod(x1, x2, x3, x4) → 2420_1_main_InvokeMethod(x2, x3, x4)
Cond_2420_1_main_InvokeMethod(x1, x2, x3, x4) → Cond_2420_1_main_InvokeMethod(x1, x3, x4)
1347_0_odd_Return(x1) → 1347_0_odd_Return
980_0_even_Return(x1) → 980_0_even_Return

Combined rules. Obtained 12 rules for P and 25 rules for R.

Finished conversion. Obtained 12 rules for P and 25 rules for R. System has predefined symbols.

### (5) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(0): 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1), x0[0])
(1): COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(x0[1] - 1 - 1)

(0) -> (1), if ((x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1) →* TRUE)∧(x0[0]* x0[1]))

(1) -> (0), if ((x0[1] - 1 - 1* x0[0]))

The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

### (6) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.

For Pair 924_0_EVEN_GT(x0) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0, 0), !(=(x0, 1))), <(0, -(x0, 1))), !(=(-(x0, 1), 1))), x0) the following chains were created:
• We consider the chain 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0]), COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1)) which results in the following constraint:

(1)    (&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1)))=TRUEx0[0]=x0[1]924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))

We simplified constraint (1) using rules (IV), (IDP_BOOLEAN) which results in the following new constraints:

(2)    (<(0, -(x0[0], 1))=TRUE>(x0[0], 0)=TRUE<(-(x0[0], 1), 1)=TRUE<(x0[0], 1)=TRUE924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))

(3)    (<(0, -(x0[0], 1))=TRUE>(x0[0], 0)=TRUE<(-(x0[0], 1), 1)=TRUE>(x0[0], 1)=TRUE924_0_EVEN_GT(x0[0])≥NonInfC∧924_0_EVEN_GT(x0[0])≥COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])∧(UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥))

We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(4)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (3) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(5)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (4) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(6)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (5) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(7)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (8) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(9)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(11)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (6) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(12)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (7) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(13)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧[1] + [-1]x0[0] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (9) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(14)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧[-1]x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(15)    (x0[0] + [-2] ≥ 0∧x0[0] + [-1] ≥ 0∧x0[0] + [-3] ≥ 0∧x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We solved constraint (12) using rule (IDP_SMT_SPLIT).We solved constraint (13) using rule (IDP_SMT_SPLIT).We solved constraint (14) using rule (IDP_SMT_SPLIT).We simplified constraint (15) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(16)    (x0[0] ≥ 0∧[1] + x0[0] ≥ 0∧[-1] + x0[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(5)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

We simplified constraint (16) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(17)    ([1] + x0[0] ≥ 0∧[2] + x0[0] ≥ 0∧x0[0] ≥ 0∧[1] + x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(7)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

For Pair COND_924_0_EVEN_GT(TRUE, x0) → 924_0_EVEN_GT(-(-(x0, 1), 1)) the following chains were created:
• We consider the chain COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1)) which results in the following constraint:

(18)    (COND_924_0_EVEN_GT(TRUE, x0[1])≥NonInfC∧COND_924_0_EVEN_GT(TRUE, x0[1])≥924_0_EVEN_GT(-(-(x0[1], 1), 1))∧(UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥))

We simplified constraint (18) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(19)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)

We simplified constraint (19) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(20)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)

We simplified constraint (20) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(21)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧[4 + (-1)bso_26] ≥ 0)

We simplified constraint (21) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(22)    ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧0 = 0∧[4 + (-1)bso_26] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• 924_0_EVEN_GT(x0) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0, 0), !(=(x0, 1))), <(0, -(x0, 1))), !(=(-(x0, 1), 1))), x0)
• ([1] + x0[0] ≥ 0∧[2] + x0[0] ≥ 0∧x0[0] ≥ 0∧[1] + x0[0] ≥ 0 ⇒ (UIncreasing(COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])), ≥)∧[(7)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x0[0] ≥ 0∧[(-1)bso_24] ≥ 0)

• COND_924_0_EVEN_GT(TRUE, x0) → 924_0_EVEN_GT(-(-(x0, 1), 1))
• ((UIncreasing(924_0_EVEN_GT(-(-(x0[1], 1), 1))), ≥)∧0 = 0∧[4 + (-1)bso_26] ≥ 0)

The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0
POL(FALSE) = 0
POL(924_0_even_GT(x1)) = [-1] + [-1]x1
POL(Cond_924_0_even_GT(x1, x2)) = [-1] + [-1]x2
POL(<=(x1, x2)) = [-1]
POL(0) = 0
POL(980_0_even_Return(x1)) = x1
POL(1172_1_even_InvokeMethod(x1, x2)) = [-1]
POL(1372_0_odd_Return) = [-1]
POL(1) = [1]
POL(1224_0_even_Return(x1)) = [-1]
POL(1422_0_odd_Return(x1)) = [-1]
POL(1401_1_odd_InvokeMethod(x1, x2)) = [-1]
POL(1067_0_even_Return) = [-1]
POL(924_0_EVEN_GT(x1)) = [1] + [2]x1
POL(COND_924_0_EVEN_GT(x1, x2)) = [1] + [2]x2
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(!(x1)) = [-1]
POL(=(x1, x2)) = [-1]
POL(<(x1, x2)) = [-1]
POL(-(x1, x2)) = x1 + [-1]x2

The following pairs are in P>:

COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(-(-(x0[1], 1), 1))

The following pairs are in Pbound:

924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])

The following pairs are in P:

924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(&&(&&(&&(>(x0[0], 0), !(=(x0[0], 1))), <(0, -(x0[0], 1))), !(=(-(x0[0], 1), 1))), x0[0])

There are no usable rules.

### (8) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(0): 924_0_EVEN_GT(x0[0]) → COND_924_0_EVEN_GT(x0[0] > 0 && !(x0[0] = 1) && 0 < x0[0] - 1 && !(x0[0] - 1 = 1), x0[0])

The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

### (9) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

### (11) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer

The ITRS R consists of the following rules:
924_0_even_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)

The integer pair graph contains the following rules and edges:
(1): COND_924_0_EVEN_GT(TRUE, x0[1]) → 924_0_EVEN_GT(x0[1] - 1 - 1)

The set Q consists of the following terms:
924_0_even_GT(x0)
Cond_924_0_even_GT(TRUE, x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)

### (12) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

### (14) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
730_0_power_GT(0) → 763_0_power_Return
955_1_power_InvokeMethod(845_0_power_Return, x1, 1) → 1072_0_power_NE(x1 % 2)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
1072_0_power_NE(0) → 1188_0_power_Return
1072_0_power_NE(x0) → Cond_1072_0_power_NE(!(x0 = 0), x0)
Cond_1072_0_power_NE(TRUE, x0) → 1287_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(x0[0] > 1, x0[0])
(1): COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(x0[1] / 2)

(0) -> (1), if ((x0[0] > 1* TRUE)∧(x0[0]* x0[1]))

(1) -> (0), if ((x0[1] / 2* x0[0]))

The set Q consists of the following terms:
730_0_power_GT(0)
955_1_power_InvokeMethod(845_0_power_Return, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1)
1072_0_power_NE(x0)
Cond_1072_0_power_NE(TRUE, x0)

### (15) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.

For Pair 730_0_POWER_GT(x0) → COND_730_0_POWER_GT(>(x0, 1), x0) the following chains were created:
• We consider the chain 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]), COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2)) which results in the following constraint:

(1)    (>(x0[0], 1)=TRUEx0[0]=x0[1]730_0_POWER_GT(x0[0])≥NonInfC∧730_0_POWER_GT(x0[0])≥COND_730_0_POWER_GT(>(x0[0], 1), x0[0])∧(UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥))

We simplified constraint (1) using rule (IV) which results in the following new constraint:

(2)    (>(x0[0], 1)=TRUE730_0_POWER_GT(x0[0])≥NonInfC∧730_0_POWER_GT(x0[0])≥COND_730_0_POWER_GT(>(x0[0], 1), x0[0])∧(UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥))

We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(3)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(4)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(5)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[(-1)bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

We simplified constraint (5) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

For Pair COND_730_0_POWER_GT(TRUE, x0) → 730_0_POWER_GT(/(x0, 2)) the following chains were created:
• We consider the chain 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]), COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2)), 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0]) which results in the following constraint:

(7)    (>(x0[0], 1)=TRUEx0[0]=x0[1]/(x0[1], 2)=x0[0]1COND_730_0_POWER_GT(TRUE, x0[1])≥NonInfC∧COND_730_0_POWER_GT(TRUE, x0[1])≥730_0_POWER_GT(/(x0[1], 2))∧(UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥))

We simplified constraint (7) using rules (III), (IV) which results in the following new constraint:

(8)    (>(x0[0], 1)=TRUECOND_730_0_POWER_GT(TRUE, x0[0])≥NonInfC∧COND_730_0_POWER_GT(TRUE, x0[0])≥730_0_POWER_GT(/(x0[0], 2))∧(UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥))

We simplified constraint (8) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(9)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] + x0[0] + [-1]max{x0[0], [-1]x0[0]} ≥ 0)

We simplified constraint (9) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(10)    (x0[0] + [-2] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] + x0[0] + [-1]max{x0[0], [-1]x0[0]} ≥ 0)

We simplified constraint (10) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(11)    (x0[0] + [-2] ≥ 0∧[2]x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)

We simplified constraint (11) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(12)    (x0[0] ≥ 0∧[4] + [2]x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)

We simplified constraint (12) using rule (IDP_POLY_GCD) which results in the following new constraint:

(13)    (x0[0] ≥ 0∧[2] + x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• 730_0_POWER_GT(x0) → COND_730_0_POWER_GT(>(x0, 1), x0)
• (x0[0] ≥ 0 ⇒ (UIncreasing(COND_730_0_POWER_GT(>(x0[0], 1), x0[0])), ≥)∧[bni_26 + (-1)Bound*bni_26] + [bni_26]x0[0] ≥ 0∧[(-1)bso_27] ≥ 0)

• COND_730_0_POWER_GT(TRUE, x0) → 730_0_POWER_GT(/(x0, 2))
• (x0[0] ≥ 0∧[2] + x0[0] ≥ 0 ⇒ (UIncreasing(730_0_POWER_GT(/(x0[1], 2))), ≥)∧[bni_28 + (-1)Bound*bni_28] + [bni_28]x0[0] ≥ 0∧[1 + (-1)bso_32] ≥ 0)

The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = [1]
POL(FALSE) = 0
POL(730_0_power_GT(x1)) = [-1] + [-1]x1
POL(0) = 0
POL(763_0_power_Return) = [-1]
POL(955_1_power_InvokeMethod(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2 + [-1]x1
POL(845_0_power_Return) = [-1]
POL(1) = [1]
POL(1072_0_power_NE(x1)) = [-1] + [-1]x1
POL(2) = [2]
POL(1188_0_power_Return) = [-1]
POL(1287_0_power_Return) = [-1]
POL(Cond_1072_0_power_NE(x1, x2)) = [-1] + [-1]x2 + [-1]x1
POL(!(x1)) = [-1]
POL(=(x1, x2)) = [-1]
POL(730_0_POWER_GT(x1)) = [-1] + x1
POL(COND_730_0_POWER_GT(x1, x2)) = [-1] + x2
POL(>(x1, x2)) = [-1]

Polynomial Interpretations with Context Sensitive Arithemetic Replacement
POL(TermCSAR-Mode @ Context)

POL(/(x1, 2)1 @ {730_0_POWER_GT_1/0}) = max{x1, [-1]x1} + [-1]

The following pairs are in P>:

COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2))

The following pairs are in Pbound:

730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0])
COND_730_0_POWER_GT(TRUE, x0[1]) → 730_0_POWER_GT(/(x0[1], 2))

The following pairs are in P:

730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(>(x0[0], 1), x0[0])

At least the following rules have been oriented under context sensitive arithmetic replacement:

/1

### (16) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
730_0_power_GT(0) → 763_0_power_Return
955_1_power_InvokeMethod(845_0_power_Return, x1, 1) → 1072_0_power_NE(x1 % 2)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1) → 1072_0_power_NE(x0 % 2)
1072_0_power_NE(0) → 1188_0_power_Return
1072_0_power_NE(x0) → Cond_1072_0_power_NE(!(x0 = 0), x0)
Cond_1072_0_power_NE(TRUE, x0) → 1287_0_power_Return

The integer pair graph contains the following rules and edges:
(0): 730_0_POWER_GT(x0[0]) → COND_730_0_POWER_GT(x0[0] > 1, x0[0])

The set Q consists of the following terms:
730_0_power_GT(0)
955_1_power_InvokeMethod(845_0_power_Return, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return, x0, x1)
955_1_power_InvokeMethod(1287_0_power_Return, x0, x1)
1072_0_power_NE(x0)
Cond_1072_0_power_NE(TRUE, x0)

### (17) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

### (19) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
2387_0_power_Load(x0, x1) → 730_0_power_GT(x0, x1)
2420_0_even_Load(x0) → 1300_0_odd_GT(x0)
2636_0_odd_Load(x0) → 1300_0_odd_GT(x0)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT(x0 <= 0, x0)
Cond_1300_0_odd_GT(TRUE, x0) → 1347_0_odd_Return
1300_0_odd_GT(1) → Cond_1300_0_odd_GT1(1 > 0, 1)
Cond_1300_0_odd_GT1(TRUE, 1) → 1372_0_odd_Return
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT2(TRUE, x0) → 1401_1_odd_InvokeMethod(1406_0_even_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT3(TRUE, x0) → 1401_1_odd_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1300_0_odd_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return
1300_0_odd_GT(1) → Cond_924_0_even_GT1(1 > 0, 1)
Cond_924_0_even_GT1(TRUE, 1) → 1067_0_even_Return
1300_0_odd_GT(x0) → Cond_924_0_even_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT2(TRUE, x0) → 1172_1_even_InvokeMethod(1353_0_odd_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_924_0_even_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT3(TRUE, x0) → 1172_1_even_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
730_0_power_GT(x0, 0) → 763_0_power_Return(x0)
730_0_power_GT(x0, 1) → Cond_730_0_power_GT(1 > 0, x0, 1)
Cond_730_0_power_GT(TRUE, x0, 1) → 845_0_power_Return(x0)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT1(x1 > 1 && 0 = x1 / 2, x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1) → 955_1_power_InvokeMethod(960_0_power_Return(x0 * x0), x0, x1, x0 * x0, x1 / 2)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT2(x1 > 1, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1) → 955_1_power_InvokeMethod(730_0_power_GT(x0 * x0, x1 / 2), x0, x1, x0 * x0, x1 / 2)
955_1_power_InvokeMethod(845_0_power_Return(x0), x2, x3, x0, 1) → 1072_0_power_NE(x2, x0, x3 % 2)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4) → 1072_0_power_NE(x2, x1, x3 % 2)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4) → 1072_0_power_NE(x1, x0, x2 % 2)
1072_0_power_NE(x0, x1, 0) → 1188_0_power_Return(x0, x1)
1072_0_power_NE(x0, x1, x2) → Cond_1072_0_power_NE(!(x2 = 0), x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2) → 1287_0_power_Return(x0 * x1)

The integer pair graph contains the following rules and edges:
(0): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
(1): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
(2): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(x3[2] >= 0 && x3[2] < x1[2], java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
(3): COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
(4): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(x4[4] >= 0 && x4[4] < x2[4], java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
(5): COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
(6): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
(7): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
(8): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1, java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
(9): COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), x3[9] + 1, x1[9], x5[9])
(10): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1, java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
(11): COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), x3[11] + 1, x1[11], x5[11])
(12): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1, java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
(13): COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), x4[13] + 1, x2[13], x6[13])
(14): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
(15): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(x4[15] >= 0 && x4[15] < x2[15], java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
(16): COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])
(17): 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

(0) -> (2), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x4[0]* x3[2])∧(x1[0]* x4[2]))

(0) -> (4), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x4[0]* x4[4])∧(x1[0]* 0))

(0) -> (15), if ((java.lang.Object(ARRAY(x0[0], x3[0])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x4[0]* x4[15])∧(x1[0]* 1))

(1) -> (2), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x5[1]* x3[2])∧(1* x4[2]))

(1) -> (4), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x5[1]* x4[4])∧(1* 0))

(1) -> (15), if ((java.lang.Object(ARRAY(x0[1], x4[1])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x5[1]* x4[15]))

(2) -> (3), if ((x3[2] >= 0 && x3[2] < x1[2]* TRUE)∧(java.lang.Object(ARRAY(x1[2], x2[2])) →* java.lang.Object(ARRAY(x1[3], x2[3])))∧(x3[2]* x3[3])∧(x4[2]* x4[3]))

(3) -> (6), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x3[3]* x4[6])∧(x1[3]* x0[6])∧(x5[3]* x5[6]))

(3) -> (7), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x3[3]* x5[7])∧(x1[3]* x0[7])∧(x5[3]* 0))

(3) -> (14), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x3[3]* x4[14])∧(x1[3]* x0[14])∧(x5[3]* 1))

(4) -> (5), if ((x4[4] >= 0 && x4[4] < x2[4]* TRUE)∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x4[4]* x4[5]))

(5) -> (6), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[5]* x4[6])∧(x2[5]* x0[6])∧(x6[5]* x5[6]))

(5) -> (7), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[5]* x5[7])∧(x2[5]* x0[7])∧(x6[5]* 0))

(5) -> (14), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[5]* x4[14])∧(x2[5]* x0[14])∧(x6[5]* 1))

(6) -> (8), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[6]* x3[8])∧(x1[6]* x4[8]))

(6) -> (10), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[6]* x3[10])∧(x1[6]* 0))

(6) -> (12), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[6]* x4[12])∧(x1[6]* 1))

(7) -> (8), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x5[7]* x3[8])∧(1* x4[8]))

(7) -> (10), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x5[7]* x3[10])∧(1* 0))

(7) -> (12), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x5[7]* x4[12]))

(8) -> (9), if ((x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[8], x2[8])) →* java.lang.Object(ARRAY(x1[9], x2[9])))∧(x3[8]* x3[9])∧(x4[8]* x4[9]))

(9) -> (0), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x3[9] + 1* x4[0])∧(x1[9]* x0[0])∧(x5[9]* x5[0]))

(9) -> (1), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x3[9] + 1* x5[1])∧(x1[9]* x0[1])∧(x5[9]* 0))

(9) -> (17), if ((java.lang.Object(ARRAY(x1[9], x2[9])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x3[9] + 1* x4[17])∧(x1[9]* x0[17])∧(x5[9]* 1))

(10) -> (11), if ((x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[10], x2[10])) →* java.lang.Object(ARRAY(x1[11], x2[11])))∧(x3[10]* x3[11]))

(11) -> (0), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x3[11] + 1* x4[0])∧(x1[11]* x0[0])∧(x5[11]* x5[0]))

(11) -> (1), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x3[11] + 1* x5[1])∧(x1[11]* x0[1])∧(x5[11]* 0))

(11) -> (17), if ((java.lang.Object(ARRAY(x1[11], x2[11])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x3[11] + 1* x4[17])∧(x1[11]* x0[17])∧(x5[11]* 1))

(12) -> (13), if ((x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1* TRUE)∧(java.lang.Object(ARRAY(x2[12], x3[12])) →* java.lang.Object(ARRAY(x2[13], x3[13])))∧(x4[12]* x4[13]))

(13) -> (0), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x2[0], x3[0])))∧(x4[13] + 1* x4[0])∧(x2[13]* x0[0])∧(x6[13]* x5[0]))

(13) -> (1), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x3[1], x4[1])))∧(x4[13] + 1* x5[1])∧(x2[13]* x0[1])∧(x6[13]* 0))

(13) -> (17), if ((java.lang.Object(ARRAY(x2[13], x3[13])) →* java.lang.Object(ARRAY(x2[17], x3[17])))∧(x4[13] + 1* x4[17])∧(x2[13]* x0[17])∧(x6[13]* 1))

(14) -> (8), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[14]* x3[8])∧(x0[14]* x4[8]))

(14) -> (10), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[14]* x3[10])∧(x0[14]* 0))

(14) -> (12), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[14]* x4[12])∧(x0[14]* 1))

(15) -> (16), if ((x4[15] >= 0 && x4[15] < x2[15]* TRUE)∧(java.lang.Object(ARRAY(x2[15], x3[15])) →* java.lang.Object(ARRAY(x2[16], x3[16])))∧(x4[15]* x4[16]))

(16) -> (6), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[16]* x4[6])∧(x2[16]* x0[6])∧(x6[16]* x5[6]))

(16) -> (7), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[16]* x5[7])∧(x2[16]* x0[7])∧(x6[16]* 0))

(16) -> (14), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[16]* x4[14])∧(x2[16]* x0[14])∧(x6[16]* 1))

(17) -> (2), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x1[2], x2[2])))∧(x4[17]* x3[2])∧(x0[17]* x4[2]))

(17) -> (4), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x2[4], x3[4])))∧(x4[17]* x4[4])∧(x0[17]* 0))

(17) -> (15), if ((java.lang.Object(ARRAY(x0[17], x3[17])) →* java.lang.Object(ARRAY(x2[15], x3[15])))∧(x4[17]* x4[15])∧(x0[17]* 1))

The set Q consists of the following terms:
2387_0_power_Load(x0, x1)
2420_0_even_Load(x0)
2636_0_odd_Load(x0)
1300_0_odd_GT(x0)
Cond_1300_0_odd_GT(TRUE, x0)
Cond_1300_0_odd_GT1(TRUE, 1)
Cond_1300_0_odd_GT2(TRUE, x0)
Cond_1300_0_odd_GT3(TRUE, x0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
Cond_924_0_even_GT(TRUE, x0)
Cond_924_0_even_GT1(TRUE, 1)
Cond_924_0_even_GT2(TRUE, x0)
Cond_924_0_even_GT3(TRUE, x0)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
Cond_730_0_power_GT(TRUE, x0, 1)
730_0_power_GT(x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1)
955_1_power_InvokeMethod(845_0_power_Return(x0), x1, x2, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4)
1072_0_power_NE(x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2)

### (20) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.

For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

(1)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x3[9], 1)=x4[0]x1[9]=x0[0]x5[9]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (1) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(2)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], x5[9])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], x5[9])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(3)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(4)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(5)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(6)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x1[8] + [(-1)bni_101]x3[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(7)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

(8)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x3[11], 1)=x4[0]x1[11]=x0[0]x5[11]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (8) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(9)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], x5[11])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], x5[11])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(10)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(11)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(12)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(13)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x1[10] + [(-1)bni_101]x3[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(14)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]) which results in the following constraint:

(15)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x2[0], x3[0]))∧+(x4[13], 1)=x4[0]x2[13]=x0[0]x6[13]=x5[0]2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (15) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(16)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], x6[13])≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], x6[13])≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x1[0])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥))

We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(17)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(18)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(19)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(20)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101] + [bni_101]x2[12] + [(-1)bni_101]x4[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(21)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x2[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

(22)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x3[9], 1)=x5[1]x1[9]=x0[1]x5[9]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (22) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(23)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (23) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(24)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (24) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(25)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (25) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(26)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (26) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(27)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x1[8] + [(-1)bni_103]x3[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (27) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(28)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

(29)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x3[11], 1)=x5[1]x1[11]=x0[1]x5[11]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (29) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(30)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(31)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(32)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(33)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(34)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x1[10] + [(-1)bni_103]x3[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(35)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1) which results in the following constraint:

(36)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x3[1], x4[1]))∧+(x4[13], 1)=x5[1]x2[13]=x0[1]x6[13]=02387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (36) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(37)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 0)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 0)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), 1)∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥))

We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(38)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(39)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(40)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(41)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103] + [bni_103]x2[12] + [(-1)bni_103]x4[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(42)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3, 0), <(x3, x1)), java.lang.Object(ARRAY(x1, x2)), x3, x4) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

(43)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥))

We simplified constraint (43) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(44)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])≥COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥))

We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(45)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)

We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(46)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)

We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(47)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧[(-1)bso_106] ≥ 0)

We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(48)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105] + [bni_105]x1[2] + [(-1)bni_105]x3[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(49)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105 + bni_105] + [bni_105]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

For Pair COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x1, x5) the following chains were created:
• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

(50)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x4[0]=x3[2]x1[0]=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (50) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(51)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[0])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[0])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x3[0])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(52)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(53)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(54)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(55)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(56)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)

• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

(57)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x5[1]=x3[2]1=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (57) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(58)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x4[1])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(59)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(60)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(61)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(62)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(63)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]) which results in the following constraint:

(64)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x1[2], x2[2]))∧x4[17]=x3[2]x0[17]=x4[2]&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (64) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(65)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUECOND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2])≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2])≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x3[17])), x3[2], x1[2], x5[3])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥))

We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(66)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(67)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(68)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(69)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107] + [(-1)bni_107]x3[2] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(70)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 0) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

(71)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥))

We simplified constraint (71) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(72)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)≥COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥))

We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(73)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)

We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(74)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)

We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(75)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧[(-1)bso_110] ≥ 0)

We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(76)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109] + [bni_109]x2[4] + [(-1)bni_109]x4[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)

We simplified constraint (76) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(77)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109 + bni_109] + [bni_109]x2[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)

For Pair COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6) the following chains were created:
• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

(78)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x4[0]=x4[4]x1[0]=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))

We simplified constraint (78) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(79)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUECOND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[0])), x4[4], x2[4], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))

We simplified constraint (79) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(80)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (80) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(81)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (81) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(82)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (82) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(83)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (83) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(84)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111 + bni_111] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)

• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

(85)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x5[1]=x4[4]1=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))

We solved constraint (85) using rules (I), (II).
• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]) which results in the following constraint:

(86)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x2[4], x3[4]))∧x4[17]=x4[4]x0[17]=0&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))

We simplified constraint (86) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(87)    (>=(x4[4], 0)=TRUE<(x4[4], 0)=TRUECOND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[17])), x4[4], 0)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[17])), x4[4], 0)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(0, x3[17])), x4[4], 0, x6[5])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥))

We simplified constraint (87) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(88)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (88) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(89)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (89) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(90)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧[(-1)bso_112] ≥ 0)

We simplified constraint (90) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(91)    (x4[4] ≥ 0∧[-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111] + [(-1)bni_111]x4[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)

We solved constraint (91) using rule (IDP_SMT_SPLIT).

For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

(92)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x3[3]=x4[6]x1[3]=x0[6]x5[3]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (92) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(93)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], x5[3])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], x5[3])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (93) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(94)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (94) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(95)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (95) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(96)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (96) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(97)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x1[2] + [(-1)bni_113]x3[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (97) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(98)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

(99)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x4[5]=x4[6]x2[5]=x0[6]x6[5]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (99) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(100)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], x6[5])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], x6[5])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (100) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(101)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (101) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(102)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (102) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(103)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (103) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(104)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x2[4] + [(-1)bni_113]x4[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (104) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(105)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]) which results in the following constraint:

(106)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x2[6], x3[6]))∧x4[16]=x4[6]x2[16]=x0[6]x6[16]=x5[6]2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (106) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(107)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], x6[16])≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], x6[16])≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x1[6])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥))

We simplified constraint (107) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(108)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (108) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(109)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (109) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(110)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (110) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(111)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113] + [bni_113]x2[15] + [(-1)bni_113]x4[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

We simplified constraint (111) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(112)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

(113)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x3[3]=x5[7]x1[3]=x0[7]x5[3]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (113) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(114)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (114) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(115)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (115) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(116)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (116) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(117)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (117) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(118)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x1[2] + [(-1)bni_115]x3[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (118) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(119)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x1[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

(120)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x4[5]=x5[7]x2[5]=x0[7]x6[5]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (120) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(121)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (121) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(122)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (122) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(123)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (123) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(124)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (124) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(125)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x2[4] + [(-1)bni_115]x4[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (125) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(126)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1) which results in the following constraint:

(127)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x3[7], x4[7]))∧x4[16]=x5[7]x2[16]=x0[7]x6[16]=02595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (127) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(128)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 0)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 0)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥))

We simplified constraint (128) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(129)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (129) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(130)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (130) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(131)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (131) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(132)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115] + [bni_115]x2[15] + [(-1)bni_115]x4[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

We simplified constraint (132) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(133)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, x4) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

(134)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥))

We simplified constraint (134) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(135)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])≥COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥))

We simplified constraint (135) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(136)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)

We simplified constraint (136) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(137)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)

We simplified constraint (137) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(138)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧[(-1)bso_118] ≥ 0)

We simplified constraint (138) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(139)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117] + [bni_117]x1[8] + [(-1)bni_117]x3[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

We simplified constraint (139) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(140)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117 + (2)bni_117] + [bni_117]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

For Pair COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5) the following chains were created:
• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

(141)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x4[6]=x3[8]x1[6]=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (141) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(142)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[6])), x3[8], x1[6])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[6])), x3[8], x1[6])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x3[6])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (142) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(143)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (143) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(144)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (144) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(145)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (145) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(146)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (146) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(147)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)

• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

(148)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x5[7]=x3[8]1=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (148) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(149)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x4[7])), x3[8], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x4[7])), x3[8], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x4[7])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (149) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(150)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (150) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(151)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (151) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(152)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (152) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(153)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (153) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(154)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]) which results in the following constraint:

(155)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x1[8], x2[8]))∧x4[14]=x3[8]x0[14]=x4[8]&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (155) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(156)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[14])), x3[8], x1[8])≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[8], x3[14])), x3[8], x1[8])≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x3[14])), +(x3[8], 1), x1[8], x5[9])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥))

We simplified constraint (156) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(157)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (157) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(158)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (158) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(159)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (159) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(160)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119] + [(-1)bni_119]x3[8] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

We simplified constraint (160) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(161)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, 0) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

(162)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥))

We simplified constraint (162) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(163)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)≥COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥))

We simplified constraint (163) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(164)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)

We simplified constraint (164) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(165)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)

We simplified constraint (165) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(166)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧[(-1)bso_122] ≥ 0)

We simplified constraint (166) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(167)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121] + [bni_121]x1[10] + [(-1)bni_121]x3[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)

We simplified constraint (167) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(168)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121 + (2)bni_121] + [bni_121]x1[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)

For Pair COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5) the following chains were created:
• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

(169)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x4[6]=x3[10]x1[6]=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))

We simplified constraint (169) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(170)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[10], x3[6])), x3[10], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[10], x3[6])), x3[10], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x3[6])), +(x3[10], 1), x1[10], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))

We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(171)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(172)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(173)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(174)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (174) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(175)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123 + (2)bni_123] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)

• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

(176)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x5[7]=x3[10]1=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))

We solved constraint (176) using rules (I), (II).
• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]) which results in the following constraint:

(177)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x1[10], x2[10]))∧x4[14]=x3[10]x0[14]=0&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))

We simplified constraint (177) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(178)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(0, +(x3[10], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[14])), x3[10], 0)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(0, x3[14])), x3[10], 0)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(0, x3[14])), +(x3[10], 1), 0, x5[11])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥))

We simplified constraint (178) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(179)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (179) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(180)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (180) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(181)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧[(-1)bso_124] ≥ 0)

We simplified constraint (181) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(182)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧[-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123] + [(-1)bni_123]x3[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)

We solved constraint (182) using rule (IDP_SMT_SPLIT).

For Pair 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4, 0), >(x2, +(x4, 1))), <=(0, +(x4, 1))), java.lang.Object(ARRAY(x2, x3)), x4, 1) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

(183)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥))

We simplified constraint (183) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(184)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥NonInfC∧2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)≥COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)∧(UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥))

We simplified constraint (184) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(185)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)

We simplified constraint (185) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(186)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)

We simplified constraint (186) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(187)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧[(-1)bso_126] ≥ 0)

We simplified constraint (187) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(188)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125] + [bni_125]x2[12] + [(-1)bni_125]x4[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)

We simplified constraint (188) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(189)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125 + (2)bni_125] + [bni_125]x2[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)

For Pair COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), +(x4, 1), x2, x6) the following chains were created:
• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

(190)    (java.lang.Object(ARRAY(x0[6], x3[6]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x4[6]=x4[12]x1[6]=1&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (190) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(191)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x3[6])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x3[6])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[6])), +(x4[12], 1), x2[12], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (191) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(192)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (192) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(193)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (193) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(194)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (194) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(195)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (195) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(196)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

(197)    (java.lang.Object(ARRAY(x0[7], x4[7]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x5[7]=x4[12]&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (197) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(198)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x4[7])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[12], x4[7])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x4[7])), +(x4[12], 1), x2[12], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (198) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(199)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (199) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(200)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (200) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(201)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (201) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(202)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127] + [(-1)bni_127]x4[12] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (202) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(203)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

• We consider the chain 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]), 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]) which results in the following constraint:

(204)    (java.lang.Object(ARRAY(x0[14], x3[14]))=java.lang.Object(ARRAY(x2[12], x3[12]))∧x4[14]=x4[12]x0[14]=1&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (204) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(205)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(1, +(x4[12], 1))=TRUECOND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[14])), x4[12], 1)≥NonInfC∧COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[14])), x4[12], 1)≥2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(1, x3[14])), +(x4[12], 1), 1, x6[13])∧(UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥))

We simplified constraint (205) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(206)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (206) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(207)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (207) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(208)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧[(-1)bso_128] ≥ 0)

We simplified constraint (208) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(209)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧[-1] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]x4[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

We solved constraint (209) using rule (IDP_SMT_SPLIT).

For Pair 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]), COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

(210)    (&&(>=(x3[2], 0), <(x3[2], x1[2]))=TRUEjava.lang.Object(ARRAY(x1[2], x2[2]))=java.lang.Object(ARRAY(x1[3], x2[3]))∧x3[2]=x3[3]x4[2]=x4[3]java.lang.Object(ARRAY(x1[3], x2[3]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x3[3]=x4[14]x1[3]=x0[14]x5[3]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (210) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(211)    (>=(x3[2], 0)=TRUE<(x3[2], x1[2])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x1[2])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (211) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(212)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (212) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(213)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (213) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(214)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (214) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(215)    (x3[2] ≥ 0∧x1[2] + [-1] + [-1]x3[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x1[2] + [(-1)bni_129]x3[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (215) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(216)    (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x1[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0), COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

(217)    (&&(>=(x4[4], 0), <(x4[4], x2[4]))=TRUEjava.lang.Object(ARRAY(x2[4], x3[4]))=java.lang.Object(ARRAY(x2[5], x3[5]))∧x4[4]=x4[5]java.lang.Object(ARRAY(x2[5], x3[5]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x4[5]=x4[14]x2[5]=x0[14]x6[5]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (217) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(218)    (>=(x4[4], 0)=TRUE<(x4[4], x2[4])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], x2[4])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (218) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(219)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (219) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(220)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (220) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(221)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (221) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(222)    (x4[4] ≥ 0∧x2[4] + [-1] + [-1]x4[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x2[4] + [(-1)bni_129]x4[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (222) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(223)    (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]), 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14]) which results in the following constraint:

(224)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]java.lang.Object(ARRAY(x2[16], x3[16]))=java.lang.Object(ARRAY(x2[14], x3[14]))∧x4[16]=x4[14]x2[16]=x0[14]x6[16]=12595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (224) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(225)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 1)≥NonInfC∧2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15], 1)≥2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], x2[15])∧(UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥))

We simplified constraint (225) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(226)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (226) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(227)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (227) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(228)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (228) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(229)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129] + [bni_129]x2[15] + [(-1)bni_129]x4[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

We simplified constraint (229) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(230)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

For Pair 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 1) the following chains were created:
• We consider the chain 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

(231)    (&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥))

We simplified constraint (231) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(232)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUE2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥NonInfC∧2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)≥COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)∧(UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥))

We simplified constraint (232) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(233)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)

We simplified constraint (233) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(234)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)

We simplified constraint (234) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(235)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧[(-1)bso_132] ≥ 0)

We simplified constraint (235) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(236)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131] + [bni_131]x2[15] + [(-1)bni_131]x4[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)

We simplified constraint (236) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(237)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131 + bni_131] + [bni_131]x2[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)

For Pair COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6) the following chains were created:
• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

(238)    (java.lang.Object(ARRAY(x0[0], x3[0]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x4[0]=x4[15]x1[0]=1&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (238) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(239)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[0])), x4[15], x2[15], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (239) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(240)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (240) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(241)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (241) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(242)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (242) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(243)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (243) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(244)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

(245)    (java.lang.Object(ARRAY(x0[1], x4[1]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x5[1]=x4[15]&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (245) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(246)    (>=(x4[15], 0)=TRUE<(x4[15], x2[15])=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x4[1])), x4[15], x2[15], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (246) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(247)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (247) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(248)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (248) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(249)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (249) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(250)    (x4[15] ≥ 0∧x2[15] + [-1] + [-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133] + [(-1)bni_133]x4[15] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (250) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(251)    (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

• We consider the chain 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]), 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1), COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16]) which results in the following constraint:

(252)    (java.lang.Object(ARRAY(x0[17], x3[17]))=java.lang.Object(ARRAY(x2[15], x3[15]))∧x4[17]=x4[15]x0[17]=1&&(>=(x4[15], 0), <(x4[15], x2[15]))=TRUEjava.lang.Object(ARRAY(x2[15], x3[15]))=java.lang.Object(ARRAY(x2[16], x3[16]))∧x4[15]=x4[16]COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (252) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(253)    (>=(x4[15], 0)=TRUE<(x4[15], 1)=TRUECOND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[17])), x4[15], 1)≥NonInfC∧COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(1, x3[17])), x4[15], 1)≥2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(1, x3[17])), x4[15], 1, x6[16])∧(UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥))

We simplified constraint (253) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(254)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (254) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(255)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (255) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(256)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (256) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(257)    (x4[15] ≥ 0∧[-1]x4[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]x4[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

We simplified constraint (257) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(258)    (0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

For Pair 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0) the following chains were created:
• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]), COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

(259)    (&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1)))=TRUEjava.lang.Object(ARRAY(x1[8], x2[8]))=java.lang.Object(ARRAY(x1[9], x2[9]))∧x3[8]=x3[9]x4[8]=x4[9]java.lang.Object(ARRAY(x1[9], x2[9]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x3[9], 1)=x4[17]x1[9]=x0[17]x5[9]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (259) using rules (I), (II), (III), (IV), (IDP_BOOLEAN) which results in the following new constraint:

(260)    (<=(0, +(x3[8], 1))=TRUE>=(x3[8], 0)=TRUE>(x1[8], +(x3[8], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), +(x3[8], 1), x1[8])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (260) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(261)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (261) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(262)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (262) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(263)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (263) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(264)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] + [-2] + [-1]x3[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x1[8] + [(-1)bni_135]x3[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (264) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(265)    (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0), COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

(266)    (&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1)))=TRUEjava.lang.Object(ARRAY(x1[10], x2[10]))=java.lang.Object(ARRAY(x1[11], x2[11]))∧x3[10]=x3[11]java.lang.Object(ARRAY(x1[11], x2[11]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x3[11], 1)=x4[17]x1[11]=x0[17]x5[11]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (266) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(267)    (<=(0, +(x3[10], 1))=TRUE>=(x3[10], 0)=TRUE>(x1[10], +(x3[10], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), +(x3[10], 1), x1[10])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (267) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(268)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (268) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(269)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (269) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(270)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (270) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(271)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] + [-2] + [-1]x3[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x1[10] + [(-1)bni_135]x3[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (271) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(272)    (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

• We consider the chain 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1), COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13]), 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17]) which results in the following constraint:

(273)    (&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1)))=TRUEjava.lang.Object(ARRAY(x2[12], x3[12]))=java.lang.Object(ARRAY(x2[13], x3[13]))∧x4[12]=x4[13]java.lang.Object(ARRAY(x2[13], x3[13]))=java.lang.Object(ARRAY(x2[17], x3[17]))∧+(x4[13], 1)=x4[17]x2[13]=x0[17]x6[13]=12387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (273) using rules (I), (II), (III), (IDP_BOOLEAN) which results in the following new constraint:

(274)    (<=(0, +(x4[12], 1))=TRUE>=(x4[12], 0)=TRUE>(x2[12], +(x4[12], 1))=TRUE2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 1)≥NonInfC∧2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12], 1)≥2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), +(x4[12], 1), x2[12])∧(UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥))

We simplified constraint (274) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

(275)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (275) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

(276)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (276) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

(277)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (277) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

(278)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] + [-2] + [-1]x4[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135] + [bni_135]x2[12] + [(-1)bni_135]x4[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

We simplified constraint (278) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

(279)    (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)
• (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x1[10] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])), ≥)∧0 = 0∧[(-1)Bound*bni_101 + (2)bni_101] + [bni_101]x2[12] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_102] ≥ 0)

• 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)
• (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_103 + (2)bni_103] + [bni_103]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_104] ≥ 0)

• 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3, 0), <(x3, x1)), java.lang.Object(ARRAY(x1, x2)), x3, x4)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_105 + bni_105] + [bni_105]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_106] ≥ 0)

• COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x1, x5)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_108] ≥ 0)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])), ≥)∧0 = 0∧[(-1)Bound*bni_107 + bni_107] + [bni_107]x1[2] ≥ 0∧0 = 0∧[(-1)bso_108] ≥ 0)

• 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 0)
• (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_109 + bni_109] + [bni_109]x2[4] ≥ 0∧0 = 0∧[(-1)bso_110] ≥ 0)

• COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6)
• (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])), ≥)∧0 = 0∧[(-1)Bound*bni_111 + bni_111] + [bni_111]x2[4] ≥ 0∧0 = 0∧[(-1)bso_112] ≥ 0)

• 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, x5) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x1)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x1[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
• (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])), ≥)∧0 = 0∧[(-1)Bound*bni_113 + bni_113] + [bni_113]x2[15] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_114] ≥ 0)

• 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3, x4)), x5, x0, 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x4)), x5, 1)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x1[2] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)
• (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[4] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_115 + bni_115] + [bni_115]x2[15] ≥ 0∧0 = 0∧[(-1)bso_116] ≥ 0)

• 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, x4) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, x4)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_117 + (2)bni_117] + [bni_117]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_118] ≥ 0)

• COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, x4) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_120] ≥ 0)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])), ≥)∧0 = 0∧[(-1)Bound*bni_119 + (2)bni_119] + [bni_119]x1[8] ≥ 0∧0 = 0∧[(-1)bso_120] ≥ 0)

• 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), x3, 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3, 0), >(x1, +(x3, 1))), <=(0, +(x3, 1))), java.lang.Object(ARRAY(x1, x2)), x3, 0)
• (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)), ≥)∧0 = 0∧[(-1)Bound*bni_121 + (2)bni_121] + [bni_121]x1[10] ≥ 0∧0 = 0∧[(-1)bso_122] ≥ 0)

• COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1, x2)), x3, 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1, x2)), +(x3, 1), x1, x5)
• (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])), ≥)∧0 = 0∧[(-1)Bound*bni_123 + (2)bni_123] + [bni_123]x1[10] ≥ 0∧0 = 0∧[(-1)bso_124] ≥ 0)

• 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4, 0), >(x2, +(x4, 1))), <=(0, +(x4, 1))), java.lang.Object(ARRAY(x2, x3)), x4, 1)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_125 + (2)bni_125] + [bni_125]x2[12] ≥ 0∧0 = 0∧[(-1)bso_126] ≥ 0)

• COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), +(x4, 1), x2, x6)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])), ≥)∧0 = 0∧[(-1)Bound*bni_127 + (2)bni_127] + [bni_127]x2[12] ≥ 0∧0 = 0∧[(-1)bso_128] ≥ 0)

• 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0)
• (x3[2] ≥ 0∧x1[2] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x1[2] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)
• (x4[4] ≥ 0∧x2[4] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[4] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])), ≥)∧0 = 0∧[(-1)Bound*bni_129 + bni_129] + [bni_129]x2[15] ≥ 0∧0 = 0∧[(-1)bso_130] ≥ 0)

• 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4, 0), <(x4, x2)), java.lang.Object(ARRAY(x2, x3)), x4, 1)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)), ≥)∧0 = 0∧[(-1)Bound*bni_131 + bni_131] + [bni_131]x2[15] ≥ 0∧0 = 0∧[(-1)bso_132] ≥ 0)

• COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2, x3)), x4, 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x2, x6)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)
• (x4[15] ≥ 0∧x2[15] ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[(-1)Bound*bni_133 + bni_133] + [bni_133]x2[15] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)
• (0 ≥ 0∧0 ≥ 0 ⇒ (UIncreasing(2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])), ≥)∧0 = 0∧[bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧[(-1)bso_134] ≥ 0)

• 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2, x3)), x4, x0, 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0, x3)), x4, x0)
• (x3[8] + [1] ≥ 0∧x3[8] ≥ 0∧x1[8] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[8] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
• (x3[10] + [1] ≥ 0∧x3[10] ≥ 0∧x1[10] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x1[10] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)
• (x4[12] + [1] ≥ 0∧x4[12] ≥ 0∧x2[12] ≥ 0 ⇒ (UIncreasing(2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])), ≥)∧0 = 0∧[(-1)Bound*bni_135 + (2)bni_135] + [bni_135]x2[12] ≥ 0∧0 = 0∧[1 + (-1)bso_136] ≥ 0)

The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0
POL(FALSE) = 0
POL(2387_0_power_Load(x1, x2)) = [-1] + x2
POL(730_0_power_GT(x1, x2)) = [-1] + x1 + x2
POL(2420_0_even_Load(x1)) = [-1]
POL(1300_0_odd_GT(x1)) = [-1] + x1
POL(2636_0_odd_Load(x1)) = [-1]
POL(Cond_1300_0_odd_GT(x1, x2)) = [-1] + x2
POL(<=(x1, x2)) = [-1]
POL(0) = 0
POL(1347_0_odd_Return) = [-1]
POL(1) = [1]
POL(Cond_1300_0_odd_GT1(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(1372_0_odd_Return) = [-1]
POL(Cond_1300_0_odd_GT2(x1, x2)) = [-1] + x2
POL(&&(x1, x2)) = [-1]
POL(!(x1)) = [-1]
POL(=(x1, x2)) = [-1]
POL(1401_1_odd_InvokeMethod(x1, x2)) = [-1] + x1 + x2
POL(1406_0_even_Return(x1)) = x1
POL(-(x1, x2)) = x1 + [-1]x2
POL(Cond_1300_0_odd_GT3(x1, x2)) = [-1] + x2
POL(1224_0_even_Return(x1)) = [-1] + x1
POL(1422_0_odd_Return(x1)) = [-1] + x1
POL(1067_0_even_Return) = [-1]
POL(Cond_924_0_even_GT(x1, x2)) = [-1] + x2
POL(980_0_even_Return) = [-1]
POL(Cond_924_0_even_GT1(x1, x2)) = [-1]
POL(Cond_924_0_even_GT2(x1, x2)) = [-1] + x2
POL(1172_1_even_InvokeMethod(x1, x2)) = [-1] + x1 + x2
POL(1353_0_odd_Return(x1)) = x1
POL(Cond_924_0_even_GT3(x1, x2)) = [-1] + x2
POL(763_0_power_Return(x1)) = [-1] + x1
POL(Cond_730_0_power_GT(x1, x2, x3)) = [-1] + x2
POL(845_0_power_Return(x1)) = [-1] + x1
POL(Cond_730_0_power_GT1(x1, x2, x3)) = [-1] + x2 + x3
POL(2) = [2]
POL(955_1_power_InvokeMethod(x1, x2, x3, x4, x5)) = [-1] + [-1]x1 + x3 + x2 + x4 + x5
POL(960_0_power_Return(x1)) = x1
POL(*(x1, x2)) = x1·x2
POL(Cond_730_0_power_GT2(x1, x2, x3)) = [-1] + x2 + x3
POL(1072_0_power_NE(x1, x2, x3)) = [-1] + x2 + x1 + x3
POL(1188_0_power_Return(x1, x2)) = [-1] + x2 + x1
POL(1287_0_power_Return(x1)) = [-1] + x1
POL(Cond_1072_0_power_NE(x1, x2, x3, x4)) = [-1] + x2 + x3 + x4
POL(2387_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1]x2 + [-1]x1
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x1
POL(2420_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x2
POL(COND_2420_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2
POL(>=(x1, x2)) = [-1]
POL(<(x1, x2)) = [-1]
POL(2595_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x2 + [-1]x1
POL(COND_2420_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2
POL(2636_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x2
POL(COND_2636_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2
POL(+(x1, x2)) = x1 + x2
POL(COND_2636_1_MAIN_INVOKEMETHOD1(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2
POL(COND_2636_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2
POL(COND_2420_1_MAIN_INVOKEMETHOD2(x1, x2, x3, x4)) = [-1] + [-1]x3 + [-1]x2

The following pairs are in P>:

2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

The following pairs are in Pbound:

2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[0], x3[0])), x4[0], x0[0], x5[0]) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[0], x3[0])), x4[0], x1[0])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[1], x4[1])), x5[1], x0[1], 0) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[1], x4[1])), x5[1], 1)
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])
2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[17], x3[17])), x4[17], x0[17], 1) → 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[17], x3[17])), x4[17], x0[17])

The following pairs are in P:

2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(&&(>=(x3[2], 0), <(x3[2], x1[2])), java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(&&(>=(x4[4], 0), <(x4[4], x2[4])), java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(&&(&&(>=(x3[8], 0), >(x1[8], +(x3[8], 1))), <=(0, +(x3[8], 1))), java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), +(x3[9], 1), x1[9], x5[9])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(&&(&&(>=(x3[10], 0), >(x1[10], +(x3[10], 1))), <=(0, +(x3[10], 1))), java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), +(x3[11], 1), x1[11], x5[11])
2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(&&(&&(>=(x4[12], 0), >(x2[12], +(x4[12], 1))), <=(0, +(x4[12], 1))), java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), +(x4[13], 1), x2[13], x6[13])
2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(&&(>=(x4[15], 0), <(x4[15], x2[15])), java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])

There are no usable rules.

### (21) Obligation:

IDP problem:
The following function symbols are pre-defined:
 != ~ Neq: (Integer, Integer) -> Boolean * ~ Mul: (Integer, Integer) -> Integer >= ~ Ge: (Integer, Integer) -> Boolean -1 ~ UnaryMinus: (Integer) -> Integer | ~ Bwor: (Integer, Integer) -> Integer / ~ Div: (Integer, Integer) -> Integer = ~ Eq: (Integer, Integer) -> Boolean ~ Bwxor: (Integer, Integer) -> Integer || ~ Lor: (Boolean, Boolean) -> Boolean ! ~ Lnot: (Boolean) -> Boolean < ~ Lt: (Integer, Integer) -> Boolean - ~ Sub: (Integer, Integer) -> Integer <= ~ Le: (Integer, Integer) -> Boolean > ~ Gt: (Integer, Integer) -> Boolean ~ ~ Bwnot: (Integer) -> Integer % ~ Mod: (Integer, Integer) -> Integer & ~ Bwand: (Integer, Integer) -> Integer + ~ Add: (Integer, Integer) -> Integer && ~ Land: (Boolean, Boolean) -> Boolean

The following domains are used:

Integer, Boolean

The ITRS R consists of the following rules:
2387_0_power_Load(x0, x1) → 730_0_power_GT(x0, x1)
2420_0_even_Load(x0) → 1300_0_odd_GT(x0)
2636_0_odd_Load(x0) → 1300_0_odd_GT(x0)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT(x0 <= 0, x0)
Cond_1300_0_odd_GT(TRUE, x0) → 1347_0_odd_Return
1300_0_odd_GT(1) → Cond_1300_0_odd_GT1(1 > 0, 1)
Cond_1300_0_odd_GT1(TRUE, 1) → 1372_0_odd_Return
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT2(TRUE, x0) → 1401_1_odd_InvokeMethod(1406_0_even_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_1300_0_odd_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_1300_0_odd_GT3(TRUE, x0) → 1401_1_odd_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1) → 1422_0_odd_Return(x0)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1) → 1422_0_odd_Return(0)
1300_0_odd_GT(x0) → Cond_924_0_even_GT(x0 <= 0, x0)
Cond_924_0_even_GT(TRUE, x0) → 980_0_even_Return
1300_0_odd_GT(1) → Cond_924_0_even_GT1(1 > 0, 1)
Cond_924_0_even_GT1(TRUE, 1) → 1067_0_even_Return
1300_0_odd_GT(x0) → Cond_924_0_even_GT2(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT2(TRUE, x0) → 1172_1_even_InvokeMethod(1353_0_odd_Return(x0 - 1), x0 - 1)
1300_0_odd_GT(x0) → Cond_924_0_even_GT3(x0 > 0 && !(x0 = 1), x0)
Cond_924_0_even_GT3(TRUE, x0) → 1172_1_even_InvokeMethod(1300_0_odd_GT(x0 - 1), x0 - 1)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1) → 1224_0_even_Return(x0)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1) → 1224_0_even_Return(1)
730_0_power_GT(x0, 0) → 763_0_power_Return(x0)
730_0_power_GT(x0, 1) → Cond_730_0_power_GT(1 > 0, x0, 1)
Cond_730_0_power_GT(TRUE, x0, 1) → 845_0_power_Return(x0)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT1(x1 > 1 && 0 = x1 / 2, x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1) → 955_1_power_InvokeMethod(960_0_power_Return(x0 * x0), x0, x1, x0 * x0, x1 / 2)
730_0_power_GT(x0, x1) → Cond_730_0_power_GT2(x1 > 1, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1) → 955_1_power_InvokeMethod(730_0_power_GT(x0 * x0, x1 / 2), x0, x1, x0 * x0, x1 / 2)
955_1_power_InvokeMethod(845_0_power_Return(x0), x2, x3, x0, 1) → 1072_0_power_NE(x2, x0, x3 % 2)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4) → 1072_0_power_NE(x2, x1, x3 % 2)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4) → 1072_0_power_NE(x1, x0, x2 % 2)
1072_0_power_NE(x0, x1, 0) → 1188_0_power_Return(x0, x1)
1072_0_power_NE(x0, x1, x2) → Cond_1072_0_power_NE(!(x2 = 0), x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2) → 1287_0_power_Return(x0 * x1)

The integer pair graph contains the following rules and edges:
(2): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2]) → COND_2420_1_MAIN_INVOKEMETHOD(x3[2] >= 0 && x3[2] < x1[2], java.lang.Object(ARRAY(x1[2], x2[2])), x3[2], x4[2])
(3): COND_2420_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x4[3]) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[3], x2[3])), x3[3], x1[3], x5[3])
(4): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0) → COND_2420_1_MAIN_INVOKEMETHOD1(x4[4] >= 0 && x4[4] < x2[4], java.lang.Object(ARRAY(x2[4], x3[4])), x4[4], 0)
(5): COND_2420_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], 0) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[5], x3[5])), x4[5], x2[5], x6[5])
(6): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[6], x3[6])), x4[6], x0[6], x5[6]) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[6], x3[6])), x4[6], x1[6])
(7): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x3[7], x4[7])), x5[7], x0[7], 0) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[7], x4[7])), x5[7], 1)
(8): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8]) → COND_2636_1_MAIN_INVOKEMETHOD(x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1, java.lang.Object(ARRAY(x1[8], x2[8])), x3[8], x4[8])
(9): COND_2636_1_MAIN_INVOKEMETHOD(TRUE, java.lang.Object(ARRAY(x1[9], x2[9])), x3[9], x4[9]) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[9], x2[9])), x3[9] + 1, x1[9], x5[9])
(10): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0) → COND_2636_1_MAIN_INVOKEMETHOD1(x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1, java.lang.Object(ARRAY(x1[10], x2[10])), x3[10], 0)
(11): COND_2636_1_MAIN_INVOKEMETHOD1(TRUE, java.lang.Object(ARRAY(x1[11], x2[11])), x3[11], 0) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x1[11], x2[11])), x3[11] + 1, x1[11], x5[11])
(12): 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1) → COND_2636_1_MAIN_INVOKEMETHOD2(x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1, java.lang.Object(ARRAY(x2[12], x3[12])), x4[12], 1)
(13): COND_2636_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[13], x3[13])), x4[13], 1) → 2387_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[13], x3[13])), x4[13] + 1, x2[13], x6[13])
(14): 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[14], x3[14])), x4[14], x0[14], 1) → 2636_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x0[14], x3[14])), x4[14], x0[14])
(15): 2420_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1) → COND_2420_1_MAIN_INVOKEMETHOD2(x4[15] >= 0 && x4[15] < x2[15], java.lang.Object(ARRAY(x2[15], x3[15])), x4[15], 1)
(16): COND_2420_1_MAIN_INVOKEMETHOD2(TRUE, java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], 1) → 2595_1_MAIN_INVOKEMETHOD(java.lang.Object(ARRAY(x2[16], x3[16])), x4[16], x2[16], x6[16])

(2) -> (3), if ((x3[2] >= 0 && x3[2] < x1[2]* TRUE)∧(java.lang.Object(ARRAY(x1[2], x2[2])) →* java.lang.Object(ARRAY(x1[3], x2[3])))∧(x3[2]* x3[3])∧(x4[2]* x4[3]))

(4) -> (5), if ((x4[4] >= 0 && x4[4] < x2[4]* TRUE)∧(java.lang.Object(ARRAY(x2[4], x3[4])) →* java.lang.Object(ARRAY(x2[5], x3[5])))∧(x4[4]* x4[5]))

(3) -> (6), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x3[3]* x4[6])∧(x1[3]* x0[6])∧(x5[3]* x5[6]))

(5) -> (6), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[5]* x4[6])∧(x2[5]* x0[6])∧(x6[5]* x5[6]))

(16) -> (6), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[6], x3[6])))∧(x4[16]* x4[6])∧(x2[16]* x0[6])∧(x6[16]* x5[6]))

(3) -> (7), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x3[3]* x5[7])∧(x1[3]* x0[7])∧(x5[3]* 0))

(5) -> (7), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[5]* x5[7])∧(x2[5]* x0[7])∧(x6[5]* 0))

(16) -> (7), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x3[7], x4[7])))∧(x4[16]* x5[7])∧(x2[16]* x0[7])∧(x6[16]* 0))

(6) -> (8), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[6]* x3[8])∧(x1[6]* x4[8]))

(7) -> (8), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x5[7]* x3[8])∧(1* x4[8]))

(14) -> (8), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[8], x2[8])))∧(x4[14]* x3[8])∧(x0[14]* x4[8]))

(8) -> (9), if ((x3[8] >= 0 && x1[8] > x3[8] + 1 && 0 <= x3[8] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[8], x2[8])) →* java.lang.Object(ARRAY(x1[9], x2[9])))∧(x3[8]* x3[9])∧(x4[8]* x4[9]))

(6) -> (10), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[6]* x3[10])∧(x1[6]* 0))

(7) -> (10), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x5[7]* x3[10])∧(1* 0))

(14) -> (10), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x1[10], x2[10])))∧(x4[14]* x3[10])∧(x0[14]* 0))

(10) -> (11), if ((x3[10] >= 0 && x1[10] > x3[10] + 1 && 0 <= x3[10] + 1* TRUE)∧(java.lang.Object(ARRAY(x1[10], x2[10])) →* java.lang.Object(ARRAY(x1[11], x2[11])))∧(x3[10]* x3[11]))

(6) -> (12), if ((java.lang.Object(ARRAY(x0[6], x3[6])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[6]* x4[12])∧(x1[6]* 1))

(7) -> (12), if ((java.lang.Object(ARRAY(x0[7], x4[7])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x5[7]* x4[12]))

(14) -> (12), if ((java.lang.Object(ARRAY(x0[14], x3[14])) →* java.lang.Object(ARRAY(x2[12], x3[12])))∧(x4[14]* x4[12])∧(x0[14]* 1))

(12) -> (13), if ((x4[12] >= 0 && x2[12] > x4[12] + 1 && 0 <= x4[12] + 1* TRUE)∧(java.lang.Object(ARRAY(x2[12], x3[12])) →* java.lang.Object(ARRAY(x2[13], x3[13])))∧(x4[12]* x4[13]))

(3) -> (14), if ((java.lang.Object(ARRAY(x1[3], x2[3])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x3[3]* x4[14])∧(x1[3]* x0[14])∧(x5[3]* 1))

(5) -> (14), if ((java.lang.Object(ARRAY(x2[5], x3[5])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[5]* x4[14])∧(x2[5]* x0[14])∧(x6[5]* 1))

(16) -> (14), if ((java.lang.Object(ARRAY(x2[16], x3[16])) →* java.lang.Object(ARRAY(x2[14], x3[14])))∧(x4[16]* x4[14])∧(x2[16]* x0[14])∧(x6[16]* 1))

(15) -> (16), if ((x4[15] >= 0 && x4[15] < x2[15]* TRUE)∧(java.lang.Object(ARRAY(x2[15], x3[15])) →* java.lang.Object(ARRAY(x2[16], x3[16])))∧(x4[15]* x4[16]))

The set Q consists of the following terms:
2387_0_power_Load(x0, x1)
2420_0_even_Load(x0)
2636_0_odd_Load(x0)
1300_0_odd_GT(x0)
Cond_1300_0_odd_GT(TRUE, x0)
Cond_1300_0_odd_GT1(TRUE, 1)
Cond_1300_0_odd_GT2(TRUE, x0)
Cond_1300_0_odd_GT3(TRUE, x0)
1401_1_odd_InvokeMethod(1224_0_even_Return(x0), x1)
1401_1_odd_InvokeMethod(1067_0_even_Return, 1)
Cond_924_0_even_GT(TRUE, x0)
Cond_924_0_even_GT1(TRUE, 1)
Cond_924_0_even_GT2(TRUE, x0)
Cond_924_0_even_GT3(TRUE, x0)
1172_1_even_InvokeMethod(1422_0_odd_Return(x0), x1)
1172_1_even_InvokeMethod(1372_0_odd_Return, 1)
Cond_730_0_power_GT(TRUE, x0, 1)
730_0_power_GT(x0, x1)
Cond_730_0_power_GT1(TRUE, x0, x1)
Cond_730_0_power_GT2(TRUE, x0, x1)
955_1_power_InvokeMethod(845_0_power_Return(x0), x1, x2, x0, 1)
955_1_power_InvokeMethod(1188_0_power_Return(x0, x1), x2, x3, x0, x4)
955_1_power_InvokeMethod(1287_0_power_Return(x0), x1, x2, x3, x4)
1072_0_power_NE(x0, x1, x2)
Cond_1072_0_power_NE(TRUE, x0, x1, x2)

### (22) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 15 less nodes.