### (0) Obligation:

JBC Problem based on JBC Program:
`No human-readable program information known.`

Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: BubbleSortR

### (1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

### (2) Obligation:

FIGraph based on JBC Program:
Graph of 500 nodes with 2 SCCs.

### (3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

### (5) Obligation:

ITRS 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 TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(java.lang.Object(ARRAY(i303, a2291data)), i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)), 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(java.lang.Object(ARRAY(i663, a3434dataNew)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434dataNew)), i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, 0, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443ARR1(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Load3443ARR2(java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, 0, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))

### (6) GroundTermsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they always contain the same ground term.
We removed the following ground terms:
• 0

We removed arguments according to the following replacements:

Cond_Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → Cond_Load3443(x1, x2, x3, x4, x6, x7, x8, x9, x10)
Load3657(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Load3657(x1, x2, x3, x5, x6, x7, x8, x9)
Cond_Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14) → Cond_Load3443ARR2(x1, x2, x3, x4, x6, x7, x8, x9, x10, x11, x12, x13, x14)
Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) → Load3443ARR2(x1, x2, x3, x5, x6, x7, x8, x9, x10, x11, x12, x13)
Cond_Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) → Cond_Load3443ARR1(x1, x2, x3, x4, x6, x7, x8, x9, x10, x11, x12)
Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Load3443ARR1(x1, x2, x3, x5, x6, x7, x8, x9, x10, x11)
Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Load3443(x1, x2, x3, x5, x6, x7, x8, x9)

### (7) Obligation:

ITRS 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 TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(java.lang.Object(ARRAY(i303, a2291data)), i303, i304, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)), 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(java.lang.Object(ARRAY(i663, a3434dataNew)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434dataNew)), i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, java.lang.Object(ARRAY(i663, a3434data)), i663, i304, i662, java.lang.Object(ARRAY(i663, a3434data)), i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))
Load3443ARR1(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Cond_Load3443ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6)
Load3443ARR2(java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)), x5, x6, x7, x8)
Cond_Load3443(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2, x3, java.lang.Object(ARRAY(x0, x1)), x4, x3, java.lang.Object(ARRAY(x0, x1)))

### (8) DuplicateArgsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they only appear as duplicates.
We removed arguments according to the following replacements:

Cond_Load3443(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_Load3443(x1, x3, x4, x7, x8, x9)
Load3657(x1, x2, x3, x4, x5, x6, x7, x8) → Load3657(x2, x3, x6, x7, x8)
Cond_Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13) → Cond_Load3443ARR2(x1, x3, x4, x7, x8, x9, x10, x11, x12, x13)
Load3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12) → Load3443ARR2(x2, x3, x6, x7, x8, x9, x10, x11, x12)
Cond_Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11) → Cond_Load3443ARR1(x1, x3, x4, x7, x8, x9, x10, x11)
Load3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10) → Load3443ARR1(x2, x3, x6, x7, x8, x9, x10)
Load3443(x1, x2, x3, x4, x5, x6, x7, x8) → Load3443(x2, x3, x6, x7, x8)

### (9) Obligation:

ITRS 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 TRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)
The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (10) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

### (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:

Boolean, Integer

The ITRS R consists of the following rules:
Load2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Cond_Load2339(i304 > 0 && i304 < i303, java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → Load3443(i303, i304, 0, i303 - i304, java.lang.Object(ARRAY(i303, a2291data)))
Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Load3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Cond_Load3443ARR1(i677 <= i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 < i662 && i661 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
Cond_Load3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → Load3443(i663, i304, i661 + 1, i662, java.lang.Object(ARRAY(i663, a3434data)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Load3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Cond_Load3443ARR2(i661 + 1 > 0 && i661 + 1 < i663 && i661 >= 0 && i661 < i663 && i661 + 1 > 0 && i661 + 1 < i663 && i677 > i706 && i661 + 1 > 0 && i661 + 1 < i663 && i661 < i662, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
Cond_Load3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → Load3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
Load3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Cond_Load3443(i661 >= i662 && i304 > 0 && i304 + 1 > 0, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
Cond_Load3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → Load2339(java.lang.Object(ARRAY(i663, a3434data)), i663, i304 + 1)

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧(java.lang.Object(ARRAY(i303[0], a2291data[0])) →* java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(i304[0]* i304[1]))

(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(0* i661[3]))

(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))

(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i661[2] + 1* i661[3]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))

(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))

(3) -> (4), if ((i706[3]* i706[4])∧(java.lang.Object(ARRAY(i663[3], a3434data[3])) →* java.lang.Object(ARRAY(i663[4], a3434data[4])))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧(java.lang.Object(ARRAY(i663[4], a3434data[4])) →* java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[6], a3434data[6])))∧(i663[5]* i663[6]))

(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧(java.lang.Object(ARRAY(i663[6], a3434data[6])) →* java.lang.Object(ARRAY(i663[7], a3434data[7])))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧(java.lang.Object(ARRAY(i663[7], a3434data[7])) →* java.lang.Object(ARRAY(i663[8], a3434data[8])))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧(java.lang.Object(ARRAY(i663[8], a3434dataNew[8])) →* java.lang.Object(ARRAY(i663[2], a3434data[2]))))

(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧(java.lang.Object(ARRAY(i663[9], a3434data[9])) →* java.lang.Object(ARRAY(i663[10], a3434data[10])))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))

(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧(java.lang.Object(ARRAY(i663[10], a3434data[10])) →* java.lang.Object(ARRAY(i303[0], a2291data[0]))))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (12) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

### (13) 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:

Boolean, Integer

R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧(java.lang.Object(ARRAY(i303[0], a2291data[0])) →* java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(i304[0]* i304[1]))

(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(0* i661[3]))

(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))

(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧(java.lang.Object(ARRAY(i303[1], a2291data[1])) →* java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i661[2] + 1* i661[3]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[6], a3434data[6]))))

(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧(java.lang.Object(ARRAY(i663[2], a3434data[2])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))

(3) -> (4), if ((i706[3]* i706[4])∧(java.lang.Object(ARRAY(i663[3], a3434data[3])) →* java.lang.Object(ARRAY(i663[4], a3434data[4])))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧(java.lang.Object(ARRAY(i663[4], a3434data[4])) →* java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[3], a3434data[3])))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[6], a3434data[6])))∧(i663[5]* i663[6]))

(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧(java.lang.Object(ARRAY(i663[5], a3434data[5])) →* java.lang.Object(ARRAY(i663[9], a3434data[9]))))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧(java.lang.Object(ARRAY(i663[6], a3434data[6])) →* java.lang.Object(ARRAY(i663[7], a3434data[7])))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧(java.lang.Object(ARRAY(i663[7], a3434data[7])) →* java.lang.Object(ARRAY(i663[8], a3434data[8])))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧(java.lang.Object(ARRAY(i663[8], a3434dataNew[8])) →* java.lang.Object(ARRAY(i663[2], a3434data[2]))))

(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧(java.lang.Object(ARRAY(i663[9], a3434data[9])) →* java.lang.Object(ARRAY(i663[10], a3434data[10])))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))

(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧(java.lang.Object(ARRAY(i663[10], a3434data[10])) →* java.lang.Object(ARRAY(i303[0], a2291data[0]))))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (14) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

### (15) 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:

Boolean, Integer

R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧((i303[0]* i303[1])∧(a2291data[0]* a2291data[1]))∧(i304[0]* i304[1]))

(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))

(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))

(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))

(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧((i663[9]* i663[10])∧(a3434data[9]* a3434data[10]))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))

(10) -> (0), if ((i304[10] + 1* i304[0])∧(i663[10]* i303[0])∧((i663[10]* i303[0])∧(a3434data[10]* a2291data[0])))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (16) 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 LOAD2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → COND_LOAD2339(&&(>(i304, 0), <(i304, i303)), java.lang.Object(ARRAY(i303, a2291data)), i303, i304) the following chains were created:
• We consider the chain LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]), COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1]))) which results in the following constraint:

(1)    (i303[0]=i303[1]&&(>(i304[0], 0), <(i304[0], i303[0]))=TRUEa2291data[0]=a2291data[1]i304[0]=i304[1]LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥NonInfC∧LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])∧(UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥))

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

(2)    (>(i304[0], 0)=TRUE<(i304[0], i303[0])=TRUELOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥NonInfC∧LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])≥COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])∧(UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥))

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

(3)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(4)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(5)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(6)    (i304[0] + [-1] ≥ 0∧i303[0] + [-1] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(7)    (i304[0] ≥ 0∧i303[0] + [-2] + [-1]i304[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + (-1)bni_28] + [bni_28]i303[0] + [(-1)bni_28]i304[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(8)    (i304[0] ≥ 0∧i303[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + bni_28] + [bni_28]i303[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

For Pair COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → LOAD3443(i303, i304, 0, -(i303, i304), java.lang.Object(ARRAY(i303, a2291data))) the following chains were created:
• We consider the chain COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1]))) which results in the following constraint:

(9)    (COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1])≥NonInfC∧COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1])≥LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))∧(UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥))

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

(10)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)

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

(11)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)

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

(12)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧[(-1)bso_31] ≥ 0)

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

(13)    ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

For Pair LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
• We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

(14)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))

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

(15)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)

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

(16)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)

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

(17)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_33] ≥ 0)

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

(18)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_33] ≥ 0)

For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) the following chains were created:
• We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

(19)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))

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

(20)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)

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

(21)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)

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

(22)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[(-1)bso_35] ≥ 0)

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

(23)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

For Pair LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677, i706), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), <(i661, i662)), >(+(i661, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) the following chains were created:
• We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(24)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(25)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(26)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)

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

(27)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)

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

(28)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_36] + [bni_36]i663[4] + [(-1)bni_36]i304[4] ≥ 0∧[(-1)bso_37] ≥ 0)

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

(29)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

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

(30)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

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

(31)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

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

(32)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

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

(33)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

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

(34)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

(35)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

For Pair COND_LOAD3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
• We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(36)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))

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

(37)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)

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

(38)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)

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

(39)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_39] ≥ 0)

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

(40)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)

For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) the following chains were created:
• We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

(41)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))

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

(42)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)

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

(43)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)

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

(44)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_41] ≥ 0)

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

(45)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)

For Pair LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661, 1), 0), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >(i677, i706)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), <(i661, i662)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) the following chains were created:
• We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(46)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(47)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(48)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)

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

(49)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)

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

(50)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)Bound*bni_42] + [bni_42]i663[7] + [(-1)bni_42]i304[7] ≥ 0∧[(-1)bso_43] ≥ 0)

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

(51)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

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

(52)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

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

(53)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

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

(54)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

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

(55)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

(56)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

For Pair COND_LOAD3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew))) the following chains were created:
• We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(57)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))

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

(58)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)

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

(59)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)

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

(60)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_45] ≥ 0)

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

(61)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

For Pair LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → COND_LOAD3443(&&(&&(>=(i661, i662), >(i304, 0)), >(+(i304, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) the following chains were created:
• We consider the chain LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))), COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1)) which results in the following constraint:

(62)    (i304[9]=i304[10]i663[9]=i663[10]a3434data[9]=a3434data[10]&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0))=TRUEi661[9]=i661[10]i662[9]=i662[10]LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥NonInfC∧LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥))

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

(63)    (>(+(i304[9], 1), 0)=TRUE>=(i661[9], i662[9])=TRUE>(i304[9], 0)=TRUELOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥NonInfC∧LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))≥COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))∧(UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥))

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

(64)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)

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

(65)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)

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

(66)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧[(-1)Bound*bni_46] + [bni_46]i663[9] + [(-1)bni_46]i304[9] ≥ 0∧[(-1)bso_47] ≥ 0)

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

(67)    (i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

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

(68)    ([1] + i304[9] ≥ 0∧i661[9] + [-1]i662[9] ≥ 0∧i304[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

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

(69)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

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

(70)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

(71)    ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

For Pair COND_LOAD3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD2339(java.lang.Object(ARRAY(i663, a3434data)), i663, +(i304, 1)) the following chains were created:
• We consider the chain COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1)) which results in the following constraint:

(72)    (COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10])))≥NonInfC∧COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10])))≥LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))∧(UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥))

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

(73)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)

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

(74)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)

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

(75)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧[1 + (-1)bso_49] ≥ 0)

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

(76)    ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_49] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• LOAD2339(java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → COND_LOAD2339(&&(>(i304, 0), <(i304, i303)), java.lang.Object(ARRAY(i303, a2291data)), i303, i304)
• (i304[0] ≥ 0∧i303[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])), ≥)∧0 = 0∧[(-1)Bound*bni_28 + bni_28] + [bni_28]i303[0] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

• COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303, a2291data)), i303, i304) → LOAD3443(i303, i304, 0, -(i303, i304), java.lang.Object(ARRAY(i303, a2291data)))
• ((UIncreasing(LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_31] ≥ 0)

• LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data)))
• ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_33] ≥ 0)

• LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
• ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_35] ≥ 0)

• LOAD3443ARR1(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677, i706), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), <(i661, i662)), >(+(i661, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677)
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_36] = 0∧[(-1)Bound*bni_36 + (2)bni_36] + [bni_36]i661[4] + [bni_36]i663[4] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

• COND_LOAD3443ARR1(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i706, i677) → LOAD3443(i663, i304, +(i661, 1), i662, java.lang.Object(ARRAY(i663, a3434data)))
• ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)

• LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
• ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)

• LOAD3443ARR2(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661, 1), 0), <(+(i661, 1), i663)), >=(i661, 0)), <(i661, i663)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), >(i677, i706)), >(+(i661, 1), 0)), <(+(i661, 1), i663)), <(i661, i662)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677)
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_42] = 0∧[(-1)Bound*bni_42 + (2)bni_42] + [bni_42]i661[7] + [bni_42]i663[7] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_43] ≥ 0)

• COND_LOAD3443ARR2(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)), i977, i790, i706, i677) → LOAD3657(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434dataNew)))
• ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_45] ≥ 0)

• LOAD3443(i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → COND_LOAD3443(&&(&&(>=(i661, i662), >(i304, 0)), >(+(i304, 1), 0)), i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data)))
• ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)
• ([1] + i304[9] ≥ 0∧i661[9] ≥ 0∧i304[9] ≥ 0∧i662[9] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))), ≥)∧0 = 0∧[bni_46] = 0∧[(-1)Bound*bni_46 + (-1)bni_46] + [(-1)bni_46]i304[9] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_47] ≥ 0)

• COND_LOAD3443(TRUE, i663, i304, i661, i662, java.lang.Object(ARRAY(i663, a3434data))) → LOAD2339(java.lang.Object(ARRAY(i663, a3434data)), i663, +(i304, 1))
• ((UIncreasing(LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_49] ≥ 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(LOAD2339(x1, x2, x3)) = [-1] + [-1]x1 + [-1]x3
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x1
POL(COND_LOAD2339(x1, x2, x3, x4)) = [-1] + [-1]x2 + [-1]x4
POL(&&(x1, x2)) = 0
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(<(x1, x2)) = [-1]
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x2
POL(-(x1, x2)) = x1 + [-1]x2
POL(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x2
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x5 + [-1]x2
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + [-1]x6 + [-1]x3
POL(<=(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1] + [-1]x5 + [-1]x2
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1] + [-1]x6 + [-1]x3
POL(COND_LOAD3443(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [-1]x3

The following pairs are in P>:

COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], +(i304[10], 1))

The following pairs are in Pbound:

LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])

The following pairs are in P:

LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(&&(>(i304[0], 0), <(i304[0], i303[0])), java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, -(i303[1], i304[1]), java.lang.Object(ARRAY(i303[1], a2291data[1])))
LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(&&(&&(>=(i661[9], i662[9]), >(i304[9], 0)), >(+(i304[9], 1), 0)), i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))

There are no usable rules.

### (18) 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:

Boolean, Integer

R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD2339(java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0]) → COND_LOAD2339(i304[0] > 0 && i304[0] < i303[0], java.lang.Object(ARRAY(i303[0], a2291data[0])), i303[0], i304[0])
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))

(0) -> (1), if ((i303[0]* i303[1])∧(i304[0] > 0 && i304[0] < i303[0]* TRUE)∧((i303[0]* i303[1])∧(a2291data[0]* a2291data[1]))∧(i304[0]* i304[1]))

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))

(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))

(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (19) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

### (20) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (21) 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 LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) the following chains were created:
• We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

(1)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))

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

(2)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)

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

(3)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)

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

(4)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_19] ≥ 0)

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

(5)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_19] ≥ 0)

For Pair COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) the following chains were created:
• We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(6)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))

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

(7)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)

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

(8)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)

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

(9)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[(-1)bso_21] ≥ 0)

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

(10)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_21] ≥ 0)

For Pair LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) the following chains were created:
• We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(11)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(12)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(13)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)

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

(14)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)

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

(15)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧[(-1)bso_23] ≥ 0)

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

(16)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i661[7] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

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

(17)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

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

(18)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

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

(19)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

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

(20)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

(21)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

For Pair LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) the following chains were created:
• We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

(22)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))

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

(23)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)

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

(24)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)

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

(25)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[1 + (-1)bso_25] ≥ 0)

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

(26)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)

For Pair COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) the following chains were created:
• We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(27)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))

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

(28)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)

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

(29)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)

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

(30)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_27] ≥ 0)

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

(31)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)

For Pair LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) the following chains were created:
• We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(32)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(33)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(34)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(35)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(36)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧[(-1)bso_29] ≥ 0)

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

(37)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)bni_28 + (-1)Bound*bni_28] + [bni_28]i662[4] + [(-1)bni_28]i661[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(38)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(39)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(40)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(41)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

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

(42)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

(43)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

For Pair LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) the following chains were created:
• We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

(44)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))

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

(45)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)

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

(46)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)

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

(47)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_31] ≥ 0)

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

(48)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
• ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_19] ≥ 0)

• COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
• ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_21] ≥ 0)

• LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(-1)Bound*bni_22] + [bni_22]i662[7] ≥ 0∧0 = 0∧[(-1)bso_23] ≥ 0)

• LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
• ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_25] ≥ 0)

• COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
• ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_27] ≥ 0)

• LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_28] + [bni_28]i662[4] ≥ 0∧0 = 0∧[(-1)bso_29] ≥ 0)

• LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
• ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_31] ≥ 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(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + x4
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x2 + [-1]x1
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1]x3 + x4
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1] + [-1]x4 + x5
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1] + [-1]x3 + x4
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(<(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + x5 + [-1]x4
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + x4 + [-1]x3
POL(<=(x1, x2)) = [-1]

The following pairs are in P>:

LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

The following pairs are in Pbound:

LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

The following pairs are in P:

LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

There are no usable rules.

### (23) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (24) IDependencyGraphProof (EQUIVALENT transformation)

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

### (26) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (27) IDependencyGraphProof (EQUIVALENT transformation)

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

### (29) 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

R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_LOAD2339(TRUE, java.lang.Object(ARRAY(i303[1], a2291data[1])), i303[1], i304[1]) → LOAD3443(i303[1], i304[1], 0, i303[1] - i304[1], java.lang.Object(ARRAY(i303[1], a2291data[1])))
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(9): LOAD3443(i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9]))) → COND_LOAD3443(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0, i663[9], i304[9], i661[9], i662[9], java.lang.Object(ARRAY(i663[9], a3434data[9])))
(10): COND_LOAD3443(TRUE, i663[10], i304[10], i661[10], i662[10], java.lang.Object(ARRAY(i663[10], a3434data[10]))) → LOAD2339(java.lang.Object(ARRAY(i663[10], a3434data[10])), i663[10], i304[10] + 1)

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(1) -> (3), if ((i303[1] - i304[1]* i662[3])∧(i304[1]* i304[3])∧(i303[1]* i663[3])∧((i303[1]* i663[3])∧(a2291data[1]* a3434data[3]))∧(0* i661[3]))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(1) -> (6), if ((i303[1] - i304[1]* i662[6])∧(i304[1]* i304[6])∧(i303[1]* i663[6])∧(0* i661[6])∧((i303[1]* i663[6])∧(a2291data[1]* a3434data[6])))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

(1) -> (9), if ((i304[1]* i304[9])∧(0* i661[9])∧((i303[1]* i663[9])∧(a2291data[1]* a3434data[9]))∧(i303[1]* i663[9])∧(i303[1] - i304[1]* i662[9]))

(2) -> (9), if ((i662[2]* i662[9])∧(i661[2] + 1* i661[9])∧(i304[2]* i304[9])∧(i663[2]* i663[9])∧((i663[2]* i663[9])∧(a3434data[2]* a3434data[9])))

(5) -> (9), if ((i661[5] + 1* i661[9])∧(i663[5]* i663[9])∧(i304[5]* i304[9])∧(i662[5]* i662[9])∧((i663[5]* i663[9])∧(a3434data[5]* a3434data[9])))

(9) -> (10), if ((i304[9]* i304[10])∧(i663[9]* i663[10])∧((i663[9]* i663[10])∧(a3434data[9]* a3434data[10]))∧(i661[9] >= i662[9] && i304[9] > 0 && i304[9] + 1 > 0* TRUE)∧(i661[9]* i661[10])∧(i662[9]* i662[10]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (30) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 3 less nodes.

### (31) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(3) -> (4), if ((i706[3]* i706[4])∧((i663[3]* i663[4])∧(a3434data[3]* a3434data[4]))∧(i663[3]* i663[4])∧(i304[3]* i304[4])∧(i662[3]* i662[4])∧(i661[3]* i661[4])∧(i677[3]* i677[4]))

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

(7) -> (8), if ((i304[7]* i304[8])∧(i663[7]* i663[8])∧(i662[7]* i662[8])∧(i706[7]* i706[8])∧(i977[7]* i977[8])∧(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7]* TRUE)∧(i790[7]* i790[8])∧((i663[7]* i663[8])∧(a3434data[7]* a3434data[8]))∧(i661[7]* i661[8])∧(i677[7]* i677[8]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (32) 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 LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) the following chains were created:
• We consider the chain LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) which results in the following constraint:

(1)    (LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥NonInfC∧LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))≥LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))∧(UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥))

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

(2)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)

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

(3)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)

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

(4)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧[(-1)bso_16] ≥ 0)

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

(5)    ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)

For Pair COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) the following chains were created:
• We consider the chain COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(6)    (COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥NonInfC∧COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8])≥LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))∧(UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥))

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

(7)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)

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

(8)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)

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

(9)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧[1 + (-1)bso_18] ≥ 0)

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

(10)    ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)

For Pair LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) the following chains were created:
• We consider the chain LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]), COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8]))) which results in the following constraint:

(11)    (i304[7]=i304[8]i663[7]=i663[8]i662[7]=i662[8]i706[7]=i706[8]i977[7]=i977[8]&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7]))=TRUEi790[7]=i790[8]a3434data[7]=a3434data[8]i661[7]=i661[8]i677[7]=i677[8]LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(12)    (<(i661[7], i662[7])=TRUE<(+(i661[7], 1), i663[7])=TRUE>(+(i661[7], 1), 0)=TRUE>(i677[7], i706[7])=TRUE<(i661[7], i663[7])=TRUE>=(i661[7], 0)=TRUELOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥NonInfC∧LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])≥COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])∧(UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥))

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

(13)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)

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

(14)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)

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

(15)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧[(-1)bso_20] ≥ 0)

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

(16)    (i662[7] + [-1] + [-1]i661[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

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

(17)    (i662[7] ≥ 0∧i663[7] + [-2] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧i663[7] + [-1] + [-1]i661[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[bni_19 + (-1)Bound*bni_19] + [(-1)bni_19]i661[7] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

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

(18)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] + [-1] + [-1]i706[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

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

(19)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

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

(20)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

(21)    (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

For Pair LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) the following chains were created:
• We consider the chain LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6]) which results in the following constraint:

(22)    (LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥NonInfC∧LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])))≥LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])∧(UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥))

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

(23)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)

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

(24)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)

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

(25)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧[(-1)bso_22] ≥ 0)

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

(26)    ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)

For Pair COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) the following chains were created:
• We consider the chain COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(27)    (COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥NonInfC∧COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5])≥LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))∧(UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥))

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

(28)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)

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

(29)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)

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

(30)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧[(-1)bso_24] ≥ 0)

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

(31)    ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)

For Pair LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) the following chains were created:
• We consider the chain LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]), COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5]))) which results in the following constraint:

(32)    (i304[4]=i304[5]&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0))=TRUEi661[4]=i661[5]i677[4]=i677[5]i706[4]=i706[5]i663[4]=i663[5]a3434data[4]=a3434data[5]i662[4]=i662[5]LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(33)    (>(+(i661[4], 1), 0)=TRUE<(i661[4], i662[4])=TRUE<(i661[4], i663[4])=TRUE>=(i661[4], 0)=TRUE<(+(i661[4], 1), i663[4])=TRUE<=(i677[4], i706[4])=TRUELOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥NonInfC∧LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])≥COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])∧(UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥))

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

(34)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)

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

(35)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)

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

(36)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧[(-1)bso_26] ≥ 0)

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

(37)    (i661[4] ≥ 0∧i662[4] + [-1] + [-1]i661[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

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

(38)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] + [-1] + [-1]i661[4] ≥ 0∧i661[4] ≥ 0∧i663[4] + [-2] + [-1]i661[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25] + [bni_25]i663[4] + [(-1)bni_25]i661[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

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

(39)    (i661[4] ≥ 0∧i662[4] ≥ 0∧i663[4] ≥ 0∧i661[4] ≥ 0∧[-1] + i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

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

(40)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] + [-1]i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

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

(41)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

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

(42)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

(43)    (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

For Pair LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) the following chains were created:
• We consider the chain LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3]) which results in the following constraint:

(44)    (LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥NonInfC∧LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])))≥LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])∧(UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥))

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

(45)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)

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

(46)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)

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

(47)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧[1 + (-1)bso_28] ≥ 0)

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

(48)    ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)

To summarize, we get the following constraints P for the following pairs.
• LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
• ((UIncreasing(LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)

• COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
• ((UIncreasing(LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_18] ≥ 0)

• LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)
• (i662[7] ≥ 0∧i663[7] ≥ 0∧i661[7] ≥ 0∧i677[7] ≥ 0∧[1] + i663[7] ≥ 0∧i661[7] ≥ 0∧i706[7] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])), ≥)∧0 = 0∧[(3)bni_19 + (-1)Bound*bni_19] + [bni_19]i663[7] ≥ 0∧0 = 0∧[(-1)bso_20] ≥ 0)

• LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
• ((UIncreasing(LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_22] ≥ 0)

• COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
• ((UIncreasing(LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_24] ≥ 0)

• LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)
• (i661[4] ≥ 0∧i662[4] ≥ 0∧[1] + i663[4] ≥ 0∧i661[4] ≥ 0∧i663[4] ≥ 0∧i706[4] ≥ 0∧i677[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])), ≥)∧0 = 0∧[(-1)Bound*bni_25 + (2)bni_25] + [bni_25]i663[4] ≥ 0∧0 = 0∧[(-1)bso_26] ≥ 0)

• LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])
• ((UIncreasing(LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 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(LOAD3657(x1, x2, x3, x4, x5)) = [-1] + [-1]x3 + [-1]x5
POL(java.lang.Object(x1)) = x1
POL(ARRAY(x1, x2)) = [-1] + [-1]x1
POL(LOAD3443(x1, x2, x3, x4, x5)) = [-1]x3 + [-1]x5
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]
POL(COND_LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [-1]x4 + [-1]x6
POL(LOAD3443ARR2(x1, x2, x3, x4, x5, x6, x7, x8, x9)) = [-1]x3 + [-1]x5
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = 0
POL(0) = 0
POL(<(x1, x2)) = [-1]
POL(>=(x1, x2)) = [-1]
POL(COND_LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7, x8)) = [-1] + [-1]x6 + [-1]x4
POL(LOAD3443ARR1(x1, x2, x3, x4, x5, x6, x7)) = [-1] + [-1]x5 + [-1]x3
POL(<=(x1, x2)) = [-1]

The following pairs are in P>:

COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

The following pairs are in Pbound:

LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

The following pairs are in P:

LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], +(i661[2], 1), i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(i661[7], 1), 0), <(+(i661[7], 1), i663[7])), >=(i661[7], 0)), <(i661[7], i663[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), >(i677[7], i706[7])), >(+(i661[7], 1), 0)), <(+(i661[7], 1), i663[7])), <(i661[7], i662[7])), i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], +(i661[5], 1), i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(&&(&&(&&(&&(&&(&&(<=(i677[4], i706[4]), >(+(i661[4], 1), 0)), <(+(i661[4], 1), i663[4])), >=(i661[4], 0)), <(i661[4], i663[4])), <(i661[4], i662[4])), >(+(i661[4], 1), 0)), i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

There are no usable rules.

### (34) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(7): LOAD3443ARR2(i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7]) → COND_LOAD3443ARR2(i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] >= 0 && i661[7] < i663[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i677[7] > i706[7] && i661[7] + 1 > 0 && i661[7] + 1 < i663[7] && i661[7] < i662[7], i663[7], i304[7], i661[7], i662[7], java.lang.Object(ARRAY(i663[7], a3434data[7])), i977[7], i790[7], i706[7], i677[7])
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(4): LOAD3443ARR1(i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4]) → COND_LOAD3443ARR1(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0, i663[4], i304[4], i661[4], i662[4], java.lang.Object(ARRAY(i663[4], a3434data[4])), i706[4], i677[4])

(4) -> (5), if ((i304[4]* i304[5])∧(i677[4] <= i706[4] && i661[4] + 1 > 0 && i661[4] + 1 < i663[4] && i661[4] >= 0 && i661[4] < i663[4] && i661[4] < i662[4] && i661[4] + 1 > 0* TRUE)∧(i661[4]* i661[5])∧(i677[4]* i677[5])∧(i706[4]* i706[5])∧((i663[4]* i663[5])∧(a3434data[4]* a3434data[5]))∧(i662[4]* i662[5])∧(i663[4]* i663[5]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

(6) -> (7), if ((i706[6]* i706[7])∧(i790[6]* i790[7])∧(i677[6]* i677[7])∧(i661[6]* i661[7])∧(i304[6]* i304[7])∧(i662[6]* i662[7])∧(i663[6]* i663[7])∧((i663[6]* i663[7])∧(a3434data[6]* a3434data[7]))∧(i977[6]* i977[7]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (35) IDependencyGraphProof (EQUIVALENT transformation)

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

### (37) 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

R is empty.

The integer pair graph contains the following rules and edges:
(2): LOAD3657(i663[2], i304[2], i661[2], i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2]))) → LOAD3443(i663[2], i304[2], i661[2] + 1, i662[2], java.lang.Object(ARRAY(i663[2], a3434data[2])))
(8): COND_LOAD3443ARR2(TRUE, i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434data[8])), i977[8], i790[8], i706[8], i677[8]) → LOAD3657(i663[8], i304[8], i661[8], i662[8], java.lang.Object(ARRAY(i663[8], a3434dataNew[8])))
(6): LOAD3443(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6]))) → LOAD3443ARR2(i663[6], i304[6], i661[6], i662[6], java.lang.Object(ARRAY(i663[6], a3434data[6])), i977[6], i790[6], i706[6], i677[6])
(5): COND_LOAD3443ARR1(TRUE, i663[5], i304[5], i661[5], i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])), i706[5], i677[5]) → LOAD3443(i663[5], i304[5], i661[5] + 1, i662[5], java.lang.Object(ARRAY(i663[5], a3434data[5])))
(3): LOAD3443(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3]))) → LOAD3443ARR1(i663[3], i304[3], i661[3], i662[3], java.lang.Object(ARRAY(i663[3], a3434data[3])), i706[3], i677[3])

(8) -> (2), if ((i663[8]* i663[2])∧(i661[8]* i661[2])∧(i304[8]* i304[2])∧(i662[8]* i662[2])∧((i663[8]* i663[2])∧(a3434dataNew[8]* a3434data[2])))

(2) -> (3), if ((i304[2]* i304[3])∧(i662[2]* i662[3])∧(i663[2]* i663[3])∧((i663[2]* i663[3])∧(a3434data[2]* a3434data[3]))∧(i661[2] + 1* i661[3]))

(5) -> (3), if ((i661[5] + 1* i661[3])∧((i663[5]* i663[3])∧(a3434data[5]* a3434data[3]))∧(i662[5]* i662[3])∧(i663[5]* i663[3])∧(i304[5]* i304[3]))

(2) -> (6), if ((i304[2]* i304[6])∧(i663[2]* i663[6])∧(i661[2] + 1* i661[6])∧(i662[2]* i662[6])∧((i663[2]* i663[6])∧(a3434data[2]* a3434data[6])))

(5) -> (6), if ((i661[5] + 1* i661[6])∧(i304[5]* i304[6])∧(i662[5]* i662[6])∧((i663[5]* i663[6])∧(a3434data[5]* a3434data[6]))∧(i663[5]* i663[6]))

The set Q consists of the following terms:
Load2339(java.lang.Object(ARRAY(x0, x1)), x0, x2)
Cond_Load2339(TRUE, java.lang.Object(ARRAY(x0, x1)), x0, x2)
Load3657(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))
Load3443ARR1(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Cond_Load3443ARR1(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6)
Load3443ARR2(x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443ARR2(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)), x5, x6, x7, x8)
Cond_Load3443(TRUE, x0, x1, x2, x3, java.lang.Object(ARRAY(x0, x4)))

### (38) IDependencyGraphProof (EQUIVALENT transformation)

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

### (40) Obligation:

ITRS 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 TRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

### (41) DuplicateArgsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they only appear as duplicates.
We removed arguments according to the following replacements:

Cond_ArrayAccess2263(x1, x2, x3, x4, x5, x6, x7) → Cond_ArrayAccess2263(x1, x2, x3, x6, x7)
ArrayAccess2263(x1, x2, x3, x4, x5, x6) → ArrayAccess2263(x1, x2, x5, x6)

### (42) Obligation:

ITRS 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 TRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

### (43) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

### (44) 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:

Boolean, Integer

The ITRS R consists of the following rules:
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_Load1777(i2 > 0 && i139 >= i2 && i140 < i70, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140)
ArrayAccess2263(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Cond_ArrayAccess2263(i140 >= 0 && i140 < i70 && i140 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i188, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)
Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Load1777ARR3(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Cond_Load1777ARR3(i140 >= 0 && i140 < i70 && i139 > 0 && i139 < i2 && i140 + 1 > 0 && i139 + 1 > 0, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140, java.lang.Object(java.lang.String(i261, i260, i262, a2155))) → Load1777(java.lang.Object(ARRAY(i2, a1654data)), i139 + 1, java.lang.Object(ARRAY(i70, a1655dataNew)), i140 + 1)

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧(java.lang.Object(ARRAY(i2[0], a1654data[0])) →* java.lang.Object(ARRAY(i2[1], a1654data[1])))∧(java.lang.Object(ARRAY(i70[0], a1655data[0])) →* java.lang.Object(ARRAY(i70[1], a1655data[1])))∧(i139[0]* i139[1]))

(1) -> (2), if ((i140[1]* i140[2])∧(java.lang.Object(ARRAY(i70[1], a1655data[1])) →* java.lang.Object(ARRAY(i70[2], a1655data[2])))∧(java.lang.Object(ARRAY(i2[1], a1654data[1])) →* java.lang.Object(ARRAY(i2[2], a1654data[2])))∧(i139[1]* i188[2]))

(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧(java.lang.Object(ARRAY(i70[2], a1655data[2])) →* java.lang.Object(ARRAY(i70[3], a1655data[3])))∧(java.lang.Object(ARRAY(i2[2], a1654data[2])) →* java.lang.Object(ARRAY(i2[3], a1654data[3]))))

(3) -> (0), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[0], a1655data[0]))))

(3) -> (4), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[4], a1654data[4])))∧(i188[3]* i139[4])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(i140[3] + 1* i140[4]))

(4) -> (5), if ((i140[4]* i140[5])∧(java.lang.Object(ARRAY(i70[4], a1655data[4])) →* java.lang.Object(ARRAY(i70[5], a1655data[5])))∧(i139[4]* i139[5])∧(java.lang.Object(ARRAY(i2[4], a1654data[4])) →* java.lang.Object(ARRAY(i2[5], a1654data[5])))∧(java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])) →* java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))))

(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i70[5], a1655data[5])) →* java.lang.Object(ARRAY(i70[6], a1655data[6])))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧(java.lang.Object(ARRAY(i2[5], a1654data[5])) →* java.lang.Object(ARRAY(i2[6], a1654data[6])))∧(java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])) →* java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))))

(6) -> (0), if ((java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[0], a1655data[0])))∧(i139[6] + 1* i139[0])∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i140[6] + 1* i140[0]))

(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧(java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[4], a1654data[4]))))

The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

### (45) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

### (46) 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:

Boolean, Integer

R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧(java.lang.Object(ARRAY(i2[0], a1654data[0])) →* java.lang.Object(ARRAY(i2[1], a1654data[1])))∧(java.lang.Object(ARRAY(i70[0], a1655data[0])) →* java.lang.Object(ARRAY(i70[1], a1655data[1])))∧(i139[0]* i139[1]))

(1) -> (2), if ((i140[1]* i140[2])∧(java.lang.Object(ARRAY(i70[1], a1655data[1])) →* java.lang.Object(ARRAY(i70[2], a1655data[2])))∧(java.lang.Object(ARRAY(i2[1], a1654data[1])) →* java.lang.Object(ARRAY(i2[2], a1654data[2])))∧(i139[1]* i188[2]))

(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧(java.lang.Object(ARRAY(i70[2], a1655data[2])) →* java.lang.Object(ARRAY(i70[3], a1655data[3])))∧(java.lang.Object(ARRAY(i2[2], a1654data[2])) →* java.lang.Object(ARRAY(i2[3], a1654data[3]))))

(3) -> (0), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[0], a1655data[0]))))

(3) -> (4), if ((java.lang.Object(ARRAY(i2[3], a1654data[3])) →* java.lang.Object(ARRAY(i2[4], a1654data[4])))∧(i188[3]* i139[4])∧(java.lang.Object(ARRAY(i70[3], a1655dataNew[3])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(i140[3] + 1* i140[4]))

(4) -> (5), if ((i140[4]* i140[5])∧(java.lang.Object(ARRAY(i70[4], a1655data[4])) →* java.lang.Object(ARRAY(i70[5], a1655data[5])))∧(i139[4]* i139[5])∧(java.lang.Object(ARRAY(i2[4], a1654data[4])) →* java.lang.Object(ARRAY(i2[5], a1654data[5])))∧(java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])) →* java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))))

(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i70[5], a1655data[5])) →* java.lang.Object(ARRAY(i70[6], a1655data[6])))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧(java.lang.Object(ARRAY(i2[5], a1654data[5])) →* java.lang.Object(ARRAY(i2[6], a1654data[6])))∧(java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])) →* java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))))

(6) -> (0), if ((java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[0], a1655data[0])))∧(i139[6] + 1* i139[0])∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[0], a1654data[0])))∧(i140[6] + 1* i140[0]))

(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧(java.lang.Object(ARRAY(i70[6], a1655dataNew[6])) →* java.lang.Object(ARRAY(i70[4], a1655data[4])))∧(java.lang.Object(ARRAY(i2[6], a1654data[6])) →* java.lang.Object(ARRAY(i2[4], a1654data[4]))))

The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

### (47) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

### (48) 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:

Boolean, Integer

R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0], java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])
(1): COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1])
(2): ARRAYACCESS2263(java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2]) → COND_ARRAYACCESS2263(i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0, java.lang.Object(ARRAY(i2[2], a1654data[2])), i188[2], java.lang.Object(ARRAY(i70[2], a1655data[2])), i140[2])
(3): COND_ARRAYACCESS2263(TRUE, java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655data[3])), i140[3]) → LOAD1777(java.lang.Object(ARRAY(i2[3], a1654data[3])), i188[3], java.lang.Object(ARRAY(i70[3], a1655dataNew[3])), i140[3] + 1)
(4): LOAD1777(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4]) → LOAD1777ARR3(java.lang.Object(ARRAY(i2[4], a1654data[4])), i139[4], java.lang.Object(ARRAY(i70[4], a1655data[4])), i140[4], java.lang.Object(java.lang.String(i261[4], i260[4], i262[4], a2155[4])))
(5): LOAD1777ARR3(java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5]))) → COND_LOAD1777ARR3(i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0, java.lang.Object(ARRAY(i2[5], a1654data[5])), i139[5], java.lang.Object(ARRAY(i70[5], a1655data[5])), i140[5], java.lang.Object(java.lang.String(i261[5], i260[5], i262[5], a2155[5])))
(6): COND_LOAD1777ARR3(TRUE, java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6], java.lang.Object(ARRAY(i70[6], a1655data[6])), i140[6], java.lang.Object(java.lang.String(i261[6], i260[6], i262[6], a2155[6]))) → LOAD1777(java.lang.Object(ARRAY(i2[6], a1654data[6])), i139[6] + 1, java.lang.Object(ARRAY(i70[6], a1655dataNew[6])), i140[6] + 1)

(0) -> (1), if ((i2[0] > 0 && i139[0] >= i2[0] && i140[0] < i70[0]* TRUE)∧(i140[0]* i140[1])∧((i2[0]* i2[1])∧(a1654data[0]* a1654data[1]))∧((i70[0]* i70[1])∧(a1655data[0]* a1655data[1]))∧(i139[0]* i139[1]))

(1) -> (2), if ((i140[1]* i140[2])∧((i70[1]* i70[2])∧(a1655data[1]* a1655data[2]))∧((i2[1]* i2[2])∧(a1654data[1]* a1654data[2]))∧(i139[1]* i188[2]))

(2) -> (3), if ((i140[2] >= 0 && i140[2] < i70[2] && i140[2] + 1 > 0* TRUE)∧(i188[2]* i188[3])∧(i140[2]* i140[3])∧((i70[2]* i70[3])∧(a1655data[2]* a1655data[3]))∧((i2[2]* i2[3])∧(a1654data[2]* a1654data[3])))

(3) -> (0), if (((i2[3]* i2[0])∧(a1654data[3]* a1654data[0]))∧(i188[3]* i139[0])∧(i140[3] + 1* i140[0])∧((i70[3]* i70[0])∧(a1655dataNew[3]* a1655data[0])))

(3) -> (4), if (((i2[3]* i2[4])∧(a1654data[3]* a1654data[4]))∧(i188[3]* i139[4])∧((i70[3]* i70[4])∧(a1655dataNew[3]* a1655data[4]))∧(i140[3] + 1* i140[4]))

(4) -> (5), if ((i140[4]* i140[5])∧((i70[4]* i70[5])∧(a1655data[4]* a1655data[5]))∧(i139[4]* i139[5])∧((i2[4]* i2[5])∧(a1654data[4]* a1654data[5]))∧((i261[4]* i261[5])∧(i260[4]* i260[5])∧(i262[4]* i262[5])∧(a2155[4]* a2155[5])))

(5) -> (6), if ((i140[5] >= 0 && i140[5] < i70[5] && i139[5] > 0 && i139[5] < i2[5] && i140[5] + 1 > 0 && i139[5] + 1 > 0* TRUE)∧((i70[5]* i70[6])∧(a1655data[5]* a1655data[6]))∧(i140[5]* i140[6])∧(i139[5]* i139[6])∧((i2[5]* i2[6])∧(a1654data[5]* a1654data[6]))∧((i261[5]* i261[6])∧(i260[5]* i260[6])∧(i262[5]* i262[6])∧(a2155[5]* a2155[6])))

(6) -> (0), if (((i70[6]* i70[0])∧(a1655dataNew[6]* a1655data[0]))∧(i139[6] + 1* i139[0])∧((i2[6]* i2[0])∧(a1654data[6]* a1654data[0]))∧(i140[6] + 1* i140[0]))

(6) -> (4), if ((i140[6] + 1* i140[4])∧(i139[6] + 1* i139[4])∧((i70[6]* i70[4])∧(a1655dataNew[6]* a1655data[4]))∧((i2[6]* i2[4])∧(a1654data[6]* a1654data[4])))

The set Q consists of the following terms:
Load1777(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_Load1777(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
ArrayAccess2263(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Cond_ArrayAccess2263(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5)
Load1777ARR3(java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))
Cond_Load1777ARR3(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, java.lang.Object(ARRAY(x3, x4)), x5, java.lang.Object(java.lang.String(x6, x7, x8, x9)))

### (49) 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 LOAD1777(java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) → COND_LOAD1777(&&(&&(>(i2, 0), >=(i139, i2)), <(i140, i70)), java.lang.Object(ARRAY(i2, a1654data)), i139, java.lang.Object(ARRAY(i70, a1655data)), i140) the following chains were created:
• We consider the chain LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]) → COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0]), COND_LOAD1777(TRUE, java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) → ARRAYACCESS2263(java.lang.Object(ARRAY(i2[1], a1654data[1])), i139[1], java.lang.Object(ARRAY(i70[1], a1655data[1])), i140[1]) which results in the following constraint:

(1)    (&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0]))=TRUEi140[0]=i140[1]i2[0]=i2[1]a1654data[0]=a1654data[1]i70[0]=i70[1]a1655data[0]=a1655data[1]i139[0]=i139[1]LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])∧(UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥))

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

(2)    (<(i140[0], i70[0])=TRUE>(i2[0], 0)=TRUE>=(i139[0], i2[0])=TRUELOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥NonInfC∧LOAD1777(java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])≥COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])∧(UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(i139[0], i2[0])), <(i140[0], i70[0])), java.lang.Object(ARRAY(i2[0], a1654data[0])), i139[0], java.lang.Object(ARRAY(i70[0], a1655data[0])), i140[0])), ≥))

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

(3)    (i70[0] + [-1] + [-1]i140[0] ≥ 0∧i2[0] + [-1] ≥ 0∧i139[0] + [-1]i2[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1777(&&(&&(>(i2[0], 0), >=(