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

(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 175 nodes with 1 SCC.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) 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:
Load792(i4, i7, i7, 0) → Load83(i4, i7 + 1)
Load740(i4, i7, i7, i7, 0) → Load792(i4, i7, i7, i7)
Load792(i4, i7, i7, i149) → Cond_Load792(i149 > 0, i4, i7, i7, i149)
Cond_Load792(TRUE, i4, i7, i7, i149) → Load792(i4, i7, i7, i149 + -1)
Load688(i4, i7, i7, i7, 0) → Load740(i4, i7, i7, i7, i7)
Load740(i4, i7, i7, i7, i139) → Cond_Load740(i139 > 0, i4, i7, i7, i7, i139)
Cond_Load740(TRUE, i4, i7, i7, i7, i139) → Load740(i4, i7, i7, i7, i139 + -1)
Load635(i4, i7, i7, i7, 0) → Load688(i4, i7, i7, i7, i7)
Load688(i4, i7, i7, i7, i126) → Cond_Load688(i126 > 0, i4, i7, i7, i7, i126)
Cond_Load688(TRUE, i4, i7, i7, i7, i126) → Load688(i4, i7, i7, i7, i126 + -1)
Load578(i4, i7, i7, i7, 0) → Load635(i4, i7, i7, i7, i7)
Load635(i4, i7, i7, i7, i118) → Cond_Load635(i118 > 0, i4, i7, i7, i7, i118)
Cond_Load635(TRUE, i4, i7, i7, i7, i118) → Load635(i4, i7, i7, i7, i118 + -1)
Load527(i4, i7, i7, i7, 0) → Load578(i4, i7, i7, i7, i7)
Load578(i4, i7, i7, i7, i106) → Cond_Load578(i106 > 0, i4, i7, i7, i7, i106)
Cond_Load578(TRUE, i4, i7, i7, i7, i106) → Load578(i4, i7, i7, i7, i106 + -1)
Load472(i4, i7, i7, i7, 0) → Load527(i4, i7, i7, i7, i7)
Load527(i4, i7, i7, i7, i94) → Cond_Load527(i94 > 0, i4, i7, i7, i7, i94)
Cond_Load527(TRUE, i4, i7, i7, i7, i94) → Load527(i4, i7, i7, i7, i94 + -1)
Load404(i4, i7, i7, i7, 0) → Load472(i4, i7, i7, i7, i7)
Load472(i4, i7, i7, i7, i83) → Cond_Load472(i83 > 0, i4, i7, i7, i7, i83)
Cond_Load472(TRUE, i4, i7, i7, i7, i83) → Load472(i4, i7, i7, i7, i83 + -1)
Load348(i4, i7, i7, i7, 0) → Load404(i4, i7, i7, i7, i7)
Load404(i4, i7, i7, i7, i69) → Cond_Load404(i69 > 0, i4, i7, i7, i7, i69)
Cond_Load404(TRUE, i4, i7, i7, i7, i69) → Load404(i4, i7, i7, i7, i69 + -1)
Load290(i4, i7, i7, i7, 0) → Load348(i4, i7, i7, i7, i7)
Load348(i4, i7, i7, i7, i58) → Cond_Load348(i58 > 0, i4, i7, i7, i7, i58)
Cond_Load348(TRUE, i4, i7, i7, i7, i58) → Load348(i4, i7, i7, i7, i58 + -1)
Load230(i4, i7, i7, i7, 0) → Load290(i4, i7, i7, i7, i7)
Load290(i4, i7, i7, i7, i47) → Cond_Load290(i47 > 0, i4, i7, i7, i7, i47)
Cond_Load290(TRUE, i4, i7, i7, i7, i47) → Load290(i4, i7, i7, i7, i47 + -1)
Load173(i4, i7, i7, i7, 0) → Load230(i4, i7, i7, i7, i7)
Load230(i4, i7, i7, i7, i32) → Cond_Load230(i32 > 0, i4, i7, i7, i7, i32)
Cond_Load230(TRUE, i4, i7, i7, i7, i32) → Load230(i4, i7, i7, i7, i32 + -1)
Load83(i4, i7) → Cond_Load83(i7 > 0 && i7 < 100, i4, i7)
Cond_Load83(TRUE, i4, i7) → Load173(i4, i7, i7, i7, i7)
Load54(i4) → Cond_Load54(i4 > 0 && i4 < 100, i4)
Cond_Load54(TRUE, i4) → Load173(i4, i4, i4, i4, i4)
Load173(i4, i7, i7, i7, i22) → Cond_Load173(i22 > 0, i4, i7, i7, i7, i22)
Cond_Load173(TRUE, i4, i7, i7, i7, i22) → Load173(i4, i7, i7, i7, i22 + -1)
Load83(i4, i7) → Cond_Load831(i7 >= 100 && i4 > 0, i4, i7)
Cond_Load831(TRUE, i4, i7) → Load54(i4 - 1)
Load54(i4) → Cond_Load541(i4 >= 100, i4)
Cond_Load541(TRUE, i4) → Load54(i4 - 1)
The set Q consists of the following terms:
Load792(x0, x1, x1, x2)
Cond_Load792(TRUE, x0, x1, x1, x2)
Load740(x0, x1, x1, x1, x2)
Cond_Load740(TRUE, x0, x1, x1, x1, x2)
Load688(x0, x1, x1, x1, x2)
Cond_Load688(TRUE, x0, x1, x1, x1, x2)
Load635(x0, x1, x1, x1, x2)
Cond_Load635(TRUE, x0, x1, x1, x1, x2)
Load578(x0, x1, x1, x1, x2)
Cond_Load578(TRUE, x0, x1, x1, x1, x2)
Load527(x0, x1, x1, x1, x2)
Cond_Load527(TRUE, x0, x1, x1, x1, x2)
Load472(x0, x1, x1, x1, x2)
Cond_Load472(TRUE, x0, x1, x1, x1, x2)
Load404(x0, x1, x1, x1, x2)
Cond_Load404(TRUE, x0, x1, x1, x1, x2)
Load348(x0, x1, x1, x1, x2)
Cond_Load348(TRUE, x0, x1, x1, x1, x2)
Load290(x0, x1, x1, x1, x2)
Cond_Load290(TRUE, x0, x1, x1, x1, x2)
Load230(x0, x1, x1, x1, x2)
Cond_Load230(TRUE, x0, x1, x1, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x1, x1, x2)
Cond_Load173(TRUE, x0, x1, x1, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(5) DuplicateArgsRemoverProof (EQUIVALENT transformation)

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

Load173(x1, x2, x3, x4, x5) → Load173(x1, x4, x5)
Cond_Load173(x1, x2, x3, x4, x5, x6) → Cond_Load173(x1, x2, x5, x6)
Load230(x1, x2, x3, x4, x5) → Load230(x1, x4, x5)
Cond_Load230(x1, x2, x3, x4, x5, x6) → Cond_Load230(x1, x2, x5, x6)
Load290(x1, x2, x3, x4, x5) → Load290(x1, x4, x5)
Cond_Load290(x1, x2, x3, x4, x5, x6) → Cond_Load290(x1, x2, x5, x6)
Load348(x1, x2, x3, x4, x5) → Load348(x1, x4, x5)
Cond_Load348(x1, x2, x3, x4, x5, x6) → Cond_Load348(x1, x2, x5, x6)
Load404(x1, x2, x3, x4, x5) → Load404(x1, x4, x5)
Cond_Load404(x1, x2, x3, x4, x5, x6) → Cond_Load404(x1, x2, x5, x6)
Load472(x1, x2, x3, x4, x5) → Load472(x1, x4, x5)
Cond_Load472(x1, x2, x3, x4, x5, x6) → Cond_Load472(x1, x2, x5, x6)
Load527(x1, x2, x3, x4, x5) → Load527(x1, x4, x5)
Cond_Load527(x1, x2, x3, x4, x5, x6) → Cond_Load527(x1, x2, x5, x6)
Load578(x1, x2, x3, x4, x5) → Load578(x1, x4, x5)
Cond_Load578(x1, x2, x3, x4, x5, x6) → Cond_Load578(x1, x2, x5, x6)
Load635(x1, x2, x3, x4, x5) → Load635(x1, x4, x5)
Cond_Load635(x1, x2, x3, x4, x5, x6) → Cond_Load635(x1, x2, x5, x6)
Load688(x1, x2, x3, x4, x5) → Load688(x1, x4, x5)
Cond_Load688(x1, x2, x3, x4, x5, x6) → Cond_Load688(x1, x2, x5, x6)
Load740(x1, x2, x3, x4, x5) → Load740(x1, x4, x5)
Cond_Load740(x1, x2, x3, x4, x5, x6) → Cond_Load740(x1, x2, x5, x6)
Load792(x1, x2, x3, x4) → Load792(x1, x3, x4)
Cond_Load792(x1, x2, x3, x4, x5) → Cond_Load792(x1, x2, x4, x5)

(6) 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:
Load792(i4, i7, 0) → Load83(i4, i7 + 1)
Load740(i4, i7, 0) → Load792(i4, i7, i7)
Load792(i4, i7, i149) → Cond_Load792(i149 > 0, i4, i7, i149)
Cond_Load792(TRUE, i4, i7, i149) → Load792(i4, i7, i149 + -1)
Load688(i4, i7, 0) → Load740(i4, i7, i7)
Load740(i4, i7, i139) → Cond_Load740(i139 > 0, i4, i7, i139)
Cond_Load740(TRUE, i4, i7, i139) → Load740(i4, i7, i139 + -1)
Load635(i4, i7, 0) → Load688(i4, i7, i7)
Load688(i4, i7, i126) → Cond_Load688(i126 > 0, i4, i7, i126)
Cond_Load688(TRUE, i4, i7, i126) → Load688(i4, i7, i126 + -1)
Load578(i4, i7, 0) → Load635(i4, i7, i7)
Load635(i4, i7, i118) → Cond_Load635(i118 > 0, i4, i7, i118)
Cond_Load635(TRUE, i4, i7, i118) → Load635(i4, i7, i118 + -1)
Load527(i4, i7, 0) → Load578(i4, i7, i7)
Load578(i4, i7, i106) → Cond_Load578(i106 > 0, i4, i7, i106)
Cond_Load578(TRUE, i4, i7, i106) → Load578(i4, i7, i106 + -1)
Load472(i4, i7, 0) → Load527(i4, i7, i7)
Load527(i4, i7, i94) → Cond_Load527(i94 > 0, i4, i7, i94)
Cond_Load527(TRUE, i4, i7, i94) → Load527(i4, i7, i94 + -1)
Load404(i4, i7, 0) → Load472(i4, i7, i7)
Load472(i4, i7, i83) → Cond_Load472(i83 > 0, i4, i7, i83)
Cond_Load472(TRUE, i4, i7, i83) → Load472(i4, i7, i83 + -1)
Load348(i4, i7, 0) → Load404(i4, i7, i7)
Load404(i4, i7, i69) → Cond_Load404(i69 > 0, i4, i7, i69)
Cond_Load404(TRUE, i4, i7, i69) → Load404(i4, i7, i69 + -1)
Load290(i4, i7, 0) → Load348(i4, i7, i7)
Load348(i4, i7, i58) → Cond_Load348(i58 > 0, i4, i7, i58)
Cond_Load348(TRUE, i4, i7, i58) → Load348(i4, i7, i58 + -1)
Load230(i4, i7, 0) → Load290(i4, i7, i7)
Load290(i4, i7, i47) → Cond_Load290(i47 > 0, i4, i7, i47)
Cond_Load290(TRUE, i4, i7, i47) → Load290(i4, i7, i47 + -1)
Load173(i4, i7, 0) → Load230(i4, i7, i7)
Load230(i4, i7, i32) → Cond_Load230(i32 > 0, i4, i7, i32)
Cond_Load230(TRUE, i4, i7, i32) → Load230(i4, i7, i32 + -1)
Load83(i4, i7) → Cond_Load83(i7 > 0 && i7 < 100, i4, i7)
Cond_Load83(TRUE, i4, i7) → Load173(i4, i7, i7)
Load54(i4) → Cond_Load54(i4 > 0 && i4 < 100, i4)
Cond_Load54(TRUE, i4) → Load173(i4, i4, i4)
Load173(i4, i7, i22) → Cond_Load173(i22 > 0, i4, i7, i22)
Cond_Load173(TRUE, i4, i7, i22) → Load173(i4, i7, i22 + -1)
Load83(i4, i7) → Cond_Load831(i7 >= 100 && i4 > 0, i4, i7)
Cond_Load831(TRUE, i4, i7) → Load54(i4 - 1)
Load54(i4) → Cond_Load541(i4 >= 100, i4)
Cond_Load541(TRUE, i4) → Load54(i4 - 1)
The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(7) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(8) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
Load792(i4, i7, 0) → Load83(i4, i7 + 1)
Load740(i4, i7, 0) → Load792(i4, i7, i7)
Load792(i4, i7, i149) → Cond_Load792(i149 > 0, i4, i7, i149)
Cond_Load792(TRUE, i4, i7, i149) → Load792(i4, i7, i149 + -1)
Load688(i4, i7, 0) → Load740(i4, i7, i7)
Load740(i4, i7, i139) → Cond_Load740(i139 > 0, i4, i7, i139)
Cond_Load740(TRUE, i4, i7, i139) → Load740(i4, i7, i139 + -1)
Load635(i4, i7, 0) → Load688(i4, i7, i7)
Load688(i4, i7, i126) → Cond_Load688(i126 > 0, i4, i7, i126)
Cond_Load688(TRUE, i4, i7, i126) → Load688(i4, i7, i126 + -1)
Load578(i4, i7, 0) → Load635(i4, i7, i7)
Load635(i4, i7, i118) → Cond_Load635(i118 > 0, i4, i7, i118)
Cond_Load635(TRUE, i4, i7, i118) → Load635(i4, i7, i118 + -1)
Load527(i4, i7, 0) → Load578(i4, i7, i7)
Load578(i4, i7, i106) → Cond_Load578(i106 > 0, i4, i7, i106)
Cond_Load578(TRUE, i4, i7, i106) → Load578(i4, i7, i106 + -1)
Load472(i4, i7, 0) → Load527(i4, i7, i7)
Load527(i4, i7, i94) → Cond_Load527(i94 > 0, i4, i7, i94)
Cond_Load527(TRUE, i4, i7, i94) → Load527(i4, i7, i94 + -1)
Load404(i4, i7, 0) → Load472(i4, i7, i7)
Load472(i4, i7, i83) → Cond_Load472(i83 > 0, i4, i7, i83)
Cond_Load472(TRUE, i4, i7, i83) → Load472(i4, i7, i83 + -1)
Load348(i4, i7, 0) → Load404(i4, i7, i7)
Load404(i4, i7, i69) → Cond_Load404(i69 > 0, i4, i7, i69)
Cond_Load404(TRUE, i4, i7, i69) → Load404(i4, i7, i69 + -1)
Load290(i4, i7, 0) → Load348(i4, i7, i7)
Load348(i4, i7, i58) → Cond_Load348(i58 > 0, i4, i7, i58)
Cond_Load348(TRUE, i4, i7, i58) → Load348(i4, i7, i58 + -1)
Load230(i4, i7, 0) → Load290(i4, i7, i7)
Load290(i4, i7, i47) → Cond_Load290(i47 > 0, i4, i7, i47)
Cond_Load290(TRUE, i4, i7, i47) → Load290(i4, i7, i47 + -1)
Load173(i4, i7, 0) → Load230(i4, i7, i7)
Load230(i4, i7, i32) → Cond_Load230(i32 > 0, i4, i7, i32)
Cond_Load230(TRUE, i4, i7, i32) → Load230(i4, i7, i32 + -1)
Load83(i4, i7) → Cond_Load83(i7 > 0 && i7 < 100, i4, i7)
Cond_Load83(TRUE, i4, i7) → Load173(i4, i7, i7)
Load54(i4) → Cond_Load54(i4 > 0 && i4 < 100, i4)
Cond_Load54(TRUE, i4) → Load173(i4, i4, i4)
Load173(i4, i7, i22) → Cond_Load173(i22 > 0, i4, i7, i22)
Cond_Load173(TRUE, i4, i7, i22) → Load173(i4, i7, i22 + -1)
Load83(i4, i7) → Cond_Load831(i7 >= 100 && i4 > 0, i4, i7)
Cond_Load831(TRUE, i4, i7) → Load54(i4 - 1)
Load54(i4) → Cond_Load541(i4 >= 100, i4)
Cond_Load541(TRUE, i4) → Load54(i4 - 1)

The integer pair graph contains the following rules and edges:
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(36): LOAD54(i4[36]) → COND_LOAD54(i4[36] > 0 && i4[36] < 100, i4[36])
(37): COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37])
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(40): LOAD83(i4[40], i7[40]) → COND_LOAD831(i7[40] >= 100 && i4[40] > 0, i4[40], i7[40])
(41): COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(i4[41] - 1)
(42): LOAD54(i4[42]) → COND_LOAD541(i4[42] >= 100, i4[42])
(43): COND_LOAD541(TRUE, i4[43]) → LOAD54(i4[43] - 1)

(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(0) -> (40), if ((i4[0]* i4[40])∧(i7[0] + 1* i7[40]))


(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(36) -> (37), if ((i4[36]* i4[37])∧(i4[36] > 0 && i4[36] < 100* TRUE))


(37) -> (31), if ((i4[37]* 0)∧(i4[37]* i7[31])∧(i4[37]* i4[31]))


(37) -> (38), if ((i4[37]* i22[38])∧(i4[37]* i7[38])∧(i4[37]* i4[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(40) -> (41), if ((i7[40]* i7[41])∧(i4[40]* i4[41])∧(i7[40] >= 100 && i4[40] > 0* TRUE))


(41) -> (36), if ((i4[41] - 1* i4[36]))


(41) -> (42), if ((i4[41] - 1* i4[42]))


(42) -> (43), if ((i4[42]* i4[43])∧(i4[42] >= 100* TRUE))


(43) -> (36), if ((i4[43] - 1* i4[36]))


(43) -> (42), if ((i4[43] - 1* i4[42]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(9) 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.

(10) 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:
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(36): LOAD54(i4[36]) → COND_LOAD54(i4[36] > 0 && i4[36] < 100, i4[36])
(37): COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37])
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(40): LOAD83(i4[40], i7[40]) → COND_LOAD831(i7[40] >= 100 && i4[40] > 0, i4[40], i7[40])
(41): COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(i4[41] - 1)
(42): LOAD54(i4[42]) → COND_LOAD541(i4[42] >= 100, i4[42])
(43): COND_LOAD541(TRUE, i4[43]) → LOAD54(i4[43] - 1)

(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(0) -> (40), if ((i4[0]* i4[40])∧(i7[0] + 1* i7[40]))


(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(36) -> (37), if ((i4[36]* i4[37])∧(i4[36] > 0 && i4[36] < 100* TRUE))


(37) -> (31), if ((i4[37]* 0)∧(i4[37]* i7[31])∧(i4[37]* i4[31]))


(37) -> (38), if ((i4[37]* i22[38])∧(i4[37]* i7[38])∧(i4[37]* i4[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(40) -> (41), if ((i7[40]* i7[41])∧(i4[40]* i4[41])∧(i7[40] >= 100 && i4[40] > 0* TRUE))


(41) -> (36), if ((i4[41] - 1* i4[36]))


(41) -> (42), if ((i4[41] - 1* i4[42]))


(42) -> (43), if ((i4[42]* i4[43])∧(i4[42] >= 100* TRUE))


(43) -> (36), if ((i4[43] - 1* i4[36]))


(43) -> (42), if ((i4[43] - 1* i4[42]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(11) 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 LOAD792(i4, i7, 0) → LOAD83(i4, +(i7, 1)) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (1)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (2)    (LOAD792(i4[1], 0, 0)≥NonInfC∧LOAD792(i4[1], 0, 0)≥LOAD83(i4[1], +(0, 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (3)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (4)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (5)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (6)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_135] ≥ 0)



  • We consider the chain COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (7)    (i7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (8)    (+(i149[3], -1)=0LOAD792(i4[3], i7[3], 0)≥NonInfC∧LOAD792(i4[3], i7[3], 0)≥LOAD83(i4[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (9)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (10)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (11)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (12)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)



  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40]) which results in the following constraint:

    (13)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0i4[0]=i4[40]+(i7[0], 1)=i7[40]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (14)    (LOAD792(i4[1], 0, 0)≥NonInfC∧LOAD792(i4[1], 0, 0)≥LOAD83(i4[1], +(0, 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (15)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (16)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (17)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[(-1)bso_135] ≥ 0)



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

    (18)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_135] ≥ 0)



  • We consider the chain COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40]) which results in the following constraint:

    (19)    (i7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0i4[0]=i4[40]+(i7[0], 1)=i7[40]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (20)    (+(i149[3], -1)=0LOAD792(i4[3], i7[3], 0)≥NonInfC∧LOAD792(i4[3], i7[3], 0)≥LOAD83(i4[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (21)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (22)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (23)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[(-1)bso_135] ≥ 0)



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

    (24)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)







For Pair LOAD740(i4, i7, 0) → LOAD792(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (25)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (26)    (LOAD740(i4[1], 0, 0)≥NonInfC∧LOAD740(i4[1], 0, 0)≥LOAD792(i4[1], 0, 0)∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (27)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (28)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (29)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (30)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_137] ≥ 0)



  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (31)    (i7[1]=i7[2]i7[1]=i149[2]i4[1]=i4[2]LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (32)    (LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (33)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (34)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (35)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_137] ≥ 0)



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

    (36)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_137] ≥ 0)







For Pair LOAD792(i4, i7, i149) → COND_LOAD792(>(i149, 0), i4, i7, i149) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (37)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (38)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (39)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i4[2] ≥ 0∧[(-1)bso_139] ≥ 0)



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

    (40)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i4[2] ≥ 0∧[(-1)bso_139] ≥ 0)



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

    (41)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_138 + (-1)Bound*bni_138] + [bni_138]i4[2] ≥ 0∧[(-1)bso_139] ≥ 0)



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

    (42)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)



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

    (43)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)







For Pair COND_LOAD792(TRUE, i4, i7, i149) → LOAD792(i4, i7, +(i149, -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (44)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUEi7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (45)    (>(i149[2], 0)=TRUE+(i149[2], -1)=0COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (46)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (47)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (48)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (49)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



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

    (50)    (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (51)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (52)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (53)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (54)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (55)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_140 + (-1)Bound*bni_140] + [bni_140]i4[2] ≥ 0∧[(-1)bso_141] ≥ 0)



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

    (56)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)



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

    (57)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)







For Pair LOAD688(i4, i7, 0) → LOAD740(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (58)    (i4[4]=i4[1]i7[4]=i7[1]i7[4]=0LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (59)    (LOAD688(i4[4], 0, 0)≥NonInfC∧LOAD688(i4[4], 0, 0)≥LOAD740(i4[4], 0, 0)∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (60)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (61)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (62)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (63)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_143] ≥ 0)



  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (64)    (i4[4]=i4[5]i7[4]=i139[5]i7[4]=i7[5]LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (65)    (LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (66)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (67)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (68)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_143] ≥ 0)



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

    (69)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_143] ≥ 0)







For Pair LOAD740(i4, i7, i139) → COND_LOAD740(>(i139, 0), i4, i7, i139) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (70)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (71)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (72)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_144 + (-1)Bound*bni_144] + [bni_144]i4[5] ≥ 0∧[(-1)bso_145] ≥ 0)



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

    (73)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_144 + (-1)Bound*bni_144] + [bni_144]i4[5] ≥ 0∧[(-1)bso_145] ≥ 0)



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

    (74)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_144 + (-1)Bound*bni_144] + [bni_144]i4[5] ≥ 0∧[(-1)bso_145] ≥ 0)



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

    (75)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧[bni_144] = 0∧[(-1)bni_144 + (-1)Bound*bni_144] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_145] ≥ 0)



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

    (76)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧[bni_144] = 0∧[(-1)bni_144 + (-1)Bound*bni_144] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_145] ≥ 0)







For Pair COND_LOAD740(TRUE, i4, i7, i139) → LOAD740(i4, i7, +(i139, -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (77)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]i7[6]=i7[1]+(i139[6], -1)=0i4[6]=i4[1]COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (78)    (>(i139[5], 0)=TRUE+(i139[5], -1)=0COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (79)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (80)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (81)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (82)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)



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

    (83)    (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)



  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (84)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (85)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (86)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (87)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (88)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_146 + (-1)Bound*bni_146] + [bni_146]i4[5] ≥ 0∧[(-1)bso_147] ≥ 0)



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

    (89)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)



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

    (90)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)







For Pair LOAD635(i4, i7, 0) → LOAD688(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (91)    (i7[7]=0i4[7]=i4[4]i7[7]=i7[4]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (92)    (LOAD635(i4[7], 0, 0)≥NonInfC∧LOAD635(i4[7], 0, 0)≥LOAD688(i4[7], 0, 0)∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (93)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (94)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (95)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (96)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_149] ≥ 0)



  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (97)    (i7[7]=i7[8]i4[7]=i4[8]i7[7]=i126[8]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (98)    (LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (99)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (100)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (101)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_149] ≥ 0)



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

    (102)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_149] ≥ 0)







For Pair LOAD688(i4, i7, i126) → COND_LOAD688(>(i126, 0), i4, i7, i126) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (103)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



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

    (104)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



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

    (105)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i4[8] ≥ 0∧[(-1)bso_151] ≥ 0)



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

    (106)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i4[8] ≥ 0∧[(-1)bso_151] ≥ 0)



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

    (107)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_150 + (-1)Bound*bni_150] + [bni_150]i4[8] ≥ 0∧[(-1)bso_151] ≥ 0)



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

    (108)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)



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

    (109)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)







For Pair COND_LOAD688(TRUE, i4, i7, i126) → LOAD688(i4, i7, +(i126, -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (110)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUE+(i126[9], -1)=0i7[9]=i7[4]i4[9]=i4[4]COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (111)    (>(i126[8], 0)=TRUE+(i126[8], -1)=0COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (112)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (113)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (114)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (115)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



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

    (116)    (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (117)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (118)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (119)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (120)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (121)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_152 + (-1)Bound*bni_152] + [bni_152]i4[8] ≥ 0∧[(-1)bso_153] ≥ 0)



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

    (122)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)



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

    (123)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)







For Pair LOAD578(i4, i7, 0) → LOAD635(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (124)    (i7[10]=0i4[10]=i4[7]i7[10]=i7[7]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (125)    (LOAD578(i4[10], 0, 0)≥NonInfC∧LOAD578(i4[10], 0, 0)≥LOAD635(i4[10], 0, 0)∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (126)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (127)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (128)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (129)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_155] ≥ 0)



  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (130)    (i7[10]=i118[11]i4[10]=i4[11]i7[10]=i7[11]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (131)    (LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (132)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (133)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (134)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_155] ≥ 0)



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

    (135)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_155] ≥ 0)







For Pair LOAD635(i4, i7, i118) → COND_LOAD635(>(i118, 0), i4, i7, i118) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (136)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



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

    (137)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



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

    (138)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i4[11] ≥ 0∧[(-1)bso_157] ≥ 0)



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

    (139)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i4[11] ≥ 0∧[(-1)bso_157] ≥ 0)



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

    (140)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_156 + (-1)Bound*bni_156] + [bni_156]i4[11] ≥ 0∧[(-1)bso_157] ≥ 0)



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

    (141)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧[bni_156] = 0∧[(-1)bni_156 + (-1)Bound*bni_156] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_157] ≥ 0)



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

    (142)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧[bni_156] = 0∧[(-1)bni_156 + (-1)Bound*bni_156] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_157] ≥ 0)







For Pair COND_LOAD635(TRUE, i4, i7, i118) → LOAD635(i4, i7, +(i118, -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (143)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i4[12]=i4[7]+(i118[12], -1)=0i7[12]=i7[7]COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (144)    (>(i118[11], 0)=TRUE+(i118[11], -1)=0COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (145)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (146)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (147)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (148)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)



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

    (149)    (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)



  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (150)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (151)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (152)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (153)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (154)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_158 + (-1)Bound*bni_158] + [bni_158]i4[11] ≥ 0∧[(-1)bso_159] ≥ 0)



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

    (155)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)



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

    (156)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)







For Pair LOAD527(i4, i7, 0) → LOAD578(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (157)    (i7[13]=i7[10]i4[13]=i4[10]i7[13]=0LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (158)    (LOAD527(i4[13], 0, 0)≥NonInfC∧LOAD527(i4[13], 0, 0)≥LOAD578(i4[13], 0, 0)∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (159)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (160)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (161)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (162)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_161] ≥ 0)



  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (163)    (i7[13]=i106[14]i4[13]=i4[14]i7[13]=i7[14]LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (164)    (LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (165)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (166)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (167)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_161] ≥ 0)



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

    (168)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_161] ≥ 0)







For Pair LOAD578(i4, i7, i106) → COND_LOAD578(>(i106, 0), i4, i7, i106) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (169)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



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

    (170)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



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

    (171)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_162 + (-1)Bound*bni_162] + [bni_162]i4[14] ≥ 0∧[(-1)bso_163] ≥ 0)



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

    (172)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_162 + (-1)Bound*bni_162] + [bni_162]i4[14] ≥ 0∧[(-1)bso_163] ≥ 0)



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

    (173)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_162 + (-1)Bound*bni_162] + [bni_162]i4[14] ≥ 0∧[(-1)bso_163] ≥ 0)



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

    (174)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧[bni_162] = 0∧[(-1)bni_162 + (-1)Bound*bni_162] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_163] ≥ 0)



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

    (175)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧[bni_162] = 0∧[(-1)bni_162 + (-1)Bound*bni_162] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_163] ≥ 0)







For Pair COND_LOAD578(TRUE, i4, i7, i106) → LOAD578(i4, i7, +(i106, -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (176)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]+(i106[15], -1)=0i7[15]=i7[10]i4[15]=i4[10]COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (177)    (>(i106[14], 0)=TRUE+(i106[14], -1)=0COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (178)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (179)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (180)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (181)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)



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

    (182)    (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)



  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (183)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (184)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (185)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (186)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (187)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_164 + (-1)Bound*bni_164] + [bni_164]i4[14] ≥ 0∧[(-1)bso_165] ≥ 0)



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

    (188)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)



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

    (189)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)







For Pair LOAD472(i4, i7, 0) → LOAD527(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (190)    (i7[16]=i7[13]i4[16]=i4[13]i7[16]=0LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (191)    (LOAD472(i4[16], 0, 0)≥NonInfC∧LOAD472(i4[16], 0, 0)≥LOAD527(i4[16], 0, 0)∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (192)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (193)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (194)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (195)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_167] ≥ 0)



  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (196)    (i7[16]=i7[17]i7[16]=i94[17]i4[16]=i4[17]LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (197)    (LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (198)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (199)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (200)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_167] ≥ 0)



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

    (201)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_167] ≥ 0)







For Pair LOAD527(i4, i7, i94) → COND_LOAD527(>(i94, 0), i4, i7, i94) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (202)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



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

    (203)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



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

    (204)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_168 + (-1)Bound*bni_168] + [bni_168]i4[17] ≥ 0∧[(-1)bso_169] ≥ 0)



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

    (205)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_168 + (-1)Bound*bni_168] + [bni_168]i4[17] ≥ 0∧[(-1)bso_169] ≥ 0)



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

    (206)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_168 + (-1)Bound*bni_168] + [bni_168]i4[17] ≥ 0∧[(-1)bso_169] ≥ 0)



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

    (207)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧[bni_168] = 0∧[(-1)bni_168 + (-1)Bound*bni_168] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_169] ≥ 0)



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

    (208)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧[bni_168] = 0∧[(-1)bni_168 + (-1)Bound*bni_168] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_169] ≥ 0)







For Pair COND_LOAD527(TRUE, i4, i7, i94) → LOAD527(i4, i7, +(i94, -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (209)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i4[18]=i4[13]i7[18]=i7[13]+(i94[18], -1)=0COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (210)    (>(i94[17], 0)=TRUE+(i94[17], -1)=0COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (211)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (212)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (213)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (214)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)



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

    (215)    (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)



  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (216)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (217)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (218)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (219)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (220)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_170 + (-1)Bound*bni_170] + [bni_170]i4[17] ≥ 0∧[(-1)bso_171] ≥ 0)



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

    (221)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)



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

    (222)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)







For Pair LOAD404(i4, i7, 0) → LOAD472(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (223)    (i7[19]=i7[16]i4[19]=i4[16]i7[19]=0LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (224)    (LOAD404(i4[19], 0, 0)≥NonInfC∧LOAD404(i4[19], 0, 0)≥LOAD472(i4[19], 0, 0)∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (225)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (226)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (227)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (228)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_173] ≥ 0)



  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (229)    (i4[19]=i4[20]i7[19]=i7[20]i7[19]=i83[20]LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (230)    (LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (231)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (232)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (233)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_173] ≥ 0)



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

    (234)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_173] ≥ 0)







For Pair LOAD472(i4, i7, i83) → COND_LOAD472(>(i83, 0), i4, i7, i83) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (235)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



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

    (236)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



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

    (237)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_174 + (-1)Bound*bni_174] + [bni_174]i4[20] ≥ 0∧[(-1)bso_175] ≥ 0)



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

    (238)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_174 + (-1)Bound*bni_174] + [bni_174]i4[20] ≥ 0∧[(-1)bso_175] ≥ 0)



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

    (239)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_174 + (-1)Bound*bni_174] + [bni_174]i4[20] ≥ 0∧[(-1)bso_175] ≥ 0)



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

    (240)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧[bni_174] = 0∧[(-1)bni_174 + (-1)Bound*bni_174] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_175] ≥ 0)



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

    (241)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧[bni_174] = 0∧[(-1)bni_174 + (-1)Bound*bni_174] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_175] ≥ 0)







For Pair COND_LOAD472(TRUE, i4, i7, i83) → LOAD472(i4, i7, +(i83, -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (242)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUEi4[21]=i4[16]i7[21]=i7[16]+(i83[21], -1)=0COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (243)    (>(i83[20], 0)=TRUE+(i83[20], -1)=0COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (244)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (245)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (246)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (247)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)



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

    (248)    (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)



  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (249)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (250)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (251)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (252)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (253)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_176 + (-1)Bound*bni_176] + [bni_176]i4[20] ≥ 0∧[(-1)bso_177] ≥ 0)



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

    (254)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)



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

    (255)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)







For Pair LOAD348(i4, i7, 0) → LOAD404(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (256)    (i4[22]=i4[19]i7[22]=0i7[22]=i7[19]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (257)    (LOAD348(i4[22], 0, 0)≥NonInfC∧LOAD348(i4[22], 0, 0)≥LOAD404(i4[22], 0, 0)∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (258)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (259)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (260)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (261)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_179] ≥ 0)



  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (262)    (i7[22]=i69[23]i7[22]=i7[23]i4[22]=i4[23]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (263)    (LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (264)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (265)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (266)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_179] ≥ 0)



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

    (267)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_179] ≥ 0)







For Pair LOAD404(i4, i7, i69) → COND_LOAD404(>(i69, 0), i4, i7, i69) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (268)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



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

    (269)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



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

    (270)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_180 + (-1)Bound*bni_180] + [bni_180]i4[23] ≥ 0∧[(-1)bso_181] ≥ 0)



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

    (271)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_180 + (-1)Bound*bni_180] + [bni_180]i4[23] ≥ 0∧[(-1)bso_181] ≥ 0)



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

    (272)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_180 + (-1)Bound*bni_180] + [bni_180]i4[23] ≥ 0∧[(-1)bso_181] ≥ 0)



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

    (273)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧[bni_180] = 0∧[(-1)bni_180 + (-1)Bound*bni_180] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_181] ≥ 0)



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

    (274)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧[bni_180] = 0∧[(-1)bni_180 + (-1)Bound*bni_180] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_181] ≥ 0)







For Pair COND_LOAD404(TRUE, i4, i7, i69) → LOAD404(i4, i7, +(i69, -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (275)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i7[24]=i7[19]+(i69[24], -1)=0i4[24]=i4[19]COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (276)    (>(i69[23], 0)=TRUE+(i69[23], -1)=0COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (277)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (278)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (279)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (280)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)



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

    (281)    (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)



  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (282)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (283)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (284)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (285)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (286)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_182 + (-1)Bound*bni_182] + [bni_182]i4[23] ≥ 0∧[(-1)bso_183] ≥ 0)



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

    (287)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)



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

    (288)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)







For Pair LOAD290(i4, i7, 0) → LOAD348(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (289)    (i7[25]=i7[22]i7[25]=0i4[25]=i4[22]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (290)    (LOAD290(i4[25], 0, 0)≥NonInfC∧LOAD290(i4[25], 0, 0)≥LOAD348(i4[25], 0, 0)∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (291)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (292)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (293)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (294)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_185] ≥ 0)



  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (295)    (i4[25]=i4[26]i7[25]=i7[26]i7[25]=i58[26]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (296)    (LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (297)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (298)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (299)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_185] ≥ 0)



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

    (300)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_185] ≥ 0)







For Pair LOAD348(i4, i7, i58) → COND_LOAD348(>(i58, 0), i4, i7, i58) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (301)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



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

    (302)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



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

    (303)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_186 + (-1)Bound*bni_186] + [bni_186]i4[26] ≥ 0∧[(-1)bso_187] ≥ 0)



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

    (304)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_186 + (-1)Bound*bni_186] + [bni_186]i4[26] ≥ 0∧[(-1)bso_187] ≥ 0)



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

    (305)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_186 + (-1)Bound*bni_186] + [bni_186]i4[26] ≥ 0∧[(-1)bso_187] ≥ 0)



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

    (306)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧[bni_186] = 0∧[(-1)bni_186 + (-1)Bound*bni_186] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_187] ≥ 0)



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

    (307)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧[bni_186] = 0∧[(-1)bni_186 + (-1)Bound*bni_186] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_187] ≥ 0)







For Pair COND_LOAD348(TRUE, i4, i7, i58) → LOAD348(i4, i7, +(i58, -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (308)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i7[27]=i7[22]+(i58[27], -1)=0i4[27]=i4[22]COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (309)    (>(i58[26], 0)=TRUE+(i58[26], -1)=0COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (310)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (311)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (312)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (313)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)



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

    (314)    (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)



  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (315)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (316)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (317)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (318)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (319)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_188 + (-1)Bound*bni_188] + [bni_188]i4[26] ≥ 0∧[(-1)bso_189] ≥ 0)



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

    (320)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)



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

    (321)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)







For Pair LOAD230(i4, i7, 0) → LOAD290(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (322)    (i7[28]=i7[25]i4[28]=i4[25]i7[28]=0LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (323)    (LOAD230(i4[28], 0, 0)≥NonInfC∧LOAD230(i4[28], 0, 0)≥LOAD290(i4[28], 0, 0)∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (324)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (325)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (326)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (327)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_191] ≥ 0)



  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (328)    (i7[28]=i47[29]i4[28]=i4[29]i7[28]=i7[29]LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (329)    (LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (330)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (331)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (332)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_191] ≥ 0)



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

    (333)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_191] ≥ 0)







For Pair LOAD290(i4, i7, i47) → COND_LOAD290(>(i47, 0), i4, i7, i47) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (334)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



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

    (335)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



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

    (336)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_192 + (-1)Bound*bni_192] + [bni_192]i4[29] ≥ 0∧[(-1)bso_193] ≥ 0)



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

    (337)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_192 + (-1)Bound*bni_192] + [bni_192]i4[29] ≥ 0∧[(-1)bso_193] ≥ 0)



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

    (338)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_192 + (-1)Bound*bni_192] + [bni_192]i4[29] ≥ 0∧[(-1)bso_193] ≥ 0)



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

    (339)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧[bni_192] = 0∧[(-1)bni_192 + (-1)Bound*bni_192] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_193] ≥ 0)



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

    (340)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧[bni_192] = 0∧[(-1)bni_192 + (-1)Bound*bni_192] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_193] ≥ 0)







For Pair COND_LOAD290(TRUE, i4, i7, i47) → LOAD290(i4, i7, +(i47, -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (341)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i4[30]=i4[25]+(i47[30], -1)=0i7[30]=i7[25]COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (342)    (>(i47[29], 0)=TRUE+(i47[29], -1)=0COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (343)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (344)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (345)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (346)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)



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

    (347)    (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)



  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (348)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (349)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (350)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (351)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (352)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_194 + (-1)Bound*bni_194] + [bni_194]i4[29] ≥ 0∧[(-1)bso_195] ≥ 0)



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

    (353)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)



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

    (354)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)







For Pair LOAD173(i4, i7, 0) → LOAD230(i4, i7, i7) the following chains were created:
  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (355)    (i7[31]=i7[28]i7[31]=0i4[31]=i4[28]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (356)    (LOAD173(i4[31], 0, 0)≥NonInfC∧LOAD173(i4[31], 0, 0)≥LOAD230(i4[31], 0, 0)∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (357)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (358)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (359)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (360)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_197] ≥ 0)



  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (361)    (i7[31]=i32[32]i4[31]=i4[32]i7[31]=i7[32]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (362)    (LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (363)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (364)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (365)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_197] ≥ 0)



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

    (366)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_197] ≥ 0)







For Pair LOAD230(i4, i7, i32) → COND_LOAD230(>(i32, 0), i4, i7, i32) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (367)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



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

    (368)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



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

    (369)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_198 + (-1)Bound*bni_198] + [bni_198]i4[32] ≥ 0∧[(-1)bso_199] ≥ 0)



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

    (370)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_198 + (-1)Bound*bni_198] + [bni_198]i4[32] ≥ 0∧[(-1)bso_199] ≥ 0)



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

    (371)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_198 + (-1)Bound*bni_198] + [bni_198]i4[32] ≥ 0∧[(-1)bso_199] ≥ 0)



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

    (372)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧[bni_198] = 0∧[(-1)bni_198 + (-1)Bound*bni_198] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_199] ≥ 0)



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

    (373)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧[bni_198] = 0∧[(-1)bni_198 + (-1)Bound*bni_198] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_199] ≥ 0)







For Pair COND_LOAD230(TRUE, i4, i7, i32) → LOAD230(i4, i7, +(i32, -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (374)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUE+(i32[33], -1)=0i7[33]=i7[28]i4[33]=i4[28]COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (375)    (>(i32[32], 0)=TRUE+(i32[32], -1)=0COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (376)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (377)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (378)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (379)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)



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

    (380)    (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)



  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (381)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (382)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (383)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (384)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (385)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_200 + (-1)Bound*bni_200] + [bni_200]i4[32] ≥ 0∧[(-1)bso_201] ≥ 0)



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

    (386)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)



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

    (387)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)







For Pair LOAD83(i4, i7) → COND_LOAD83(&&(>(i7, 0), <(i7, 100)), i4, i7) the following chains were created:
  • We consider the chain LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]), COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]) which results in the following constraint:

    (388)    (&&(>(i7[34], 0), <(i7[34], 100))=TRUEi7[34]=i7[35]i4[34]=i4[35]LOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



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

    (389)    (>(i7[34], 0)=TRUE<(i7[34], 100)=TRUELOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



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

    (390)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_202 + (-1)Bound*bni_202] + [bni_202]i4[34] ≥ 0∧[(-1)bso_203] ≥ 0)



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

    (391)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_202 + (-1)Bound*bni_202] + [bni_202]i4[34] ≥ 0∧[(-1)bso_203] ≥ 0)



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

    (392)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_202 + (-1)Bound*bni_202] + [bni_202]i4[34] ≥ 0∧[(-1)bso_203] ≥ 0)



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

    (393)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[bni_202] = 0∧[(-1)bni_202 + (-1)Bound*bni_202] ≥ 0∧0 = 0∧[(-1)bso_203] ≥ 0)



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

    (394)    (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[bni_202] = 0∧[(-1)bni_202 + (-1)Bound*bni_202] ≥ 0∧0 = 0∧[(-1)bso_203] ≥ 0)







For Pair COND_LOAD83(TRUE, i4, i7) → LOAD173(i4, i7, i7) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (395)    (i7[35]=0i4[35]=i4[31]i7[35]=i7[31]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (396)    (COND_LOAD83(TRUE, i4[35], 0)≥NonInfC∧COND_LOAD83(TRUE, i4[35], 0)≥LOAD173(i4[35], 0, 0)∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (397)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (398)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (399)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (400)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_205] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (401)    (i4[35]=i4[38]i7[35]=i22[38]i7[35]=i7[38]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (402)    (COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (403)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (404)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (405)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_205] ≥ 0)



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

    (406)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_205] ≥ 0)







For Pair LOAD54(i4) → COND_LOAD54(&&(>(i4, 0), <(i4, 100)), i4) the following chains were created:
  • We consider the chain LOAD54(i4[36]) → COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36]), COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37]) which results in the following constraint:

    (407)    (i4[36]=i4[37]&&(>(i4[36], 0), <(i4[36], 100))=TRUELOAD54(i4[36])≥NonInfC∧LOAD54(i4[36])≥COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])∧(UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥))



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

    (408)    (>(i4[36], 0)=TRUE<(i4[36], 100)=TRUELOAD54(i4[36])≥NonInfC∧LOAD54(i4[36])≥COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])∧(UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥))



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

    (409)    (i4[36] + [-1] ≥ 0∧[99] + [-1]i4[36] ≥ 0 ⇒ (UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥)∧[(-1)bni_206 + (-1)Bound*bni_206] + [bni_206]i4[36] ≥ 0∧[(-1)bso_207] ≥ 0)



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

    (410)    (i4[36] + [-1] ≥ 0∧[99] + [-1]i4[36] ≥ 0 ⇒ (UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥)∧[(-1)bni_206 + (-1)Bound*bni_206] + [bni_206]i4[36] ≥ 0∧[(-1)bso_207] ≥ 0)



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

    (411)    (i4[36] + [-1] ≥ 0∧[99] + [-1]i4[36] ≥ 0 ⇒ (UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥)∧[(-1)bni_206 + (-1)Bound*bni_206] + [bni_206]i4[36] ≥ 0∧[(-1)bso_207] ≥ 0)



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

    (412)    (i4[36] ≥ 0∧[98] + [-1]i4[36] ≥ 0 ⇒ (UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥)∧[(-1)Bound*bni_206] + [bni_206]i4[36] ≥ 0∧[(-1)bso_207] ≥ 0)







For Pair COND_LOAD54(TRUE, i4) → LOAD173(i4, i4, i4) the following chains were created:
  • We consider the chain COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37]), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (413)    (i4[37]=0i4[37]=i7[31]i4[37]=i4[31]COND_LOAD54(TRUE, i4[37])≥NonInfC∧COND_LOAD54(TRUE, i4[37])≥LOAD173(i4[37], i4[37], i4[37])∧(UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥))



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

    (414)    (COND_LOAD54(TRUE, 0)≥NonInfC∧COND_LOAD54(TRUE, 0)≥LOAD173(0, 0, 0)∧(UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥))



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

    (415)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



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

    (416)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



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

    (417)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



  • We consider the chain COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37]), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (418)    (i4[37]=i22[38]i4[37]=i7[38]i4[37]=i4[38]COND_LOAD54(TRUE, i4[37])≥NonInfC∧COND_LOAD54(TRUE, i4[37])≥LOAD173(i4[37], i4[37], i4[37])∧(UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥))



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

    (419)    (COND_LOAD54(TRUE, i4[37])≥NonInfC∧COND_LOAD54(TRUE, i4[37])≥LOAD173(i4[37], i4[37], i4[37])∧(UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥))



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

    (420)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



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

    (421)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



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

    (422)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)



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

    (423)    ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧0 = 0∧[(-1)bso_209] ≥ 0)







For Pair LOAD173(i4, i7, i22) → COND_LOAD173(>(i22, 0), i4, i7, i22) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (424)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



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

    (425)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



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

    (426)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_210 + (-1)Bound*bni_210] + [bni_210]i4[38] ≥ 0∧[(-1)bso_211] ≥ 0)



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

    (427)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_210 + (-1)Bound*bni_210] + [bni_210]i4[38] ≥ 0∧[(-1)bso_211] ≥ 0)



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

    (428)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_210 + (-1)Bound*bni_210] + [bni_210]i4[38] ≥ 0∧[(-1)bso_211] ≥ 0)



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

    (429)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧[bni_210] = 0∧[(-1)bni_210 + (-1)Bound*bni_210] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_211] ≥ 0)



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

    (430)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧[bni_210] = 0∧[(-1)bni_210 + (-1)Bound*bni_210] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_211] ≥ 0)







For Pair COND_LOAD173(TRUE, i4, i7, i22) → LOAD173(i4, i7, +(i22, -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (431)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]+(i22[39], -1)=0i4[39]=i4[31]i7[39]=i7[31]COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (432)    (>(i22[38], 0)=TRUE+(i22[38], -1)=0COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (433)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (434)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (435)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (436)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)



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

    (437)    (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)



  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (438)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (439)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (440)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (441)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (442)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_212 + (-1)Bound*bni_212] + [bni_212]i4[38] ≥ 0∧[(-1)bso_213] ≥ 0)



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

    (443)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)



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

    (444)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)







For Pair LOAD83(i4, i7) → COND_LOAD831(&&(>=(i7, 100), >(i4, 0)), i4, i7) the following chains were created:
  • We consider the chain LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40]), COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(-(i4[41], 1)) which results in the following constraint:

    (445)    (i7[40]=i7[41]i4[40]=i4[41]&&(>=(i7[40], 100), >(i4[40], 0))=TRUELOAD83(i4[40], i7[40])≥NonInfC∧LOAD83(i4[40], i7[40])≥COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])∧(UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥))



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

    (446)    (>=(i7[40], 100)=TRUE>(i4[40], 0)=TRUELOAD83(i4[40], i7[40])≥NonInfC∧LOAD83(i4[40], i7[40])≥COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])∧(UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥))



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

    (447)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)bni_214 + (-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)



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

    (448)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)bni_214 + (-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)



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

    (449)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)bni_214 + (-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)



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

    (450)    (i7[40] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)bni_214 + (-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)



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

    (451)    (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)







For Pair COND_LOAD831(TRUE, i4, i7) → LOAD54(-(i4, 1)) the following chains were created:
  • We consider the chain LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40]), COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(-(i4[41], 1)), LOAD54(i4[36]) → COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36]) which results in the following constraint:

    (452)    (i7[40]=i7[41]i4[40]=i4[41]&&(>=(i7[40], 100), >(i4[40], 0))=TRUE-(i4[41], 1)=i4[36]COND_LOAD831(TRUE, i4[41], i7[41])≥NonInfC∧COND_LOAD831(TRUE, i4[41], i7[41])≥LOAD54(-(i4[41], 1))∧(UIncreasing(LOAD54(-(i4[41], 1))), ≥))



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

    (453)    (>=(i7[40], 100)=TRUE>(i4[40], 0)=TRUECOND_LOAD831(TRUE, i4[40], i7[40])≥NonInfC∧COND_LOAD831(TRUE, i4[40], i7[40])≥LOAD54(-(i4[40], 1))∧(UIncreasing(LOAD54(-(i4[41], 1))), ≥))



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

    (454)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (455)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (456)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (457)    (i7[40] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (458)    (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



  • We consider the chain LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40]), COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(-(i4[41], 1)), LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42]) which results in the following constraint:

    (459)    (i7[40]=i7[41]i4[40]=i4[41]&&(>=(i7[40], 100), >(i4[40], 0))=TRUE-(i4[41], 1)=i4[42]COND_LOAD831(TRUE, i4[41], i7[41])≥NonInfC∧COND_LOAD831(TRUE, i4[41], i7[41])≥LOAD54(-(i4[41], 1))∧(UIncreasing(LOAD54(-(i4[41], 1))), ≥))



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

    (460)    (>=(i7[40], 100)=TRUE>(i4[40], 0)=TRUECOND_LOAD831(TRUE, i4[40], i7[40])≥NonInfC∧COND_LOAD831(TRUE, i4[40], i7[40])≥LOAD54(-(i4[40], 1))∧(UIncreasing(LOAD54(-(i4[41], 1))), ≥))



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

    (461)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (462)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (463)    (i7[40] + [-100] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (464)    (i7[40] ≥ 0∧i4[40] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)bni_216 + (-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)



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

    (465)    (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)







For Pair LOAD54(i4) → COND_LOAD541(>=(i4, 100), i4) the following chains were created:
  • We consider the chain LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42]), COND_LOAD541(TRUE, i4[43]) → LOAD54(-(i4[43], 1)) which results in the following constraint:

    (466)    (i4[42]=i4[43]>=(i4[42], 100)=TRUELOAD54(i4[42])≥NonInfC∧LOAD54(i4[42])≥COND_LOAD541(>=(i4[42], 100), i4[42])∧(UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥))



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

    (467)    (>=(i4[42], 100)=TRUELOAD54(i4[42])≥NonInfC∧LOAD54(i4[42])≥COND_LOAD541(>=(i4[42], 100), i4[42])∧(UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥))



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

    (468)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥)∧[(-1)bni_218 + (-1)Bound*bni_218] + [bni_218]i4[42] ≥ 0∧[(-1)bso_219] ≥ 0)



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

    (469)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥)∧[(-1)bni_218 + (-1)Bound*bni_218] + [bni_218]i4[42] ≥ 0∧[(-1)bso_219] ≥ 0)



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

    (470)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥)∧[(-1)bni_218 + (-1)Bound*bni_218] + [bni_218]i4[42] ≥ 0∧[(-1)bso_219] ≥ 0)



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

    (471)    (i4[42] ≥ 0 ⇒ (UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥)∧[(99)bni_218 + (-1)Bound*bni_218] + [bni_218]i4[42] ≥ 0∧[(-1)bso_219] ≥ 0)







For Pair COND_LOAD541(TRUE, i4) → LOAD54(-(i4, 1)) the following chains were created:
  • We consider the chain LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42]), COND_LOAD541(TRUE, i4[43]) → LOAD54(-(i4[43], 1)), LOAD54(i4[36]) → COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36]) which results in the following constraint:

    (472)    (i4[42]=i4[43]>=(i4[42], 100)=TRUE-(i4[43], 1)=i4[36]COND_LOAD541(TRUE, i4[43])≥NonInfC∧COND_LOAD541(TRUE, i4[43])≥LOAD54(-(i4[43], 1))∧(UIncreasing(LOAD54(-(i4[43], 1))), ≥))



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

    (473)    (>=(i4[42], 100)=TRUECOND_LOAD541(TRUE, i4[42])≥NonInfC∧COND_LOAD541(TRUE, i4[42])≥LOAD54(-(i4[42], 1))∧(UIncreasing(LOAD54(-(i4[43], 1))), ≥))



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

    (474)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (475)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (476)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (477)    (i4[42] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(99)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



  • We consider the chain LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42]), COND_LOAD541(TRUE, i4[43]) → LOAD54(-(i4[43], 1)), LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42]) which results in the following constraint:

    (478)    (i4[42]=i4[43]>=(i4[42], 100)=TRUE-(i4[43], 1)=i4[42]1COND_LOAD541(TRUE, i4[43])≥NonInfC∧COND_LOAD541(TRUE, i4[43])≥LOAD54(-(i4[43], 1))∧(UIncreasing(LOAD54(-(i4[43], 1))), ≥))



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

    (479)    (>=(i4[42], 100)=TRUECOND_LOAD541(TRUE, i4[42])≥NonInfC∧COND_LOAD541(TRUE, i4[42])≥LOAD54(-(i4[42], 1))∧(UIncreasing(LOAD54(-(i4[43], 1))), ≥))



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

    (480)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (481)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (482)    (i4[42] + [-100] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(-1)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)



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

    (483)    (i4[42] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(99)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD792(i4, i7, 0) → LOAD83(i4, +(i7, 1))
    • ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_135] ≥ 0)
    • (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)
    • ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[(-1)bso_135] ≥ 0)
    • (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_135] ≥ 0)

  • LOAD740(i4, i7, 0) → LOAD792(i4, i7, i7)
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_137] ≥ 0)
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_137] ≥ 0)

  • LOAD792(i4, i7, i149) → COND_LOAD792(>(i149, 0), i4, i7, i149)
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧[bni_138] = 0∧[(-1)bni_138 + (-1)Bound*bni_138] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_139] ≥ 0)

  • COND_LOAD792(TRUE, i4, i7, i149) → LOAD792(i4, i7, +(i149, -1))
    • (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧[bni_140] = 0∧[(-1)bni_140 + (-1)Bound*bni_140] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_141] ≥ 0)

  • LOAD688(i4, i7, 0) → LOAD740(i4, i7, i7)
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_143] ≥ 0)
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_143] ≥ 0)

  • LOAD740(i4, i7, i139) → COND_LOAD740(>(i139, 0), i4, i7, i139)
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧[bni_144] = 0∧[(-1)bni_144 + (-1)Bound*bni_144] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_145] ≥ 0)

  • COND_LOAD740(TRUE, i4, i7, i139) → LOAD740(i4, i7, +(i139, -1))
    • (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧[bni_146] = 0∧[(-1)bni_146 + (-1)Bound*bni_146] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_147] ≥ 0)

  • LOAD635(i4, i7, 0) → LOAD688(i4, i7, i7)
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_149] ≥ 0)
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_149] ≥ 0)

  • LOAD688(i4, i7, i126) → COND_LOAD688(>(i126, 0), i4, i7, i126)
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧[bni_150] = 0∧[(-1)bni_150 + (-1)Bound*bni_150] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_151] ≥ 0)

  • COND_LOAD688(TRUE, i4, i7, i126) → LOAD688(i4, i7, +(i126, -1))
    • (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧[bni_152] = 0∧[(-1)bni_152 + (-1)Bound*bni_152] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_153] ≥ 0)

  • LOAD578(i4, i7, 0) → LOAD635(i4, i7, i7)
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_155] ≥ 0)
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_155] ≥ 0)

  • LOAD635(i4, i7, i118) → COND_LOAD635(>(i118, 0), i4, i7, i118)
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧[bni_156] = 0∧[(-1)bni_156 + (-1)Bound*bni_156] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_157] ≥ 0)

  • COND_LOAD635(TRUE, i4, i7, i118) → LOAD635(i4, i7, +(i118, -1))
    • (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧[bni_158] = 0∧[(-1)bni_158 + (-1)Bound*bni_158] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_159] ≥ 0)

  • LOAD527(i4, i7, 0) → LOAD578(i4, i7, i7)
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_161] ≥ 0)
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_161] ≥ 0)

  • LOAD578(i4, i7, i106) → COND_LOAD578(>(i106, 0), i4, i7, i106)
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧[bni_162] = 0∧[(-1)bni_162 + (-1)Bound*bni_162] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_163] ≥ 0)

  • COND_LOAD578(TRUE, i4, i7, i106) → LOAD578(i4, i7, +(i106, -1))
    • (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧[bni_164] = 0∧[(-1)bni_164 + (-1)Bound*bni_164] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_165] ≥ 0)

  • LOAD472(i4, i7, 0) → LOAD527(i4, i7, i7)
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_167] ≥ 0)
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_167] ≥ 0)

  • LOAD527(i4, i7, i94) → COND_LOAD527(>(i94, 0), i4, i7, i94)
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧[bni_168] = 0∧[(-1)bni_168 + (-1)Bound*bni_168] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_169] ≥ 0)

  • COND_LOAD527(TRUE, i4, i7, i94) → LOAD527(i4, i7, +(i94, -1))
    • (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧[bni_170] = 0∧[(-1)bni_170 + (-1)Bound*bni_170] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_171] ≥ 0)

  • LOAD404(i4, i7, 0) → LOAD472(i4, i7, i7)
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_173] ≥ 0)
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_173] ≥ 0)

  • LOAD472(i4, i7, i83) → COND_LOAD472(>(i83, 0), i4, i7, i83)
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧[bni_174] = 0∧[(-1)bni_174 + (-1)Bound*bni_174] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_175] ≥ 0)

  • COND_LOAD472(TRUE, i4, i7, i83) → LOAD472(i4, i7, +(i83, -1))
    • (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧[bni_176] = 0∧[(-1)bni_176 + (-1)Bound*bni_176] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_177] ≥ 0)

  • LOAD348(i4, i7, 0) → LOAD404(i4, i7, i7)
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_179] ≥ 0)
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_179] ≥ 0)

  • LOAD404(i4, i7, i69) → COND_LOAD404(>(i69, 0), i4, i7, i69)
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧[bni_180] = 0∧[(-1)bni_180 + (-1)Bound*bni_180] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_181] ≥ 0)

  • COND_LOAD404(TRUE, i4, i7, i69) → LOAD404(i4, i7, +(i69, -1))
    • (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧[bni_182] = 0∧[(-1)bni_182 + (-1)Bound*bni_182] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_183] ≥ 0)

  • LOAD290(i4, i7, 0) → LOAD348(i4, i7, i7)
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_185] ≥ 0)
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_185] ≥ 0)

  • LOAD348(i4, i7, i58) → COND_LOAD348(>(i58, 0), i4, i7, i58)
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧[bni_186] = 0∧[(-1)bni_186 + (-1)Bound*bni_186] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_187] ≥ 0)

  • COND_LOAD348(TRUE, i4, i7, i58) → LOAD348(i4, i7, +(i58, -1))
    • (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧[bni_188] = 0∧[(-1)bni_188 + (-1)Bound*bni_188] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_189] ≥ 0)

  • LOAD230(i4, i7, 0) → LOAD290(i4, i7, i7)
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_191] ≥ 0)
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_191] ≥ 0)

  • LOAD290(i4, i7, i47) → COND_LOAD290(>(i47, 0), i4, i7, i47)
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧[bni_192] = 0∧[(-1)bni_192 + (-1)Bound*bni_192] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_193] ≥ 0)

  • COND_LOAD290(TRUE, i4, i7, i47) → LOAD290(i4, i7, +(i47, -1))
    • (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧[bni_194] = 0∧[(-1)bni_194 + (-1)Bound*bni_194] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_195] ≥ 0)

  • LOAD173(i4, i7, 0) → LOAD230(i4, i7, i7)
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_197] ≥ 0)
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_197] ≥ 0)

  • LOAD230(i4, i7, i32) → COND_LOAD230(>(i32, 0), i4, i7, i32)
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧[bni_198] = 0∧[(-1)bni_198 + (-1)Bound*bni_198] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_199] ≥ 0)

  • COND_LOAD230(TRUE, i4, i7, i32) → LOAD230(i4, i7, +(i32, -1))
    • (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧[bni_200] = 0∧[(-1)bni_200 + (-1)Bound*bni_200] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_201] ≥ 0)

  • LOAD83(i4, i7) → COND_LOAD83(&&(>(i7, 0), <(i7, 100)), i4, i7)
    • (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[bni_202] = 0∧[(-1)bni_202 + (-1)Bound*bni_202] ≥ 0∧0 = 0∧[(-1)bso_203] ≥ 0)

  • COND_LOAD83(TRUE, i4, i7) → LOAD173(i4, i7, i7)
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_205] ≥ 0)
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_205] ≥ 0)

  • LOAD54(i4) → COND_LOAD54(&&(>(i4, 0), <(i4, 100)), i4)
    • (i4[36] ≥ 0∧[98] + [-1]i4[36] ≥ 0 ⇒ (UIncreasing(COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])), ≥)∧[(-1)Bound*bni_206] + [bni_206]i4[36] ≥ 0∧[(-1)bso_207] ≥ 0)

  • COND_LOAD54(TRUE, i4) → LOAD173(i4, i4, i4)
    • ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧[(-1)bso_209] ≥ 0)
    • ((UIncreasing(LOAD173(i4[37], i4[37], i4[37])), ≥)∧0 = 0∧[(-1)bso_209] ≥ 0)

  • LOAD173(i4, i7, i22) → COND_LOAD173(>(i22, 0), i4, i7, i22)
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧[bni_210] = 0∧[(-1)bni_210 + (-1)Bound*bni_210] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_211] ≥ 0)

  • COND_LOAD173(TRUE, i4, i7, i22) → LOAD173(i4, i7, +(i22, -1))
    • (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧[bni_212] = 0∧[(-1)bni_212 + (-1)Bound*bni_212] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_213] ≥ 0)

  • LOAD83(i4, i7) → COND_LOAD831(&&(>=(i7, 100), >(i4, 0)), i4, i7)
    • (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])), ≥)∧[(-1)Bound*bni_214] + [bni_214]i4[40] ≥ 0∧[(-1)bso_215] ≥ 0)

  • COND_LOAD831(TRUE, i4, i7) → LOAD54(-(i4, 1))
    • (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)
    • (i7[40] ≥ 0∧i4[40] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[41], 1))), ≥)∧[(-1)Bound*bni_216] + [bni_216]i4[40] ≥ 0∧[1 + (-1)bso_217] ≥ 0)

  • LOAD54(i4) → COND_LOAD541(>=(i4, 100), i4)
    • (i4[42] ≥ 0 ⇒ (UIncreasing(COND_LOAD541(>=(i4[42], 100), i4[42])), ≥)∧[(99)bni_218 + (-1)Bound*bni_218] + [bni_218]i4[42] ≥ 0∧[(-1)bso_219] ≥ 0)

  • COND_LOAD541(TRUE, i4) → LOAD54(-(i4, 1))
    • (i4[42] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(99)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 0)
    • (i4[42] ≥ 0 ⇒ (UIncreasing(LOAD54(-(i4[43], 1))), ≥)∧[(99)bni_220 + (-1)Bound*bni_220] + [bni_220]i4[42] ≥ 0∧[1 + (-1)bso_221] ≥ 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) = [3]   
POL(FALSE) = 0   
POL(LOAD792(x1, x2, x3)) = [-1] + x1   
POL(0) = 0   
POL(LOAD83(x1, x2)) = [-1] + x1   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(LOAD740(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD792(x1, x2, x3, x4)) = [-1] + x2   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(LOAD688(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD740(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD635(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD688(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD578(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD635(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD527(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD578(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD472(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD527(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD404(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD472(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD348(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD404(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD290(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD348(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD230(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD290(x1, x2, x3, x4)) = [-1] + x2   
POL(LOAD173(x1, x2, x3)) = [-1] + x1   
POL(COND_LOAD230(x1, x2, x3, x4)) = [-1] + x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(LOAD54(x1)) = [-1] + x1   
POL(COND_LOAD54(x1, x2)) = [-1] + x2   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + x2   
POL(COND_LOAD831(x1, x2, x3)) = [-1] + x2   
POL(>=(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(COND_LOAD541(x1, x2)) = [-1] + x2   

The following pairs are in P>:

COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(-(i4[41], 1))
COND_LOAD541(TRUE, i4[43]) → LOAD54(-(i4[43], 1))

The following pairs are in Pbound:

LOAD54(i4[36]) → COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])
LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])
COND_LOAD831(TRUE, i4[41], i7[41]) → LOAD54(-(i4[41], 1))
LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42])
COND_LOAD541(TRUE, i4[43]) → LOAD54(-(i4[43], 1))

The following pairs are in P:

LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1))
LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])
COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
LOAD54(i4[36]) → COND_LOAD54(&&(>(i4[36], 0), <(i4[36], 100)), i4[36])
COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37])
LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
LOAD83(i4[40], i7[40]) → COND_LOAD831(&&(>=(i7[40], 100), >(i4[40], 0)), i4[40], i7[40])
LOAD54(i4[42]) → COND_LOAD541(>=(i4[42], 100), i4[42])

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

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(12) Complex Obligation (AND)

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

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(36): LOAD54(i4[36]) → COND_LOAD54(i4[36] > 0 && i4[36] < 100, i4[36])
(37): COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37])
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(40): LOAD83(i4[40], i7[40]) → COND_LOAD831(i7[40] >= 100 && i4[40] > 0, i4[40], i7[40])
(42): LOAD54(i4[42]) → COND_LOAD541(i4[42] >= 100, i4[42])

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(37) -> (31), if ((i4[37]* 0)∧(i4[37]* i7[31])∧(i4[37]* i4[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(36) -> (37), if ((i4[36]* i4[37])∧(i4[36] > 0 && i4[36] < 100* TRUE))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(37) -> (38), if ((i4[37]* i22[38])∧(i4[37]* i7[38])∧(i4[37]* i4[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))


(0) -> (40), if ((i4[0]* i4[40])∧(i7[0] + 1* i7[40]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(14) IDependencyGraphProof (EQUIVALENT transformation)

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

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

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(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 COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]+(i22[39], -1)=0i4[39]=i4[31]i7[39]=i7[31]COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (2)    (>(i22[38], 0)=TRUE+(i22[38], -1)=0COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (3)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (4)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (5)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (6)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



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

    (7)    (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



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

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



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

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



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

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)







For Pair LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (15)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



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

    (16)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



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

    (17)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



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

    (18)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



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

    (19)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



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

    (20)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)



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

    (21)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)







For Pair COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (22)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUE+(i32[33], -1)=0i7[33]=i7[28]i4[33]=i4[28]COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (23)    (>(i32[32], 0)=TRUE+(i32[32], -1)=0COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (24)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (25)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (26)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (27)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



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

    (28)    (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (29)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (30)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



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

    (31)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (32)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (33)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



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

    (34)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



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

    (35)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (36)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



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

    (37)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



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

    (38)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



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

    (39)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



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

    (40)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



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

    (41)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)



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

    (42)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)







For Pair COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (43)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i4[30]=i4[25]+(i47[30], -1)=0i7[30]=i7[25]COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (44)    (>(i47[29], 0)=TRUE+(i47[29], -1)=0COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (45)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (46)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (47)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (48)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



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

    (49)    (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (50)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (51)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



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

    (52)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (53)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (54)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



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

    (55)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



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

    (56)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (57)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



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

    (58)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



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

    (59)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



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

    (60)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



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

    (61)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



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

    (62)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)



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

    (63)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)







For Pair COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (64)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i7[27]=i7[22]+(i58[27], -1)=0i4[27]=i4[22]COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (65)    (>(i58[26], 0)=TRUE+(i58[26], -1)=0COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (66)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (67)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (68)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (69)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



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

    (70)    (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (71)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (72)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



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

    (73)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (74)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (75)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



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

    (76)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



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

    (77)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (78)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



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

    (79)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



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

    (80)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



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

    (81)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



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

    (82)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



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

    (83)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)



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

    (84)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)







For Pair COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (85)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i7[24]=i7[19]+(i69[24], -1)=0i4[24]=i4[19]COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (86)    (>(i69[23], 0)=TRUE+(i69[23], -1)=0COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (87)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (88)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (89)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (90)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



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

    (91)    (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (92)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (93)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



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

    (94)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (95)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (96)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



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

    (97)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



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

    (98)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (99)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



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

    (100)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



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

    (101)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



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

    (102)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



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

    (103)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



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

    (104)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)



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

    (105)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)







For Pair COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (106)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUEi4[21]=i4[16]i7[21]=i7[16]+(i83[21], -1)=0COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (107)    (>(i83[20], 0)=TRUE+(i83[20], -1)=0COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (108)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (109)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (110)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (111)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



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

    (112)    (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (113)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (114)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



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

    (115)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (116)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (117)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



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

    (118)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



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

    (119)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (120)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



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

    (121)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



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

    (122)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



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

    (123)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



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

    (124)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



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

    (125)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)



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

    (126)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)







For Pair COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (127)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i4[18]=i4[13]i7[18]=i7[13]+(i94[18], -1)=0COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (128)    (>(i94[17], 0)=TRUE+(i94[17], -1)=0COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (129)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (130)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (131)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (132)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



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

    (133)    (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (134)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (135)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



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

    (136)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (137)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (138)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



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

    (139)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



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

    (140)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (141)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



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

    (142)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



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

    (143)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



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

    (144)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



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

    (145)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



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

    (146)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)



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

    (147)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)







For Pair COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (148)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]+(i106[15], -1)=0i7[15]=i7[10]i4[15]=i4[10]COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (149)    (>(i106[14], 0)=TRUE+(i106[14], -1)=0COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (150)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (151)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (152)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (153)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



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

    (154)    (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (155)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (156)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



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

    (157)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (158)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (159)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



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

    (160)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



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

    (161)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (162)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



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

    (163)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



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

    (164)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



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

    (165)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



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

    (166)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



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

    (167)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)



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

    (168)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)







For Pair COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (169)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i4[12]=i4[7]+(i118[12], -1)=0i7[12]=i7[7]COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (170)    (>(i118[11], 0)=TRUE+(i118[11], -1)=0COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (171)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (172)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (173)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (174)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



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

    (175)    (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (176)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (177)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



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

    (178)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (179)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (180)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



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

    (181)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



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

    (182)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (183)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



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

    (184)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



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

    (185)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



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

    (186)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



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

    (187)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



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

    (188)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)



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

    (189)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)







For Pair COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (190)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUE+(i126[9], -1)=0i7[9]=i7[4]i4[9]=i4[4]COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (191)    (>(i126[8], 0)=TRUE+(i126[8], -1)=0COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (192)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (193)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (194)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (195)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



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

    (196)    (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (197)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (198)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



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

    (199)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (200)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (201)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



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

    (202)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



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

    (203)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (204)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



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

    (205)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



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

    (206)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



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

    (207)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



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

    (208)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



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

    (209)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)



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

    (210)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)







For Pair COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (211)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]i7[6]=i7[1]+(i139[6], -1)=0i4[6]=i4[1]COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (212)    (>(i139[5], 0)=TRUE+(i139[5], -1)=0COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (213)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (214)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (215)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (216)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



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

    (217)    (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (218)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (219)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (220)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (221)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (222)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



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

    (223)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



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

    (224)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (225)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (226)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (227)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



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

    (228)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



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

    (229)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



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

    (230)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)



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

    (231)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)







For Pair COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (232)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUEi7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (233)    (>(i149[2], 0)=TRUE+(i149[2], -1)=0COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (234)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (235)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (236)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (237)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



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

    (238)    (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (239)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (240)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (241)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (242)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (243)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



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

    (244)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



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

    (245)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (246)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (247)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (248)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



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

    (249)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



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

    (250)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



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

    (251)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)



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

    (252)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)







For Pair LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (253)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (254)    (LOAD740(i4[1], 0, 0)≥NonInfC∧LOAD740(i4[1], 0, 0)≥LOAD792(i4[1], 0, 0)∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (255)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (256)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (257)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (258)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_170] ≥ 0)



  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (259)    (i7[1]=i7[2]i7[1]=i149[2]i4[1]=i4[2]LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (260)    (LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



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

    (261)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (262)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (263)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



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

    (264)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_170] ≥ 0)







For Pair LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) the following chains were created:
  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (265)    (i4[4]=i4[1]i7[4]=i7[1]i7[4]=0LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (266)    (LOAD688(i4[4], 0, 0)≥NonInfC∧LOAD688(i4[4], 0, 0)≥LOAD740(i4[4], 0, 0)∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (267)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (268)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (269)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (270)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_172] ≥ 0)



  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (271)    (i4[4]=i4[5]i7[4]=i139[5]i7[4]=i7[5]LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (272)    (LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



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

    (273)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (274)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (275)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



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

    (276)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_172] ≥ 0)







For Pair LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) the following chains were created:
  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (277)    (i7[7]=0i4[7]=i4[4]i7[7]=i7[4]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (278)    (LOAD635(i4[7], 0, 0)≥NonInfC∧LOAD635(i4[7], 0, 0)≥LOAD688(i4[7], 0, 0)∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (279)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (280)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (281)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (282)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_174] ≥ 0)



  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (283)    (i7[7]=i7[8]i4[7]=i4[8]i7[7]=i126[8]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (284)    (LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



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

    (285)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (286)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (287)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



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

    (288)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_174] ≥ 0)







For Pair LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) the following chains were created:
  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (289)    (i7[10]=0i4[10]=i4[7]i7[10]=i7[7]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (290)    (LOAD578(i4[10], 0, 0)≥NonInfC∧LOAD578(i4[10], 0, 0)≥LOAD635(i4[10], 0, 0)∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (291)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (292)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (293)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (294)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_176] ≥ 0)



  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (295)    (i7[10]=i118[11]i4[10]=i4[11]i7[10]=i7[11]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (296)    (LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



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

    (297)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (298)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (299)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



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

    (300)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_176] ≥ 0)







For Pair LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) the following chains were created:
  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (301)    (i7[13]=i7[10]i4[13]=i4[10]i7[13]=0LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (302)    (LOAD527(i4[13], 0, 0)≥NonInfC∧LOAD527(i4[13], 0, 0)≥LOAD578(i4[13], 0, 0)∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (303)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (304)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (305)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (306)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_178] ≥ 0)



  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (307)    (i7[13]=i106[14]i4[13]=i4[14]i7[13]=i7[14]LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (308)    (LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



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

    (309)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (310)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (311)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



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

    (312)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_178] ≥ 0)







For Pair LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) the following chains were created:
  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (313)    (i7[16]=i7[13]i4[16]=i4[13]i7[16]=0LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (314)    (LOAD472(i4[16], 0, 0)≥NonInfC∧LOAD472(i4[16], 0, 0)≥LOAD527(i4[16], 0, 0)∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (315)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (316)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (317)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (318)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_180] ≥ 0)



  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (319)    (i7[16]=i7[17]i7[16]=i94[17]i4[16]=i4[17]LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (320)    (LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



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

    (321)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (322)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (323)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



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

    (324)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_180] ≥ 0)







For Pair LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) the following chains were created:
  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (325)    (i7[19]=i7[16]i4[19]=i4[16]i7[19]=0LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (326)    (LOAD404(i4[19], 0, 0)≥NonInfC∧LOAD404(i4[19], 0, 0)≥LOAD472(i4[19], 0, 0)∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (327)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (328)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (329)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (330)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_182] ≥ 0)



  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (331)    (i4[19]=i4[20]i7[19]=i7[20]i7[19]=i83[20]LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (332)    (LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



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

    (333)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (334)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (335)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



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

    (336)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_182] ≥ 0)







For Pair LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) the following chains were created:
  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (337)    (i4[22]=i4[19]i7[22]=0i7[22]=i7[19]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (338)    (LOAD348(i4[22], 0, 0)≥NonInfC∧LOAD348(i4[22], 0, 0)≥LOAD404(i4[22], 0, 0)∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (339)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (340)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (341)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (342)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_184] ≥ 0)



  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (343)    (i7[22]=i69[23]i7[22]=i7[23]i4[22]=i4[23]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (344)    (LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



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

    (345)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (346)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (347)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



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

    (348)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_184] ≥ 0)







For Pair LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) the following chains were created:
  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (349)    (i7[25]=i7[22]i7[25]=0i4[25]=i4[22]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (350)    (LOAD290(i4[25], 0, 0)≥NonInfC∧LOAD290(i4[25], 0, 0)≥LOAD348(i4[25], 0, 0)∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (351)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (352)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (353)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (354)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_186] ≥ 0)



  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (355)    (i4[25]=i4[26]i7[25]=i7[26]i7[25]=i58[26]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (356)    (LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



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

    (357)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (358)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (359)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



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

    (360)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_186] ≥ 0)







For Pair LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) the following chains were created:
  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (361)    (i7[28]=i7[25]i4[28]=i4[25]i7[28]=0LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (362)    (LOAD230(i4[28], 0, 0)≥NonInfC∧LOAD230(i4[28], 0, 0)≥LOAD290(i4[28], 0, 0)∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (363)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (364)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (365)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (366)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_188] ≥ 0)



  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (367)    (i7[28]=i47[29]i4[28]=i4[29]i7[28]=i7[29]LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (368)    (LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



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

    (369)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (370)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (371)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



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

    (372)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_188] ≥ 0)







For Pair LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) the following chains were created:
  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (373)    (i7[31]=i7[28]i7[31]=0i4[31]=i4[28]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (374)    (LOAD173(i4[31], 0, 0)≥NonInfC∧LOAD173(i4[31], 0, 0)≥LOAD230(i4[31], 0, 0)∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (375)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (376)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (377)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (378)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_190] ≥ 0)



  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (379)    (i7[31]=i32[32]i4[31]=i4[32]i7[31]=i7[32]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (380)    (LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



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

    (381)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (382)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (383)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



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

    (384)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_190] ≥ 0)







For Pair COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (385)    (i7[35]=0i4[35]=i4[31]i7[35]=i7[31]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (386)    (COND_LOAD83(TRUE, i4[35], 0)≥NonInfC∧COND_LOAD83(TRUE, i4[35], 0)≥LOAD173(i4[35], 0, 0)∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (387)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (388)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (389)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (390)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_192] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (391)    (i4[35]=i4[38]i7[35]=i22[38]i7[35]=i7[38]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (392)    (COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



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

    (393)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (394)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (395)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



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

    (396)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_192] ≥ 0)







For Pair LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) the following chains were created:
  • We consider the chain LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]), COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]) which results in the following constraint:

    (397)    (&&(>(i7[34], 0), <(i7[34], 100))=TRUEi7[34]=i7[35]i4[34]=i4[35]LOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



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

    (398)    (>(i7[34], 0)=TRUE<(i7[34], 100)=TRUELOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



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

    (399)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



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

    (400)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



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

    (401)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



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

    (402)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)



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

    (403)    (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-2)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)







For Pair LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (404)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (405)    (LOAD792(i4[1], 0, 0)≥NonInfC∧LOAD792(i4[1], 0, 0)≥LOAD83(i4[1], +(0, 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (406)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



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

    (407)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



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

    (408)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



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

    (409)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_196] ≥ 0)



  • We consider the chain COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (410)    (i7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (411)    (+(i149[3], -1)=0LOAD792(i4[3], i7[3], 0)≥NonInfC∧LOAD792(i4[3], i7[3], 0)≥LOAD83(i4[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



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

    (412)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



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

    (413)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



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

    (414)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



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

    (415)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_196] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)

  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)

  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)

  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)

  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)

  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)

  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)

  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)

  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)

  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)

  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)

  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)

  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)

  • LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_170] ≥ 0)
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_170] ≥ 0)

  • LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_172] ≥ 0)
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_172] ≥ 0)

  • LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_174] ≥ 0)
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_174] ≥ 0)

  • LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_176] ≥ 0)
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_176] ≥ 0)

  • LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_178] ≥ 0)
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_178] ≥ 0)

  • LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_180] ≥ 0)
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_180] ≥ 0)

  • LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_182] ≥ 0)
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_182] ≥ 0)

  • LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_184] ≥ 0)
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_184] ≥ 0)

  • LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_186] ≥ 0)
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_186] ≥ 0)

  • LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_188] ≥ 0)
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_188] ≥ 0)

  • LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_190] ≥ 0)
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_190] ≥ 0)

  • COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_192] ≥ 0)
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_192] ≥ 0)

  • LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])
    • (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-2)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)

  • LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1))
    • ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_196] ≥ 0)
    • (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_196] ≥ 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) = [3]   
POL(FALSE) = [3]   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD173(x1, x2, x3)) = [-1] + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(COND_LOAD230(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD230(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD290(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD290(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD348(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD348(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD404(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD404(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD472(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD472(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD527(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD527(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD578(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD578(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD635(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD635(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD688(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD688(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD740(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD740(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD792(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD792(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + [-1]x3   
POL(LOAD83(x1, x2)) = [-1] + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(1) = [1]   

The following pairs are in P>:

LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1))

The following pairs are in Pbound:

LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])

The following pairs are in P:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])

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

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(17) Complex Obligation (AND)

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

Integer, Boolean


R is empty.

The integer pair graph contains the following rules and edges:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])

(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(19) IDependencyGraphProof (EQUIVALENT transformation)

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

(20) Complex Obligation (AND)

(21) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])

(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(22) 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 COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (1)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (2)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



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

    (3)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (4)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (5)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (6)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



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

    (7)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (8)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (9)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



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

    (10)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (11)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (12)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (13)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



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

    (14)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD792(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD792(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))

The following pairs are in Pbound:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

The following pairs are in P:

LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

There are no usable rules.

(23) Complex Obligation (AND)

(24) 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): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(25) IDependencyGraphProof (EQUIVALENT transformation)

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

(26) TRUE

(27) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(28) IDependencyGraphProof (EQUIVALENT transformation)

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

(29) TRUE

(30) 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:
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])

(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(31) 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 COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (1)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (2)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



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

    (3)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (4)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (5)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



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

    (6)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



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

    (7)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (8)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (9)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



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

    (10)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (11)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (12)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



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

    (13)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



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

    (14)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD740(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD740(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))

The following pairs are in Pbound:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

The following pairs are in P:

LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

There are no usable rules.

(32) Complex Obligation (AND)

(33) 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:
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(34) IDependencyGraphProof (EQUIVALENT transformation)

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

(35) TRUE

(36) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(37) IDependencyGraphProof (EQUIVALENT transformation)

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

(38) TRUE

(39) 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:
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])

(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(40) 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 COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD688(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD688(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))

The following pairs are in Pbound:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

The following pairs are in P:

LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

There are no usable rules.

(41) Complex Obligation (AND)

(42) 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:
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(43) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(44) TRUE

(45) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(46) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(47) TRUE

(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:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])

(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(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 COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (1)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (8)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD635(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD635(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))

The following pairs are in Pbound:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

The following pairs are in P:

LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

There are no usable rules.

(50) Complex Obligation (AND)

(51) 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:
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(52) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(53) TRUE

(54) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(55) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(56) TRUE

(57) 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:
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])

(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(58) 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 COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD578(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD578(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))

The following pairs are in Pbound:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

The following pairs are in P:

LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

There are no usable rules.

(59) Complex Obligation (AND)

(60) 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:
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(61) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(62) TRUE

(63) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(64) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(65) TRUE

(66) 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:
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])

(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(67) 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 COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (1)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (8)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD527(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD527(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))

The following pairs are in Pbound:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

The following pairs are in P:

LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

There are no usable rules.

(68) Complex Obligation (AND)

(69) 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:
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(70) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(71) TRUE

(72) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(73) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(74) TRUE

(75) 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:
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])

(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(76) 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 COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (1)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (8)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD472(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD472(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))

The following pairs are in Pbound:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

The following pairs are in P:

LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

There are no usable rules.

(77) Complex Obligation (AND)

(78) 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:
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(79) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(80) TRUE

(81) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(82) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(83) TRUE

(84) 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:
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])

(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(85) 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 COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (1)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (8)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD404(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD404(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))

The following pairs are in Pbound:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

The following pairs are in P:

LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

There are no usable rules.

(86) Complex Obligation (AND)

(87) 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:
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(88) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(89) TRUE

(90) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(91) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(92) TRUE

(93) 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:
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])

(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(94) 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 COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (1)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (8)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD348(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD348(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))

The following pairs are in Pbound:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

The following pairs are in P:

LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

There are no usable rules.

(95) Complex Obligation (AND)

(96) 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:
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(97) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(98) TRUE

(99) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(100) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(101) TRUE

(102) 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:
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])

(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(103) 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 COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (1)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (8)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD290(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD290(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))

The following pairs are in Pbound:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

The following pairs are in P:

LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

There are no usable rules.

(104) Complex Obligation (AND)

(105) 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:
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(106) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(107) TRUE

(108) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(109) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(110) TRUE

(111) 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:
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])

(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(112) 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 COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (1)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (8)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD230(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD230(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))

The following pairs are in Pbound:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

The following pairs are in P:

LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

There are no usable rules.

(113) Complex Obligation (AND)

(114) 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:
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(115) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(116) TRUE

(117) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(118) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(119) TRUE

(120) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)

(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(121) 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 LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 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(LOAD173(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in Pbound:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in P:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])

There are no usable rules.

(122) Complex Obligation (AND)

(123) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(124) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(125) TRUE

(126) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(127) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(128) TRUE

(129) 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:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(130) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 12 SCCs with 13 less nodes.

(131) Complex Obligation (AND)

(132) 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:
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])

(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(133) 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 COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (1)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (8)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD792(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD792(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))

The following pairs are in Pbound:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

The following pairs are in P:

LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

There are no usable rules.

(134) Complex Obligation (AND)

(135) 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): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(136) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(137) TRUE

(138) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(139) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(140) TRUE

(141) 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:
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])

(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(142) 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 COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (1)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (8)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD740(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD740(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))

The following pairs are in Pbound:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

The following pairs are in P:

LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

There are no usable rules.

(143) Complex Obligation (AND)

(144) 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:
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(145) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(146) TRUE

(147) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(148) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(149) TRUE

(150) 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:
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])

(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(151) 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 COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD688(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD688(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))

The following pairs are in Pbound:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

The following pairs are in P:

LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

There are no usable rules.

(152) Complex Obligation (AND)

(153) 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:
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(154) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(155) TRUE

(156) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(157) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(158) TRUE

(159) 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:
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])

(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(160) 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 COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (1)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (8)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD635(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD635(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))

The following pairs are in Pbound:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

The following pairs are in P:

LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

There are no usable rules.

(161) Complex Obligation (AND)

(162) 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:
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(163) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(164) TRUE

(165) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(166) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(167) TRUE

(168) 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:
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])

(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(169) 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 COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD578(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD578(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))

The following pairs are in Pbound:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

The following pairs are in P:

LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

There are no usable rules.

(170) Complex Obligation (AND)

(171) 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:
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(172) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(173) TRUE

(174) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(175) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(176) TRUE

(177) 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:
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])

(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(178) 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 COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (1)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (8)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD527(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD527(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))

The following pairs are in Pbound:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

The following pairs are in P:

LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

There are no usable rules.

(179) Complex Obligation (AND)

(180) 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:
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(181) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(182) TRUE

(183) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(184) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(185) TRUE

(186) 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:
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])

(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(187) 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 COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (1)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (8)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD472(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD472(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))

The following pairs are in Pbound:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

The following pairs are in P:

LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

There are no usable rules.

(188) Complex Obligation (AND)

(189) 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:
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(190) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(191) TRUE

(192) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(193) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(194) TRUE

(195) 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:
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])

(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(196) 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 COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (1)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (8)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD404(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD404(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))

The following pairs are in Pbound:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

The following pairs are in P:

LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

There are no usable rules.

(197) Complex Obligation (AND)

(198) 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:
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(199) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(200) TRUE

(201) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(202) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(203) TRUE

(204) 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:
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])

(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(205) 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 COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (1)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (8)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD348(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD348(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))

The following pairs are in Pbound:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

The following pairs are in P:

LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

There are no usable rules.

(206) Complex Obligation (AND)

(207) 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:
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(208) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(209) TRUE

(210) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(211) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(212) TRUE

(213) 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:
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])

(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(214) 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 COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (1)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (8)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD290(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD290(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))

The following pairs are in Pbound:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

The following pairs are in P:

LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

There are no usable rules.

(215) Complex Obligation (AND)

(216) 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:
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(217) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(218) TRUE

(219) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(220) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(221) TRUE

(222) 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:
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])

(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(223) 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 COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (1)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (8)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD230(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD230(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))

The following pairs are in Pbound:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

The following pairs are in P:

LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

There are no usable rules.

(224) Complex Obligation (AND)

(225) 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:
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(226) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(227) TRUE

(228) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(229) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(230) TRUE

(231) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)

(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(232) 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 LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 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(LOAD173(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in Pbound:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in P:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])

There are no usable rules.

(233) Complex Obligation (AND)

(234) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(235) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(236) TRUE

(237) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(238) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(239) TRUE

(240) 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:
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(37): COND_LOAD54(TRUE, i4[37]) → LOAD173(i4[37], i4[37], i4[37])
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(37) -> (31), if ((i4[37]* 0)∧(i4[37]* i7[31])∧(i4[37]* i4[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(37) -> (38), if ((i4[37]* i22[38])∧(i4[37]* i7[38])∧(i4[37]* i4[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(241) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(242) 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:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(0) -> (34), if ((i4[0]* i4[34])∧(i7[0] + 1* i7[34]))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(243) 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 COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]+(i22[39], -1)=0i4[39]=i4[31]i7[39]=i7[31]COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i22[38], 0)=TRUE+(i22[38], -1)=0COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i22[38] + [-1] ≥ 0∧i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121 + (-1)Bound*bni_121] + [(-1)bni_121]i7[38] ≥ 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)







For Pair LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (15)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (15) using rule (IV) which results in the following new constraint:

    (16)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (16) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (17)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (17) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (18)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (18) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (19)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123 + (-1)Bound*bni_123] + [(-1)bni_123]i7[38] ≥ 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (19) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (20)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)



    We simplified constraint (20) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (21)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)







For Pair COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (22)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUE+(i32[33], -1)=0i7[33]=i7[28]i4[33]=i4[28]COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (22) using rules (III), (IV) which results in the following new constraint:

    (23)    (>(i32[32], 0)=TRUE+(i32[32], -1)=0COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (23) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (24)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (24) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (25)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (25) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (26)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (26) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (27)    (i32[32] + [-1] ≥ 0∧i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (27) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (28)    (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (29)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (29) using rules (III), (IV) which results in the following new constraint:

    (30)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (30) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (31)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (31) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (32)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (32) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (33)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125 + (-1)Bound*bni_125] + [(-1)bni_125]i7[32] ≥ 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (33) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (34)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)



    We simplified constraint (34) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (35)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (36)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (36) using rule (IV) which results in the following new constraint:

    (37)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (37) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (38)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (38) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (39)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (39) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (40)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127 + (-1)Bound*bni_127] + [(-1)bni_127]i7[32] ≥ 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (40) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (41)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)



    We simplified constraint (41) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (42)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)







For Pair COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (43)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i4[30]=i4[25]+(i47[30], -1)=0i7[30]=i7[25]COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (43) using rules (III), (IV) which results in the following new constraint:

    (44)    (>(i47[29], 0)=TRUE+(i47[29], -1)=0COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (44) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (45)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (45) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (46)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (46) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (47)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (47) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (48)    (i47[29] + [-1] ≥ 0∧i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (48) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (49)    (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (50)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (50) using rules (III), (IV) which results in the following new constraint:

    (51)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (51) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (52)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (52) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (53)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (53) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (54)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129 + (-1)Bound*bni_129] + [(-1)bni_129]i7[29] ≥ 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (54) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (55)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)



    We simplified constraint (55) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (56)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (57)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (57) using rule (IV) which results in the following new constraint:

    (58)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (58) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (59)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (59) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (60)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (60) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (61)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131 + (-1)Bound*bni_131] + [(-1)bni_131]i7[29] ≥ 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (61) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (62)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)



    We simplified constraint (62) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (63)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)







For Pair COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (64)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i7[27]=i7[22]+(i58[27], -1)=0i4[27]=i4[22]COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (64) using rules (III), (IV) which results in the following new constraint:

    (65)    (>(i58[26], 0)=TRUE+(i58[26], -1)=0COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (65) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (66)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (66) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (67)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (67) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (68)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (68) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (69)    (i58[26] + [-1] ≥ 0∧i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (69) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (70)    (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (71)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (71) using rules (III), (IV) which results in the following new constraint:

    (72)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (72) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (73)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (73) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (74)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (74) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (75)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133 + (-1)Bound*bni_133] + [(-1)bni_133]i7[26] ≥ 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (75) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (76)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)



    We simplified constraint (76) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (77)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (78)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (78) using rule (IV) which results in the following new constraint:

    (79)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (79) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (80)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



    We simplified constraint (80) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (81)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



    We simplified constraint (81) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (82)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135 + (-1)Bound*bni_135] + [(-1)bni_135]i7[26] ≥ 0∧[(-1)bso_136] ≥ 0)



    We simplified constraint (82) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (83)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)



    We simplified constraint (83) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (84)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)







For Pair COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (85)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i7[24]=i7[19]+(i69[24], -1)=0i4[24]=i4[19]COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (85) using rules (III), (IV) which results in the following new constraint:

    (86)    (>(i69[23], 0)=TRUE+(i69[23], -1)=0COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (86) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (87)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (87) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (88)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (88) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (89)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (89) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (90)    (i69[23] + [-1] ≥ 0∧i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (90) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (91)    (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (92)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (92) using rules (III), (IV) which results in the following new constraint:

    (93)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (93) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (94)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (94) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (95)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (95) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (96)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137 + (-1)Bound*bni_137] + [(-1)bni_137]i7[23] ≥ 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (96) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (97)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)



    We simplified constraint (97) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (98)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (99)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (99) using rule (IV) which results in the following new constraint:

    (100)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (100) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (101)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



    We simplified constraint (101) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (102)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



    We simplified constraint (102) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (103)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139 + (-1)Bound*bni_139] + [(-1)bni_139]i7[23] ≥ 0∧[(-1)bso_140] ≥ 0)



    We simplified constraint (103) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (104)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)



    We simplified constraint (104) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (105)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)







For Pair COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (106)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUEi4[21]=i4[16]i7[21]=i7[16]+(i83[21], -1)=0COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (106) using rules (III), (IV) which results in the following new constraint:

    (107)    (>(i83[20], 0)=TRUE+(i83[20], -1)=0COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (107) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (108)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (108) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (109)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (109) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (110)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (110) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (111)    (i83[20] + [-1] ≥ 0∧i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (111) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (112)    (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (113)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (113) using rules (III), (IV) which results in the following new constraint:

    (114)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (114) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (115)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (115) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (116)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (116) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (117)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141 + (-1)Bound*bni_141] + [(-1)bni_141]i7[20] ≥ 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (117) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (118)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)



    We simplified constraint (118) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (119)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (120)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (120) using rule (IV) which results in the following new constraint:

    (121)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (121) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (122)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



    We simplified constraint (122) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (123)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



    We simplified constraint (123) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (124)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143 + (-1)Bound*bni_143] + [(-1)bni_143]i7[20] ≥ 0∧[(-1)bso_144] ≥ 0)



    We simplified constraint (124) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (125)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)



    We simplified constraint (125) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (126)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)







For Pair COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (127)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i4[18]=i4[13]i7[18]=i7[13]+(i94[18], -1)=0COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (127) using rules (III), (IV) which results in the following new constraint:

    (128)    (>(i94[17], 0)=TRUE+(i94[17], -1)=0COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (128) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (129)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (129) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (130)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (130) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (131)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (131) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (132)    (i94[17] + [-1] ≥ 0∧i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (132) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (133)    (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (134)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (134) using rules (III), (IV) which results in the following new constraint:

    (135)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (135) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (136)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (136) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (137)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (137) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (138)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145 + (-1)Bound*bni_145] + [(-1)bni_145]i7[17] ≥ 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (138) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (139)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)



    We simplified constraint (139) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (140)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (141)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (141) using rule (IV) which results in the following new constraint:

    (142)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (142) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (143)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



    We simplified constraint (143) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (144)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



    We simplified constraint (144) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (145)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147 + (-1)Bound*bni_147] + [(-1)bni_147]i7[17] ≥ 0∧[(-1)bso_148] ≥ 0)



    We simplified constraint (145) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (146)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)



    We simplified constraint (146) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (147)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)







For Pair COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (148)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]+(i106[15], -1)=0i7[15]=i7[10]i4[15]=i4[10]COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (148) using rules (III), (IV) which results in the following new constraint:

    (149)    (>(i106[14], 0)=TRUE+(i106[14], -1)=0COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (149) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (150)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (150) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (151)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (151) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (152)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (152) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (153)    (i106[14] + [-1] ≥ 0∧i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (153) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (154)    (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (155)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (155) using rules (III), (IV) which results in the following new constraint:

    (156)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (156) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (157)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (157) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (158)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (158) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (159)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149 + (-1)Bound*bni_149] + [(-1)bni_149]i7[14] ≥ 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (159) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (160)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)



    We simplified constraint (160) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (161)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (162)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (162) using rule (IV) which results in the following new constraint:

    (163)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (163) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (164)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



    We simplified constraint (164) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (165)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



    We simplified constraint (165) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (166)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151 + (-1)Bound*bni_151] + [(-1)bni_151]i7[14] ≥ 0∧[(-1)bso_152] ≥ 0)



    We simplified constraint (166) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (167)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)



    We simplified constraint (167) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (168)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)







For Pair COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (169)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i4[12]=i4[7]+(i118[12], -1)=0i7[12]=i7[7]COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (169) using rules (III), (IV) which results in the following new constraint:

    (170)    (>(i118[11], 0)=TRUE+(i118[11], -1)=0COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (170) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (171)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (171) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (172)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (172) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (173)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (173) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (174)    (i118[11] + [-1] ≥ 0∧i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (174) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (175)    (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (176)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (176) using rules (III), (IV) which results in the following new constraint:

    (177)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (177) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (178)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (178) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (179)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (179) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (180)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153 + (-1)Bound*bni_153] + [(-1)bni_153]i7[11] ≥ 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (180) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (181)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)



    We simplified constraint (181) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (182)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (183)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (183) using rule (IV) which results in the following new constraint:

    (184)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (184) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (185)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



    We simplified constraint (185) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (186)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



    We simplified constraint (186) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (187)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155 + (-1)Bound*bni_155] + [(-1)bni_155]i7[11] ≥ 0∧[(-1)bso_156] ≥ 0)



    We simplified constraint (187) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (188)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)



    We simplified constraint (188) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (189)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)







For Pair COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (190)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUE+(i126[9], -1)=0i7[9]=i7[4]i4[9]=i4[4]COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (190) using rules (III), (IV) which results in the following new constraint:

    (191)    (>(i126[8], 0)=TRUE+(i126[8], -1)=0COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (191) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (192)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (192) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (193)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (193) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (194)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (194) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (195)    (i126[8] + [-1] ≥ 0∧i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (195) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (196)    (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (197)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (197) using rules (III), (IV) which results in the following new constraint:

    (198)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (198) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (199)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (199) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (200)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (200) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (201)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157 + (-1)Bound*bni_157] + [(-1)bni_157]i7[8] ≥ 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (201) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (202)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)



    We simplified constraint (202) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (203)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (204)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (204) using rule (IV) which results in the following new constraint:

    (205)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (205) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (206)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



    We simplified constraint (206) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (207)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



    We simplified constraint (207) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (208)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159 + (-1)Bound*bni_159] + [(-1)bni_159]i7[8] ≥ 0∧[(-1)bso_160] ≥ 0)



    We simplified constraint (208) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (209)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)



    We simplified constraint (209) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (210)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)







For Pair COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (211)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]i7[6]=i7[1]+(i139[6], -1)=0i4[6]=i4[1]COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (211) using rules (III), (IV) which results in the following new constraint:

    (212)    (>(i139[5], 0)=TRUE+(i139[5], -1)=0COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (212) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (213)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (213) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (214)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (214) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (215)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (215) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (216)    (i139[5] + [-1] ≥ 0∧i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (216) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (217)    (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (218)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (218) using rules (III), (IV) which results in the following new constraint:

    (219)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (219) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (220)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (220) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (221)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (221) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (222)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161 + (-1)Bound*bni_161] + [(-1)bni_161]i7[5] ≥ 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (222) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (223)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)



    We simplified constraint (223) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (224)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (225)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (225) using rule (IV) which results in the following new constraint:

    (226)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (226) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (227)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



    We simplified constraint (227) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (228)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



    We simplified constraint (228) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (229)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163 + (-1)Bound*bni_163] + [(-1)bni_163]i7[5] ≥ 0∧[(-1)bso_164] ≥ 0)



    We simplified constraint (229) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (230)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)



    We simplified constraint (230) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (231)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)







For Pair COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (232)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUEi7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (232) using rules (III), (IV) which results in the following new constraint:

    (233)    (>(i149[2], 0)=TRUE+(i149[2], -1)=0COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (233) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (234)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (234) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (235)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (235) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (236)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (236) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (237)    (i149[2] + [-1] ≥ 0∧i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (237) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (238)    (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (239)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (239) using rules (III), (IV) which results in the following new constraint:

    (240)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (240) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (241)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (241) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (242)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (242) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (243)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165 + (-1)Bound*bni_165] + [(-1)bni_165]i7[2] ≥ 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (243) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (244)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)



    We simplified constraint (244) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (245)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (246)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (246) using rule (IV) which results in the following new constraint:

    (247)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (247) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (248)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



    We simplified constraint (248) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (249)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



    We simplified constraint (249) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (250)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167 + (-1)Bound*bni_167] + [(-1)bni_167]i7[2] ≥ 0∧[(-1)bso_168] ≥ 0)



    We simplified constraint (250) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (251)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)



    We simplified constraint (251) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (252)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)







For Pair LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) which results in the following constraint:

    (253)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



    We simplified constraint (253) using rules (III), (IV) which results in the following new constraint:

    (254)    (LOAD740(i4[1], 0, 0)≥NonInfC∧LOAD740(i4[1], 0, 0)≥LOAD792(i4[1], 0, 0)∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



    We simplified constraint (254) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (255)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (255) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (256)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (256) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (257)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (257) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (258)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_170] ≥ 0)



  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (259)    (i7[1]=i7[2]i7[1]=i149[2]i4[1]=i4[2]LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



    We simplified constraint (259) using rule (IV) which results in the following new constraint:

    (260)    (LOAD740(i4[1], i7[1], 0)≥NonInfC∧LOAD740(i4[1], i7[1], 0)≥LOAD792(i4[1], i7[1], i7[1])∧(UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥))



    We simplified constraint (260) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (261)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (261) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (262)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (262) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (263)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧[(-1)bso_170] ≥ 0)



    We simplified constraint (263) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (264)    ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_170] ≥ 0)







For Pair LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) the following chains were created:
  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]) which results in the following constraint:

    (265)    (i4[4]=i4[1]i7[4]=i7[1]i7[4]=0LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



    We simplified constraint (265) using rules (III), (IV) which results in the following new constraint:

    (266)    (LOAD688(i4[4], 0, 0)≥NonInfC∧LOAD688(i4[4], 0, 0)≥LOAD740(i4[4], 0, 0)∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



    We simplified constraint (266) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (267)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (267) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (268)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (268) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (269)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (269) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (270)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_172] ≥ 0)



  • We consider the chain LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (271)    (i4[4]=i4[5]i7[4]=i139[5]i7[4]=i7[5]LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



    We simplified constraint (271) using rule (IV) which results in the following new constraint:

    (272)    (LOAD688(i4[4], i7[4], 0)≥NonInfC∧LOAD688(i4[4], i7[4], 0)≥LOAD740(i4[4], i7[4], i7[4])∧(UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥))



    We simplified constraint (272) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (273)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (273) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (274)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (274) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (275)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧[(-1)bso_172] ≥ 0)



    We simplified constraint (275) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (276)    ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_172] ≥ 0)







For Pair LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) the following chains were created:
  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4]) which results in the following constraint:

    (277)    (i7[7]=0i4[7]=i4[4]i7[7]=i7[4]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



    We simplified constraint (277) using rules (III), (IV) which results in the following new constraint:

    (278)    (LOAD635(i4[7], 0, 0)≥NonInfC∧LOAD635(i4[7], 0, 0)≥LOAD688(i4[7], 0, 0)∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



    We simplified constraint (278) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (279)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (279) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (280)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (280) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (281)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (281) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (282)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_174] ≥ 0)



  • We consider the chain LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (283)    (i7[7]=i7[8]i4[7]=i4[8]i7[7]=i126[8]LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



    We simplified constraint (283) using rule (IV) which results in the following new constraint:

    (284)    (LOAD635(i4[7], i7[7], 0)≥NonInfC∧LOAD635(i4[7], i7[7], 0)≥LOAD688(i4[7], i7[7], i7[7])∧(UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥))



    We simplified constraint (284) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (285)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (285) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (286)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (286) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (287)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧[(-1)bso_174] ≥ 0)



    We simplified constraint (287) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (288)    ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_174] ≥ 0)







For Pair LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) the following chains were created:
  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7]) which results in the following constraint:

    (289)    (i7[10]=0i4[10]=i4[7]i7[10]=i7[7]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



    We simplified constraint (289) using rules (III), (IV) which results in the following new constraint:

    (290)    (LOAD578(i4[10], 0, 0)≥NonInfC∧LOAD578(i4[10], 0, 0)≥LOAD635(i4[10], 0, 0)∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



    We simplified constraint (290) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (291)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (291) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (292)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (292) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (293)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (293) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (294)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_176] ≥ 0)



  • We consider the chain LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (295)    (i7[10]=i118[11]i4[10]=i4[11]i7[10]=i7[11]LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



    We simplified constraint (295) using rule (IV) which results in the following new constraint:

    (296)    (LOAD578(i4[10], i7[10], 0)≥NonInfC∧LOAD578(i4[10], i7[10], 0)≥LOAD635(i4[10], i7[10], i7[10])∧(UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥))



    We simplified constraint (296) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (297)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (297) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (298)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (298) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (299)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧[(-1)bso_176] ≥ 0)



    We simplified constraint (299) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (300)    ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_176] ≥ 0)







For Pair LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) the following chains were created:
  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10]) which results in the following constraint:

    (301)    (i7[13]=i7[10]i4[13]=i4[10]i7[13]=0LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



    We simplified constraint (301) using rules (III), (IV) which results in the following new constraint:

    (302)    (LOAD527(i4[13], 0, 0)≥NonInfC∧LOAD527(i4[13], 0, 0)≥LOAD578(i4[13], 0, 0)∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



    We simplified constraint (302) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (303)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (303) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (304)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (304) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (305)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (305) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (306)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_178] ≥ 0)



  • We consider the chain LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (307)    (i7[13]=i106[14]i4[13]=i4[14]i7[13]=i7[14]LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



    We simplified constraint (307) using rule (IV) which results in the following new constraint:

    (308)    (LOAD527(i4[13], i7[13], 0)≥NonInfC∧LOAD527(i4[13], i7[13], 0)≥LOAD578(i4[13], i7[13], i7[13])∧(UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥))



    We simplified constraint (308) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (309)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (309) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (310)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (310) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (311)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧[(-1)bso_178] ≥ 0)



    We simplified constraint (311) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (312)    ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_178] ≥ 0)







For Pair LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) the following chains were created:
  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13]) which results in the following constraint:

    (313)    (i7[16]=i7[13]i4[16]=i4[13]i7[16]=0LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



    We simplified constraint (313) using rules (III), (IV) which results in the following new constraint:

    (314)    (LOAD472(i4[16], 0, 0)≥NonInfC∧LOAD472(i4[16], 0, 0)≥LOAD527(i4[16], 0, 0)∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



    We simplified constraint (314) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (315)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (315) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (316)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (316) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (317)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (317) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (318)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_180] ≥ 0)



  • We consider the chain LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (319)    (i7[16]=i7[17]i7[16]=i94[17]i4[16]=i4[17]LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



    We simplified constraint (319) using rule (IV) which results in the following new constraint:

    (320)    (LOAD472(i4[16], i7[16], 0)≥NonInfC∧LOAD472(i4[16], i7[16], 0)≥LOAD527(i4[16], i7[16], i7[16])∧(UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥))



    We simplified constraint (320) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (321)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (321) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (322)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (322) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (323)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧[(-1)bso_180] ≥ 0)



    We simplified constraint (323) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (324)    ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_180] ≥ 0)







For Pair LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) the following chains were created:
  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16]) which results in the following constraint:

    (325)    (i7[19]=i7[16]i4[19]=i4[16]i7[19]=0LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



    We simplified constraint (325) using rules (III), (IV) which results in the following new constraint:

    (326)    (LOAD404(i4[19], 0, 0)≥NonInfC∧LOAD404(i4[19], 0, 0)≥LOAD472(i4[19], 0, 0)∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



    We simplified constraint (326) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (327)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (327) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (328)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (328) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (329)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (329) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (330)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_182] ≥ 0)



  • We consider the chain LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (331)    (i4[19]=i4[20]i7[19]=i7[20]i7[19]=i83[20]LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



    We simplified constraint (331) using rule (IV) which results in the following new constraint:

    (332)    (LOAD404(i4[19], i7[19], 0)≥NonInfC∧LOAD404(i4[19], i7[19], 0)≥LOAD472(i4[19], i7[19], i7[19])∧(UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥))



    We simplified constraint (332) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (333)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (333) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (334)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (334) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (335)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧[(-1)bso_182] ≥ 0)



    We simplified constraint (335) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (336)    ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_182] ≥ 0)







For Pair LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) the following chains were created:
  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19]) which results in the following constraint:

    (337)    (i4[22]=i4[19]i7[22]=0i7[22]=i7[19]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



    We simplified constraint (337) using rules (III), (IV) which results in the following new constraint:

    (338)    (LOAD348(i4[22], 0, 0)≥NonInfC∧LOAD348(i4[22], 0, 0)≥LOAD404(i4[22], 0, 0)∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



    We simplified constraint (338) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (339)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (339) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (340)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (340) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (341)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (341) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (342)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_184] ≥ 0)



  • We consider the chain LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (343)    (i7[22]=i69[23]i7[22]=i7[23]i4[22]=i4[23]LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



    We simplified constraint (343) using rule (IV) which results in the following new constraint:

    (344)    (LOAD348(i4[22], i7[22], 0)≥NonInfC∧LOAD348(i4[22], i7[22], 0)≥LOAD404(i4[22], i7[22], i7[22])∧(UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥))



    We simplified constraint (344) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (345)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (345) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (346)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (346) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (347)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧[(-1)bso_184] ≥ 0)



    We simplified constraint (347) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (348)    ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_184] ≥ 0)







For Pair LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) the following chains were created:
  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22]) which results in the following constraint:

    (349)    (i7[25]=i7[22]i7[25]=0i4[25]=i4[22]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



    We simplified constraint (349) using rules (III), (IV) which results in the following new constraint:

    (350)    (LOAD290(i4[25], 0, 0)≥NonInfC∧LOAD290(i4[25], 0, 0)≥LOAD348(i4[25], 0, 0)∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



    We simplified constraint (350) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (351)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (351) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (352)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (352) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (353)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (353) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (354)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_186] ≥ 0)



  • We consider the chain LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (355)    (i4[25]=i4[26]i7[25]=i7[26]i7[25]=i58[26]LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



    We simplified constraint (355) using rule (IV) which results in the following new constraint:

    (356)    (LOAD290(i4[25], i7[25], 0)≥NonInfC∧LOAD290(i4[25], i7[25], 0)≥LOAD348(i4[25], i7[25], i7[25])∧(UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥))



    We simplified constraint (356) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (357)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (357) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (358)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (358) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (359)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧[(-1)bso_186] ≥ 0)



    We simplified constraint (359) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (360)    ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_186] ≥ 0)







For Pair LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) the following chains were created:
  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25]) which results in the following constraint:

    (361)    (i7[28]=i7[25]i4[28]=i4[25]i7[28]=0LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



    We simplified constraint (361) using rules (III), (IV) which results in the following new constraint:

    (362)    (LOAD230(i4[28], 0, 0)≥NonInfC∧LOAD230(i4[28], 0, 0)≥LOAD290(i4[28], 0, 0)∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



    We simplified constraint (362) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (363)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (363) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (364)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (364) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (365)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (365) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (366)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_188] ≥ 0)



  • We consider the chain LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (367)    (i7[28]=i47[29]i4[28]=i4[29]i7[28]=i7[29]LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



    We simplified constraint (367) using rule (IV) which results in the following new constraint:

    (368)    (LOAD230(i4[28], i7[28], 0)≥NonInfC∧LOAD230(i4[28], i7[28], 0)≥LOAD290(i4[28], i7[28], i7[28])∧(UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥))



    We simplified constraint (368) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (369)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (369) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (370)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (370) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (371)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧[(-1)bso_188] ≥ 0)



    We simplified constraint (371) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (372)    ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_188] ≥ 0)







For Pair LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) the following chains were created:
  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28]) which results in the following constraint:

    (373)    (i7[31]=i7[28]i7[31]=0i4[31]=i4[28]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



    We simplified constraint (373) using rules (III), (IV) which results in the following new constraint:

    (374)    (LOAD173(i4[31], 0, 0)≥NonInfC∧LOAD173(i4[31], 0, 0)≥LOAD230(i4[31], 0, 0)∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



    We simplified constraint (374) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (375)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (375) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (376)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (376) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (377)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (377) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (378)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_190] ≥ 0)



  • We consider the chain LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (379)    (i7[31]=i32[32]i4[31]=i4[32]i7[31]=i7[32]LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



    We simplified constraint (379) using rule (IV) which results in the following new constraint:

    (380)    (LOAD173(i4[31], i7[31], 0)≥NonInfC∧LOAD173(i4[31], i7[31], 0)≥LOAD230(i4[31], i7[31], i7[31])∧(UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥))



    We simplified constraint (380) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (381)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (381) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (382)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (382) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (383)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧[(-1)bso_190] ≥ 0)



    We simplified constraint (383) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (384)    ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_190] ≥ 0)







For Pair COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]) the following chains were created:
  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31]) which results in the following constraint:

    (385)    (i7[35]=0i4[35]=i4[31]i7[35]=i7[31]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



    We simplified constraint (385) using rules (III), (IV) which results in the following new constraint:

    (386)    (COND_LOAD83(TRUE, i4[35], 0)≥NonInfC∧COND_LOAD83(TRUE, i4[35], 0)≥LOAD173(i4[35], 0, 0)∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



    We simplified constraint (386) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (387)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (387) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (388)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (388) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (389)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (389) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (390)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_192] ≥ 0)



  • We consider the chain COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (391)    (i4[35]=i4[38]i7[35]=i22[38]i7[35]=i7[38]COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



    We simplified constraint (391) using rule (IV) which results in the following new constraint:

    (392)    (COND_LOAD83(TRUE, i4[35], i7[35])≥NonInfC∧COND_LOAD83(TRUE, i4[35], i7[35])≥LOAD173(i4[35], i7[35], i7[35])∧(UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥))



    We simplified constraint (392) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (393)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (393) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (394)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (394) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (395)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧[(-1)bso_192] ≥ 0)



    We simplified constraint (395) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (396)    ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_192] ≥ 0)







For Pair LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) the following chains were created:
  • We consider the chain LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]), COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35]) which results in the following constraint:

    (397)    (&&(>(i7[34], 0), <(i7[34], 100))=TRUEi7[34]=i7[35]i4[34]=i4[35]LOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



    We simplified constraint (397) using rules (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (398)    (>(i7[34], 0)=TRUE<(i7[34], 100)=TRUELOAD83(i4[34], i7[34])≥NonInfC∧LOAD83(i4[34], i7[34])≥COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])∧(UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥))



    We simplified constraint (398) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (399)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



    We simplified constraint (399) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (400)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



    We simplified constraint (400) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (401)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧[(-1)bso_194] ≥ 0)



    We simplified constraint (401) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (402)    (i7[34] + [-1] ≥ 0∧[99] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-1)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)



    We simplified constraint (402) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (403)    (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-2)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)







For Pair LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)) the following chains were created:
  • We consider the chain LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1]), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (404)    (i7[1]=i7[0]i4[1]=i4[0]i7[1]=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



    We simplified constraint (404) using rules (III), (IV) which results in the following new constraint:

    (405)    (LOAD792(i4[1], 0, 0)≥NonInfC∧LOAD792(i4[1], 0, 0)≥LOAD83(i4[1], +(0, 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



    We simplified constraint (405) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (406)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (406) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (407)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (407) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (408)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (408) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (409)    ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_196] ≥ 0)



  • We consider the chain COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1)), LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34]) which results in the following constraint:

    (410)    (i7[3]=i7[0]i4[3]=i4[0]+(i149[3], -1)=0i4[0]=i4[34]+(i7[0], 1)=i7[34]LOAD792(i4[0], i7[0], 0)≥NonInfC∧LOAD792(i4[0], i7[0], 0)≥LOAD83(i4[0], +(i7[0], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



    We simplified constraint (410) using rules (III), (IV) which results in the following new constraint:

    (411)    (+(i149[3], -1)=0LOAD792(i4[3], i7[3], 0)≥NonInfC∧LOAD792(i4[3], i7[3], 0)≥LOAD83(i4[3], +(i7[3], 1))∧(UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥))



    We simplified constraint (411) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (412)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (412) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (413)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (413) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (414)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 ≥ 0∧[1 + (-1)bso_196] ≥ 0)



    We simplified constraint (414) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (415)    (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_196] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0∧i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_121] = 0∧0 = 0∧[(-1)bni_121 + (-1)Bound*bni_121] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_122] ≥ 0)

  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_123] = 0∧0 = 0∧[(-1)bni_123 + (-1)Bound*bni_123] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_124] ≥ 0)

  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0∧i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_125] = 0∧0 = 0∧[(-1)bni_125 + (-1)Bound*bni_125] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_126] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_127] = 0∧0 = 0∧[(-1)bni_127 + (-1)Bound*bni_127] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_128] ≥ 0)

  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0∧i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_129] = 0∧0 = 0∧[(-1)bni_129 + (-1)Bound*bni_129] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_130] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_131] = 0∧0 = 0∧[(-1)bni_131 + (-1)Bound*bni_131] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_132] ≥ 0)

  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0∧i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_133] = 0∧0 = 0∧[(-1)bni_133 + (-1)Bound*bni_133] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_134] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_135] = 0∧0 = 0∧[(-1)bni_135 + (-1)Bound*bni_135] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_136] ≥ 0)

  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0∧i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_137] = 0∧0 = 0∧[(-1)bni_137 + (-1)Bound*bni_137] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_138] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_139] = 0∧0 = 0∧[(-1)bni_139 + (-1)Bound*bni_139] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_140] ≥ 0)

  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0∧i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_141] = 0∧0 = 0∧[(-1)bni_141 + (-1)Bound*bni_141] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_142] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_143] = 0∧0 = 0∧[(-1)bni_143 + (-1)Bound*bni_143] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_144] ≥ 0)

  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0∧i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_145] = 0∧0 = 0∧[(-1)bni_145 + (-1)Bound*bni_145] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_146] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_147] = 0∧0 = 0∧[(-1)bni_147 + (-1)Bound*bni_147] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_148] ≥ 0)

  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0∧i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_149] = 0∧0 = 0∧[(-1)bni_149 + (-1)Bound*bni_149] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_150] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_151] = 0∧0 = 0∧[(-1)bni_151 + (-1)Bound*bni_151] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_152] ≥ 0)

  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0∧i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_153] = 0∧0 = 0∧[(-1)bni_153 + (-1)Bound*bni_153] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_154] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_155] = 0∧0 = 0∧[(-1)bni_155 + (-1)Bound*bni_155] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_156] ≥ 0)

  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0∧i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_157] = 0∧0 = 0∧[(-1)bni_157 + (-1)Bound*bni_157] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_158] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_159] = 0∧0 = 0∧[(-1)bni_159 + (-1)Bound*bni_159] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_160] ≥ 0)

  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0∧i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_161] = 0∧0 = 0∧[(-1)bni_161 + (-1)Bound*bni_161] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_162] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_163] = 0∧0 = 0∧[(-1)bni_163 + (-1)Bound*bni_163] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_164] ≥ 0)

  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0∧i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_165] = 0∧0 = 0∧[(-1)bni_165 + (-1)Bound*bni_165] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_166] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_167] = 0∧0 = 0∧[(-1)bni_167 + (-1)Bound*bni_167] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_168] ≥ 0)

  • LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧[(-1)bso_170] ≥ 0)
    • ((UIncreasing(LOAD792(i4[1], i7[1], i7[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_170] ≥ 0)

  • LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧[(-1)bso_172] ≥ 0)
    • ((UIncreasing(LOAD740(i4[4], i7[4], i7[4])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_172] ≥ 0)

  • LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧[(-1)bso_174] ≥ 0)
    • ((UIncreasing(LOAD688(i4[7], i7[7], i7[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_174] ≥ 0)

  • LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧[(-1)bso_176] ≥ 0)
    • ((UIncreasing(LOAD635(i4[10], i7[10], i7[10])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_176] ≥ 0)

  • LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧[(-1)bso_178] ≥ 0)
    • ((UIncreasing(LOAD578(i4[13], i7[13], i7[13])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_178] ≥ 0)

  • LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧[(-1)bso_180] ≥ 0)
    • ((UIncreasing(LOAD527(i4[16], i7[16], i7[16])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_180] ≥ 0)

  • LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧[(-1)bso_182] ≥ 0)
    • ((UIncreasing(LOAD472(i4[19], i7[19], i7[19])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_182] ≥ 0)

  • LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧[(-1)bso_184] ≥ 0)
    • ((UIncreasing(LOAD404(i4[22], i7[22], i7[22])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_184] ≥ 0)

  • LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧[(-1)bso_186] ≥ 0)
    • ((UIncreasing(LOAD348(i4[25], i7[25], i7[25])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_186] ≥ 0)

  • LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧[(-1)bso_188] ≥ 0)
    • ((UIncreasing(LOAD290(i4[28], i7[28], i7[28])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_188] ≥ 0)

  • LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧[(-1)bso_190] ≥ 0)
    • ((UIncreasing(LOAD230(i4[31], i7[31], i7[31])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_190] ≥ 0)

  • COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧[(-1)bso_192] ≥ 0)
    • ((UIncreasing(LOAD173(i4[35], i7[35], i7[35])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_192] ≥ 0)

  • LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])
    • (i7[34] ≥ 0∧[98] + [-1]i7[34] ≥ 0 ⇒ (UIncreasing(COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])), ≥)∧0 = 0∧[(-2)bni_193 + (-1)Bound*bni_193] + [(-1)bni_193]i7[34] ≥ 0∧0 = 0∧[(-1)bso_194] ≥ 0)

  • LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1))
    • ((UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧[1 + (-1)bso_196] ≥ 0)
    • (i149[3] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD83(i4[0], +(i7[0], 1))), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_196] ≥ 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) = [3]   
POL(FALSE) = 0   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD173(x1, x2, x3)) = [-1] + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(COND_LOAD230(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD230(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD290(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD290(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD348(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD348(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD404(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD404(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD472(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD472(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD527(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD527(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD578(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD578(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD635(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD635(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD688(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD688(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD740(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD740(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD792(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(LOAD792(x1, x2, x3)) = [-1] + [-1]x2   
POL(COND_LOAD83(x1, x2, x3)) = [-1] + [-1]x3   
POL(LOAD83(x1, x2)) = [-1] + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(100) = [100]   
POL(1) = [1]   

The following pairs are in P>:

LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], +(i7[0], 1))

The following pairs are in Pbound:

LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])

The following pairs are in P:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
LOAD83(i4[34], i7[34]) → COND_LOAD83(&&(>(i7[34], 0), <(i7[34], 100)), i4[34], i7[34])

At least the following rules have been oriented under context sensitive arithmetic replacement:

FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, FALSE)1

(244) Complex Obligation (AND)

(245) 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:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(34): LOAD83(i4[34], i7[34]) → COND_LOAD83(i7[34] > 0 && i7[34] < 100, i4[34], i7[34])

(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(34) -> (35), if ((i7[34] > 0 && i7[34] < 100* TRUE)∧(i7[34]* i7[35])∧(i4[34]* i4[35]))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(246) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 12 SCCs with 13 less nodes.

(247) Complex Obligation (AND)

(248) 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:
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])

(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(249) 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 COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (1)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (8)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD792(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD792(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))

The following pairs are in Pbound:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

The following pairs are in P:

LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

There are no usable rules.

(250) Complex Obligation (AND)

(251) 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): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(252) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(253) TRUE

(254) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(255) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(256) TRUE

(257) 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:
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])

(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(258) 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 COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (1)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (8)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD740(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD740(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))

The following pairs are in Pbound:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

The following pairs are in P:

LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

There are no usable rules.

(259) Complex Obligation (AND)

(260) 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:
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(261) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(262) TRUE

(263) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(264) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(265) TRUE

(266) 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:
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])

(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(267) 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 COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD688(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD688(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))

The following pairs are in Pbound:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

The following pairs are in P:

LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

There are no usable rules.

(268) Complex Obligation (AND)

(269) 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:
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(270) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(271) TRUE

(272) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(273) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(274) TRUE

(275) 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:
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])

(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(276) 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 COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (1)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (8)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD635(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD635(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))

The following pairs are in Pbound:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

The following pairs are in P:

LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

There are no usable rules.

(277) Complex Obligation (AND)

(278) 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:
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(279) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(280) TRUE

(281) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(282) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(283) TRUE

(284) 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:
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])

(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(285) 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 COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD578(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD578(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))

The following pairs are in Pbound:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

The following pairs are in P:

LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

There are no usable rules.

(286) Complex Obligation (AND)

(287) 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:
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(288) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(289) TRUE

(290) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(291) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(292) TRUE

(293) 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:
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])

(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(294) 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 COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (1)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (8)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD527(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD527(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))

The following pairs are in Pbound:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

The following pairs are in P:

LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

There are no usable rules.

(295) Complex Obligation (AND)

(296) 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:
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(297) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(298) TRUE

(299) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(300) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(301) TRUE

(302) 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:
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])

(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(303) 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 COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (1)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (8)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD472(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD472(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))

The following pairs are in Pbound:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

The following pairs are in P:

LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

There are no usable rules.

(304) Complex Obligation (AND)

(305) 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:
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(306) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(307) TRUE

(308) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(309) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(310) TRUE

(311) 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:
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])

(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(312) 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 COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (1)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (8)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD404(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD404(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))

The following pairs are in Pbound:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

The following pairs are in P:

LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

There are no usable rules.

(313) Complex Obligation (AND)

(314) 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:
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(315) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(316) TRUE

(317) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(318) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(319) TRUE

(320) 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:
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])

(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(321) 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 COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (1)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (8)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD348(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD348(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))

The following pairs are in Pbound:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

The following pairs are in P:

LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

There are no usable rules.

(322) Complex Obligation (AND)

(323) 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:
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(324) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(325) TRUE

(326) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(327) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(328) TRUE

(329) 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:
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])

(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(330) 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 COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (1)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (8)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD290(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD290(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))

The following pairs are in Pbound:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

The following pairs are in P:

LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

There are no usable rules.

(331) Complex Obligation (AND)

(332) 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:
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(333) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(334) TRUE

(335) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(336) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(337) TRUE

(338) 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:
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])

(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(339) 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 COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (1)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (8)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD230(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD230(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))

The following pairs are in Pbound:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

The following pairs are in P:

LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

There are no usable rules.

(340) Complex Obligation (AND)

(341) 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:
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(342) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(343) TRUE

(344) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(345) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(346) TRUE

(347) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)

(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(348) 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 LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 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(LOAD173(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in Pbound:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in P:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])

There are no usable rules.

(349) Complex Obligation (AND)

(350) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(351) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(352) TRUE

(353) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(354) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(355) TRUE

(356) 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:
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])
(1): LOAD740(i4[1], i7[1], 0) → LOAD792(i4[1], i7[1], i7[1])
(4): LOAD688(i4[4], i7[4], 0) → LOAD740(i4[4], i7[4], i7[4])
(7): LOAD635(i4[7], i7[7], 0) → LOAD688(i4[7], i7[7], i7[7])
(10): LOAD578(i4[10], i7[10], 0) → LOAD635(i4[10], i7[10], i7[10])
(13): LOAD527(i4[13], i7[13], 0) → LOAD578(i4[13], i7[13], i7[13])
(16): LOAD472(i4[16], i7[16], 0) → LOAD527(i4[16], i7[16], i7[16])
(19): LOAD404(i4[19], i7[19], 0) → LOAD472(i4[19], i7[19], i7[19])
(22): LOAD348(i4[22], i7[22], 0) → LOAD404(i4[22], i7[22], i7[22])
(25): LOAD290(i4[25], i7[25], 0) → LOAD348(i4[25], i7[25], i7[25])
(28): LOAD230(i4[28], i7[28], 0) → LOAD290(i4[28], i7[28], i7[28])
(31): LOAD173(i4[31], i7[31], 0) → LOAD230(i4[31], i7[31], i7[31])
(35): COND_LOAD83(TRUE, i4[35], i7[35]) → LOAD173(i4[35], i7[35], i7[35])
(0): LOAD792(i4[0], i7[0], 0) → LOAD83(i4[0], i7[0] + 1)

(1) -> (0), if ((i7[1]* i7[0])∧(i4[1]* i4[0])∧(i7[1]* 0))


(3) -> (0), if ((i7[3]* i7[0])∧(i4[3]* i4[0])∧(i149[3] + -1* 0))


(4) -> (1), if ((i4[4]* i4[1])∧(i7[4]* i7[1])∧(i7[4]* 0))


(6) -> (1), if ((i7[6]* i7[1])∧(i139[6] + -1* 0)∧(i4[6]* i4[1]))


(1) -> (2), if ((i7[1]* i7[2])∧(i7[1]* i149[2])∧(i4[1]* i4[2]))


(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))


(7) -> (4), if ((i7[7]* 0)∧(i4[7]* i4[4])∧(i7[7]* i7[4]))


(9) -> (4), if ((i126[9] + -1* 0)∧(i7[9]* i7[4])∧(i4[9]* i4[4]))


(4) -> (5), if ((i4[4]* i4[5])∧(i7[4]* i139[5])∧(i7[4]* i7[5]))


(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))


(10) -> (7), if ((i7[10]* 0)∧(i4[10]* i4[7])∧(i7[10]* i7[7]))


(12) -> (7), if ((i4[12]* i4[7])∧(i118[12] + -1* 0)∧(i7[12]* i7[7]))


(7) -> (8), if ((i7[7]* i7[8])∧(i4[7]* i4[8])∧(i7[7]* i126[8]))


(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))


(13) -> (10), if ((i7[13]* i7[10])∧(i4[13]* i4[10])∧(i7[13]* 0))


(15) -> (10), if ((i106[15] + -1* 0)∧(i7[15]* i7[10])∧(i4[15]* i4[10]))


(10) -> (11), if ((i7[10]* i118[11])∧(i4[10]* i4[11])∧(i7[10]* i7[11]))


(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))


(16) -> (13), if ((i7[16]* i7[13])∧(i4[16]* i4[13])∧(i7[16]* 0))


(18) -> (13), if ((i4[18]* i4[13])∧(i7[18]* i7[13])∧(i94[18] + -1* 0))


(13) -> (14), if ((i7[13]* i106[14])∧(i4[13]* i4[14])∧(i7[13]* i7[14]))


(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))


(19) -> (16), if ((i7[19]* i7[16])∧(i4[19]* i4[16])∧(i7[19]* 0))


(21) -> (16), if ((i4[21]* i4[16])∧(i7[21]* i7[16])∧(i83[21] + -1* 0))


(16) -> (17), if ((i7[16]* i7[17])∧(i7[16]* i94[17])∧(i4[16]* i4[17]))


(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))


(22) -> (19), if ((i4[22]* i4[19])∧(i7[22]* 0)∧(i7[22]* i7[19]))


(24) -> (19), if ((i7[24]* i7[19])∧(i69[24] + -1* 0)∧(i4[24]* i4[19]))


(19) -> (20), if ((i4[19]* i4[20])∧(i7[19]* i7[20])∧(i7[19]* i83[20]))


(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))


(25) -> (22), if ((i7[25]* i7[22])∧(i7[25]* 0)∧(i4[25]* i4[22]))


(27) -> (22), if ((i7[27]* i7[22])∧(i58[27] + -1* 0)∧(i4[27]* i4[22]))


(22) -> (23), if ((i7[22]* i69[23])∧(i7[22]* i7[23])∧(i4[22]* i4[23]))


(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))


(28) -> (25), if ((i7[28]* i7[25])∧(i4[28]* i4[25])∧(i7[28]* 0))


(30) -> (25), if ((i4[30]* i4[25])∧(i47[30] + -1* 0)∧(i7[30]* i7[25]))


(25) -> (26), if ((i4[25]* i4[26])∧(i7[25]* i7[26])∧(i7[25]* i58[26]))


(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))


(31) -> (28), if ((i7[31]* i7[28])∧(i7[31]* 0)∧(i4[31]* i4[28]))


(33) -> (28), if ((i32[33] + -1* 0)∧(i7[33]* i7[28])∧(i4[33]* i4[28]))


(28) -> (29), if ((i7[28]* i47[29])∧(i4[28]* i4[29])∧(i7[28]* i7[29]))


(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))


(35) -> (31), if ((i7[35]* 0)∧(i4[35]* i4[31])∧(i7[35]* i7[31]))


(39) -> (31), if ((i22[39] + -1* 0)∧(i4[39]* i4[31])∧(i7[39]* i7[31]))


(31) -> (32), if ((i7[31]* i32[32])∧(i4[31]* i4[32])∧(i7[31]* i7[32]))


(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))


(35) -> (38), if ((i4[35]* i4[38])∧(i7[35]* i22[38])∧(i7[35]* i7[38]))


(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(357) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 12 SCCs with 13 less nodes.

(358) Complex Obligation (AND)

(359) 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:
(3): COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], i149[3] + -1)
(2): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])

(3) -> (2), if ((i149[3] + -1* i149[2])∧(i7[3]* i7[2])∧(i4[3]* i4[2]))


(2) -> (3), if ((i7[2]* i7[3])∧(i149[2]* i149[3])∧(i4[2]* i4[3])∧(i149[2] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(360) 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 COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)), LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) which results in the following constraint:

    (1)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUE+(i149[3], -1)=i149[2]1i7[3]=i7[2]1i4[3]=i4[2]1COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥NonInfC∧COND_LOAD792(TRUE, i4[3], i7[3], i149[3])≥LOAD792(i4[3], i7[3], +(i149[3], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i149[2], 0)=TRUECOND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥NonInfC∧COND_LOAD792(TRUE, i4[2], i7[2], i149[2])≥LOAD792(i4[2], i7[2], +(i149[2], -1))∧(UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]) the following chains were created:
  • We consider the chain LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2]), COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1)) which results in the following constraint:

    (8)    (i7[2]=i7[3]i149[2]=i149[3]i4[2]=i4[3]>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i149[2], 0)=TRUELOAD792(i4[2], i7[2], i149[2])≥NonInfC∧LOAD792(i4[2], i7[2], i149[2])≥COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])∧(UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i149[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
    • (i149[2] ≥ 0 ⇒ (UIncreasing(LOAD792(i4[3], i7[3], +(i149[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i149[2] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])
    • (i149[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i149[2] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD792(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD792(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))

The following pairs are in Pbound:

COND_LOAD792(TRUE, i4[3], i7[3], i149[3]) → LOAD792(i4[3], i7[3], +(i149[3], -1))
LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

The following pairs are in P:

LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(>(i149[2], 0), i4[2], i7[2], i149[2])

There are no usable rules.

(361) Complex Obligation (AND)

(362) 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): LOAD792(i4[2], i7[2], i149[2]) → COND_LOAD792(i149[2] > 0, i4[2], i7[2], i149[2])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(363) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(364) TRUE

(365) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(366) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(367) TRUE

(368) 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:
(6): COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], i139[6] + -1)
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])

(6) -> (5), if ((i139[6] + -1* i139[5])∧(i7[6]* i7[5])∧(i4[6]* i4[5]))


(5) -> (6), if ((i4[5]* i4[6])∧(i139[5] > 0* TRUE)∧(i7[5]* i7[6])∧(i139[5]* i139[6]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(369) 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 COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)), LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) which results in the following constraint:

    (1)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]+(i139[6], -1)=i139[5]1i7[6]=i7[5]1i4[6]=i4[5]1COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥NonInfC∧COND_LOAD740(TRUE, i4[6], i7[6], i139[6])≥LOAD740(i4[6], i7[6], +(i139[6], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i139[5], 0)=TRUECOND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥NonInfC∧COND_LOAD740(TRUE, i4[5], i7[5], i139[5])≥LOAD740(i4[5], i7[5], +(i139[5], -1))∧(UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]) the following chains were created:
  • We consider the chain LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5]), COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1)) which results in the following constraint:

    (8)    (i4[5]=i4[6]>(i139[5], 0)=TRUEi7[5]=i7[6]i139[5]=i139[6]LOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i139[5], 0)=TRUELOAD740(i4[5], i7[5], i139[5])≥NonInfC∧LOAD740(i4[5], i7[5], i139[5])≥COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])∧(UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i139[5] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
    • (i139[5] ≥ 0 ⇒ (UIncreasing(LOAD740(i4[6], i7[6], +(i139[6], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i139[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])
    • (i139[5] ≥ 0 ⇒ (UIncreasing(COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i139[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD740(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD740(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))

The following pairs are in Pbound:

COND_LOAD740(TRUE, i4[6], i7[6], i139[6]) → LOAD740(i4[6], i7[6], +(i139[6], -1))
LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

The following pairs are in P:

LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(>(i139[5], 0), i4[5], i7[5], i139[5])

There are no usable rules.

(370) Complex Obligation (AND)

(371) 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:
(5): LOAD740(i4[5], i7[5], i139[5]) → COND_LOAD740(i139[5] > 0, i4[5], i7[5], i139[5])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(372) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(373) TRUE

(374) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(375) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(376) TRUE

(377) 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:
(9): COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], i126[9] + -1)
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])

(9) -> (8), if ((i7[9]* i7[8])∧(i4[9]* i4[8])∧(i126[9] + -1* i126[8]))


(8) -> (9), if ((i7[8]* i7[9])∧(i4[8]* i4[9])∧(i126[8]* i126[9])∧(i126[8] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(378) 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 COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)), LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) which results in the following constraint:

    (1)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUEi7[9]=i7[8]1i4[9]=i4[8]1+(i126[9], -1)=i126[8]1COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥NonInfC∧COND_LOAD688(TRUE, i4[9], i7[9], i126[9])≥LOAD688(i4[9], i7[9], +(i126[9], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i126[8], 0)=TRUECOND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥NonInfC∧COND_LOAD688(TRUE, i4[8], i7[8], i126[8])≥LOAD688(i4[8], i7[8], +(i126[8], -1))∧(UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]) the following chains were created:
  • We consider the chain LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8]), COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1)) which results in the following constraint:

    (8)    (i7[8]=i7[9]i4[8]=i4[9]i126[8]=i126[9]>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i126[8], 0)=TRUELOAD688(i4[8], i7[8], i126[8])≥NonInfC∧LOAD688(i4[8], i7[8], i126[8])≥COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])∧(UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i126[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
    • (i126[8] ≥ 0 ⇒ (UIncreasing(LOAD688(i4[9], i7[9], +(i126[9], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i126[8] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])
    • (i126[8] ≥ 0 ⇒ (UIncreasing(COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i126[8] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD688(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD688(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))

The following pairs are in Pbound:

COND_LOAD688(TRUE, i4[9], i7[9], i126[9]) → LOAD688(i4[9], i7[9], +(i126[9], -1))
LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

The following pairs are in P:

LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(>(i126[8], 0), i4[8], i7[8], i126[8])

There are no usable rules.

(379) Complex Obligation (AND)

(380) 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:
(8): LOAD688(i4[8], i7[8], i126[8]) → COND_LOAD688(i126[8] > 0, i4[8], i7[8], i126[8])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(381) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(382) TRUE

(383) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(384) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(385) TRUE

(386) 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:
(12): COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], i118[12] + -1)
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])

(12) -> (11), if ((i7[12]* i7[11])∧(i4[12]* i4[11])∧(i118[12] + -1* i118[11]))


(11) -> (12), if ((i118[11]* i118[12])∧(i7[11]* i7[12])∧(i118[11] > 0* TRUE)∧(i4[11]* i4[12]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(387) 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 COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)), LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) which results in the following constraint:

    (1)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]i7[12]=i7[11]1i4[12]=i4[11]1+(i118[12], -1)=i118[11]1COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥NonInfC∧COND_LOAD635(TRUE, i4[12], i7[12], i118[12])≥LOAD635(i4[12], i7[12], +(i118[12], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i118[11], 0)=TRUECOND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥NonInfC∧COND_LOAD635(TRUE, i4[11], i7[11], i118[11])≥LOAD635(i4[11], i7[11], +(i118[11], -1))∧(UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]) the following chains were created:
  • We consider the chain LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11]), COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1)) which results in the following constraint:

    (8)    (i118[11]=i118[12]i7[11]=i7[12]>(i118[11], 0)=TRUEi4[11]=i4[12]LOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i118[11], 0)=TRUELOAD635(i4[11], i7[11], i118[11])≥NonInfC∧LOAD635(i4[11], i7[11], i118[11])≥COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])∧(UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i118[11] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
    • (i118[11] ≥ 0 ⇒ (UIncreasing(LOAD635(i4[12], i7[12], +(i118[12], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i118[11] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])
    • (i118[11] ≥ 0 ⇒ (UIncreasing(COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i118[11] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD635(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD635(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))

The following pairs are in Pbound:

COND_LOAD635(TRUE, i4[12], i7[12], i118[12]) → LOAD635(i4[12], i7[12], +(i118[12], -1))
LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

The following pairs are in P:

LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(>(i118[11], 0), i4[11], i7[11], i118[11])

There are no usable rules.

(388) Complex Obligation (AND)

(389) 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:
(11): LOAD635(i4[11], i7[11], i118[11]) → COND_LOAD635(i118[11] > 0, i4[11], i7[11], i118[11])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(390) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(391) TRUE

(392) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(393) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(394) TRUE

(395) 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:
(15): COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], i106[15] + -1)
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])

(15) -> (14), if ((i4[15]* i4[14])∧(i7[15]* i7[14])∧(i106[15] + -1* i106[14]))


(14) -> (15), if ((i7[14]* i7[15])∧(i106[14] > 0* TRUE)∧(i4[14]* i4[15])∧(i106[14]* i106[15]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(396) 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 COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)), LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) which results in the following constraint:

    (1)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]i4[15]=i4[14]1i7[15]=i7[14]1+(i106[15], -1)=i106[14]1COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥NonInfC∧COND_LOAD578(TRUE, i4[15], i7[15], i106[15])≥LOAD578(i4[15], i7[15], +(i106[15], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i106[14], 0)=TRUECOND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥NonInfC∧COND_LOAD578(TRUE, i4[14], i7[14], i106[14])≥LOAD578(i4[14], i7[14], +(i106[14], -1))∧(UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]) the following chains were created:
  • We consider the chain LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14]), COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1)) which results in the following constraint:

    (8)    (i7[14]=i7[15]>(i106[14], 0)=TRUEi4[14]=i4[15]i106[14]=i106[15]LOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i106[14], 0)=TRUELOAD578(i4[14], i7[14], i106[14])≥NonInfC∧LOAD578(i4[14], i7[14], i106[14])≥COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])∧(UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i106[14] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
    • (i106[14] ≥ 0 ⇒ (UIncreasing(LOAD578(i4[15], i7[15], +(i106[15], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i106[14] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])
    • (i106[14] ≥ 0 ⇒ (UIncreasing(COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i106[14] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD578(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD578(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))

The following pairs are in Pbound:

COND_LOAD578(TRUE, i4[15], i7[15], i106[15]) → LOAD578(i4[15], i7[15], +(i106[15], -1))
LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

The following pairs are in P:

LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(>(i106[14], 0), i4[14], i7[14], i106[14])

There are no usable rules.

(397) Complex Obligation (AND)

(398) 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:
(14): LOAD578(i4[14], i7[14], i106[14]) → COND_LOAD578(i106[14] > 0, i4[14], i7[14], i106[14])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(399) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(400) TRUE

(401) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(402) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(403) TRUE

(404) 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:
(18): COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], i94[18] + -1)
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])

(18) -> (17), if ((i7[18]* i7[17])∧(i94[18] + -1* i94[17])∧(i4[18]* i4[17]))


(17) -> (18), if ((i94[17]* i94[18])∧(i94[17] > 0* TRUE)∧(i7[17]* i7[18])∧(i4[17]* i4[18]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(405) 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 COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)), LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) which results in the following constraint:

    (1)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]i7[18]=i7[17]1+(i94[18], -1)=i94[17]1i4[18]=i4[17]1COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥NonInfC∧COND_LOAD527(TRUE, i4[18], i7[18], i94[18])≥LOAD527(i4[18], i7[18], +(i94[18], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i94[17], 0)=TRUECOND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥NonInfC∧COND_LOAD527(TRUE, i4[17], i7[17], i94[17])≥LOAD527(i4[17], i7[17], +(i94[17], -1))∧(UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]) the following chains were created:
  • We consider the chain LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17]), COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1)) which results in the following constraint:

    (8)    (i94[17]=i94[18]>(i94[17], 0)=TRUEi7[17]=i7[18]i4[17]=i4[18]LOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i94[17], 0)=TRUELOAD527(i4[17], i7[17], i94[17])≥NonInfC∧LOAD527(i4[17], i7[17], i94[17])≥COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])∧(UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i94[17] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
    • (i94[17] ≥ 0 ⇒ (UIncreasing(LOAD527(i4[18], i7[18], +(i94[18], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i94[17] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])
    • (i94[17] ≥ 0 ⇒ (UIncreasing(COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i94[17] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD527(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD527(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))

The following pairs are in Pbound:

COND_LOAD527(TRUE, i4[18], i7[18], i94[18]) → LOAD527(i4[18], i7[18], +(i94[18], -1))
LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

The following pairs are in P:

LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(>(i94[17], 0), i4[17], i7[17], i94[17])

There are no usable rules.

(406) Complex Obligation (AND)

(407) 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:
(17): LOAD527(i4[17], i7[17], i94[17]) → COND_LOAD527(i94[17] > 0, i4[17], i7[17], i94[17])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(408) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(409) TRUE

(410) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(411) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(412) TRUE

(413) 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:
(21): COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], i83[21] + -1)
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])

(21) -> (20), if ((i83[21] + -1* i83[20])∧(i7[21]* i7[20])∧(i4[21]* i4[20]))


(20) -> (21), if ((i4[20]* i4[21])∧(i83[20]* i83[21])∧(i7[20]* i7[21])∧(i83[20] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(414) 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 COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)), LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) which results in the following constraint:

    (1)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUE+(i83[21], -1)=i83[20]1i7[21]=i7[20]1i4[21]=i4[20]1COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥NonInfC∧COND_LOAD472(TRUE, i4[21], i7[21], i83[21])≥LOAD472(i4[21], i7[21], +(i83[21], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i83[20], 0)=TRUECOND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥NonInfC∧COND_LOAD472(TRUE, i4[20], i7[20], i83[20])≥LOAD472(i4[20], i7[20], +(i83[20], -1))∧(UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]) the following chains were created:
  • We consider the chain LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20]), COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1)) which results in the following constraint:

    (8)    (i4[20]=i4[21]i83[20]=i83[21]i7[20]=i7[21]>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i83[20], 0)=TRUELOAD472(i4[20], i7[20], i83[20])≥NonInfC∧LOAD472(i4[20], i7[20], i83[20])≥COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])∧(UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i83[20] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
    • (i83[20] ≥ 0 ⇒ (UIncreasing(LOAD472(i4[21], i7[21], +(i83[21], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i83[20] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])
    • (i83[20] ≥ 0 ⇒ (UIncreasing(COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i83[20] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD472(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD472(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))

The following pairs are in Pbound:

COND_LOAD472(TRUE, i4[21], i7[21], i83[21]) → LOAD472(i4[21], i7[21], +(i83[21], -1))
LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

The following pairs are in P:

LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(>(i83[20], 0), i4[20], i7[20], i83[20])

There are no usable rules.

(415) Complex Obligation (AND)

(416) 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:
(20): LOAD472(i4[20], i7[20], i83[20]) → COND_LOAD472(i83[20] > 0, i4[20], i7[20], i83[20])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(417) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(418) TRUE

(419) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(420) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(421) TRUE

(422) 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:
(24): COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], i69[24] + -1)
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])

(24) -> (23), if ((i4[24]* i4[23])∧(i69[24] + -1* i69[23])∧(i7[24]* i7[23]))


(23) -> (24), if ((i69[23] > 0* TRUE)∧(i69[23]* i69[24])∧(i4[23]* i4[24])∧(i7[23]* i7[24]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(423) 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 COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)), LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) which results in the following constraint:

    (1)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]i4[24]=i4[23]1+(i69[24], -1)=i69[23]1i7[24]=i7[23]1COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥NonInfC∧COND_LOAD404(TRUE, i4[24], i7[24], i69[24])≥LOAD404(i4[24], i7[24], +(i69[24], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i69[23], 0)=TRUECOND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥NonInfC∧COND_LOAD404(TRUE, i4[23], i7[23], i69[23])≥LOAD404(i4[23], i7[23], +(i69[23], -1))∧(UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]) the following chains were created:
  • We consider the chain LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23]), COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1)) which results in the following constraint:

    (8)    (>(i69[23], 0)=TRUEi69[23]=i69[24]i4[23]=i4[24]i7[23]=i7[24]LOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i69[23], 0)=TRUELOAD404(i4[23], i7[23], i69[23])≥NonInfC∧LOAD404(i4[23], i7[23], i69[23])≥COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])∧(UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i69[23] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
    • (i69[23] ≥ 0 ⇒ (UIncreasing(LOAD404(i4[24], i7[24], +(i69[24], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i69[23] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])
    • (i69[23] ≥ 0 ⇒ (UIncreasing(COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i69[23] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD404(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD404(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))

The following pairs are in Pbound:

COND_LOAD404(TRUE, i4[24], i7[24], i69[24]) → LOAD404(i4[24], i7[24], +(i69[24], -1))
LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

The following pairs are in P:

LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(>(i69[23], 0), i4[23], i7[23], i69[23])

There are no usable rules.

(424) Complex Obligation (AND)

(425) 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:
(23): LOAD404(i4[23], i7[23], i69[23]) → COND_LOAD404(i69[23] > 0, i4[23], i7[23], i69[23])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(426) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(427) TRUE

(428) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(429) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(430) TRUE

(431) 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:
(27): COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], i58[27] + -1)
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])

(27) -> (26), if ((i4[27]* i4[26])∧(i58[27] + -1* i58[26])∧(i7[27]* i7[26]))


(26) -> (27), if ((i7[26]* i7[27])∧(i58[26] > 0* TRUE)∧(i4[26]* i4[27])∧(i58[26]* i58[27]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(432) 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 COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)), LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) which results in the following constraint:

    (1)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]i4[27]=i4[26]1+(i58[27], -1)=i58[26]1i7[27]=i7[26]1COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥NonInfC∧COND_LOAD348(TRUE, i4[27], i7[27], i58[27])≥LOAD348(i4[27], i7[27], +(i58[27], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i58[26], 0)=TRUECOND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥NonInfC∧COND_LOAD348(TRUE, i4[26], i7[26], i58[26])≥LOAD348(i4[26], i7[26], +(i58[26], -1))∧(UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]) the following chains were created:
  • We consider the chain LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26]), COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1)) which results in the following constraint:

    (8)    (i7[26]=i7[27]>(i58[26], 0)=TRUEi4[26]=i4[27]i58[26]=i58[27]LOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i58[26], 0)=TRUELOAD348(i4[26], i7[26], i58[26])≥NonInfC∧LOAD348(i4[26], i7[26], i58[26])≥COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])∧(UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i58[26] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
    • (i58[26] ≥ 0 ⇒ (UIncreasing(LOAD348(i4[27], i7[27], +(i58[27], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i58[26] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])
    • (i58[26] ≥ 0 ⇒ (UIncreasing(COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i58[26] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD348(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD348(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))

The following pairs are in Pbound:

COND_LOAD348(TRUE, i4[27], i7[27], i58[27]) → LOAD348(i4[27], i7[27], +(i58[27], -1))
LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

The following pairs are in P:

LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(>(i58[26], 0), i4[26], i7[26], i58[26])

There are no usable rules.

(433) Complex Obligation (AND)

(434) 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:
(26): LOAD348(i4[26], i7[26], i58[26]) → COND_LOAD348(i58[26] > 0, i4[26], i7[26], i58[26])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(435) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(436) TRUE

(437) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(438) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(439) TRUE

(440) 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:
(30): COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], i47[30] + -1)
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])

(30) -> (29), if ((i7[30]* i7[29])∧(i47[30] + -1* i47[29])∧(i4[30]* i4[29]))


(29) -> (30), if ((i7[29]* i7[30])∧(i47[29] > 0* TRUE)∧(i4[29]* i4[30])∧(i47[29]* i47[30]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(441) 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 COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)), LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) which results in the following constraint:

    (1)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]i7[30]=i7[29]1+(i47[30], -1)=i47[29]1i4[30]=i4[29]1COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥NonInfC∧COND_LOAD290(TRUE, i4[30], i7[30], i47[30])≥LOAD290(i4[30], i7[30], +(i47[30], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i47[29], 0)=TRUECOND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥NonInfC∧COND_LOAD290(TRUE, i4[29], i7[29], i47[29])≥LOAD290(i4[29], i7[29], +(i47[29], -1))∧(UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]) the following chains were created:
  • We consider the chain LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29]), COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1)) which results in the following constraint:

    (8)    (i7[29]=i7[30]>(i47[29], 0)=TRUEi4[29]=i4[30]i47[29]=i47[30]LOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i47[29], 0)=TRUELOAD290(i4[29], i7[29], i47[29])≥NonInfC∧LOAD290(i4[29], i7[29], i47[29])≥COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])∧(UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i47[29] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
    • (i47[29] ≥ 0 ⇒ (UIncreasing(LOAD290(i4[30], i7[30], +(i47[30], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i47[29] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])
    • (i47[29] ≥ 0 ⇒ (UIncreasing(COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i47[29] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD290(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD290(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))

The following pairs are in Pbound:

COND_LOAD290(TRUE, i4[30], i7[30], i47[30]) → LOAD290(i4[30], i7[30], +(i47[30], -1))
LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

The following pairs are in P:

LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(>(i47[29], 0), i4[29], i7[29], i47[29])

There are no usable rules.

(442) Complex Obligation (AND)

(443) 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:
(29): LOAD290(i4[29], i7[29], i47[29]) → COND_LOAD290(i47[29] > 0, i4[29], i7[29], i47[29])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(444) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(445) TRUE

(446) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(447) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(448) TRUE

(449) 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:
(33): COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], i32[33] + -1)
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])

(33) -> (32), if ((i4[33]* i4[32])∧(i32[33] + -1* i32[32])∧(i7[33]* i7[32]))


(32) -> (33), if ((i7[32]* i7[33])∧(i4[32]* i4[33])∧(i32[32]* i32[33])∧(i32[32] > 0* TRUE))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(450) 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 COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)), LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) which results in the following constraint:

    (1)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUEi4[33]=i4[32]1+(i32[33], -1)=i32[32]1i7[33]=i7[32]1COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥NonInfC∧COND_LOAD230(TRUE, i4[33], i7[33], i32[33])≥LOAD230(i4[33], i7[33], +(i32[33], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (1) using rules (III), (IV) which results in the following new constraint:

    (2)    (>(i32[32], 0)=TRUECOND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥NonInfC∧COND_LOAD230(TRUE, i4[32], i7[32], i32[32])≥LOAD230(i4[32], i7[32], +(i32[32], -1))∧(UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)







For Pair LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]) the following chains were created:
  • We consider the chain LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32]), COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1)) which results in the following constraint:

    (8)    (i7[32]=i7[33]i4[32]=i4[33]i32[32]=i32[33]>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (8) using rule (IV) which results in the following new constraint:

    (9)    (>(i32[32], 0)=TRUELOAD230(i4[32], i7[32], i32[32])≥NonInfC∧LOAD230(i4[32], i7[32], i32[32])≥COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])∧(UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i32[32] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
    • (i32[32] ≥ 0 ⇒ (UIncreasing(LOAD230(i4[33], i7[33], +(i32[33], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i32[32] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_14] ≥ 0)

  • LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])
    • (i32[32] ≥ 0 ⇒ (UIncreasing(COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i32[32] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_16] ≥ 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(COND_LOAD230(x1, x2, x3, x4)) = [-1] + x4   
POL(LOAD230(x1, x2, x3)) = [-1] + x3   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   

The following pairs are in P>:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))

The following pairs are in Pbound:

COND_LOAD230(TRUE, i4[33], i7[33], i32[33]) → LOAD230(i4[33], i7[33], +(i32[33], -1))
LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

The following pairs are in P:

LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(>(i32[32], 0), i4[32], i7[32], i32[32])

There are no usable rules.

(451) Complex Obligation (AND)

(452) 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:
(32): LOAD230(i4[32], i7[32], i32[32]) → COND_LOAD230(i32[32] > 0, i4[32], i7[32], i32[32])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(453) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(454) TRUE

(455) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(456) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(457) TRUE

(458) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])
(39): COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], i22[39] + -1)

(39) -> (38), if ((i7[39]* i7[38])∧(i4[39]* i4[38])∧(i22[39] + -1* i22[38]))


(38) -> (39), if ((i22[38]* i22[39])∧(i22[38] > 0* TRUE)∧(i7[38]* i7[39])∧(i4[38]* i4[39]))



The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(459) 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 LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) which results in the following constraint:

    (1)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]LOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (1) using rule (IV) which results in the following new constraint:

    (2)    (>(i22[38], 0)=TRUELOAD173(i4[38], i7[38], i22[38])≥NonInfC∧LOAD173(i4[38], i7[38], i22[38])≥COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])∧(UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)bni_13 + (-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)







For Pair COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)) the following chains were created:
  • We consider the chain LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]), COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1)), LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38]) which results in the following constraint:

    (8)    (i22[38]=i22[39]>(i22[38], 0)=TRUEi7[38]=i7[39]i4[38]=i4[39]i7[39]=i7[38]1i4[39]=i4[38]1+(i22[39], -1)=i22[38]1COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥NonInfC∧COND_LOAD173(TRUE, i4[39], i7[39], i22[39])≥LOAD173(i4[39], i7[39], +(i22[39], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (8) using rules (III), (IV) which results in the following new constraint:

    (9)    (>(i22[38], 0)=TRUECOND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥NonInfC∧COND_LOAD173(TRUE, i4[38], i7[38], i22[38])≥LOAD173(i4[38], i7[38], +(i22[38], -1))∧(UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    (i22[38] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bni_15 + (-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)



    We simplified constraint (13) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (14)    (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
    • (i22[38] ≥ 0 ⇒ (UIncreasing(COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_13] + [bni_13]i22[38] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_14] ≥ 0)

  • COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))
    • (i22[38] ≥ 0 ⇒ (UIncreasing(LOAD173(i4[39], i7[39], +(i22[39], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_15] + [bni_15]i22[38] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_16] ≥ 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(LOAD173(x1, x2, x3)) = [-1] + x3   
POL(COND_LOAD173(x1, x2, x3, x4)) = [-1] + x4   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in Pbound:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])
COND_LOAD173(TRUE, i4[39], i7[39], i22[39]) → LOAD173(i4[39], i7[39], +(i22[39], -1))

The following pairs are in P:

LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(>(i22[38], 0), i4[38], i7[38], i22[38])

There are no usable rules.

(460) Complex Obligation (AND)

(461) 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:
(38): LOAD173(i4[38], i7[38], i22[38]) → COND_LOAD173(i22[38] > 0, i4[38], i7[38], i22[38])


The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(462) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 1 less node.

(463) TRUE

(464) 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:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
Load792(x0, x1, x2)
Cond_Load792(TRUE, x0, x1, x2)
Load740(x0, x1, x2)
Cond_Load740(TRUE, x0, x1, x2)
Load688(x0, x1, x2)
Cond_Load688(TRUE, x0, x1, x2)
Load635(x0, x1, x2)
Cond_Load635(TRUE, x0, x1, x2)
Load578(x0, x1, x2)
Cond_Load578(TRUE, x0, x1, x2)
Load527(x0, x1, x2)
Cond_Load527(TRUE, x0, x1, x2)
Load472(x0, x1, x2)
Cond_Load472(TRUE, x0, x1, x2)
Load404(x0, x1, x2)
Cond_Load404(TRUE, x0, x1, x2)
Load348(x0, x1, x2)
Cond_Load348(TRUE, x0, x1, x2)
Load290(x0, x1, x2)
Cond_Load290(TRUE, x0, x1, x2)
Load230(x0, x1, x2)
Cond_Load230(TRUE, x0, x1, x2)
Load83(x0, x1)
Cond_Load83(TRUE, x0, x1)
Load54(x0)
Cond_Load54(TRUE, x0)
Load173(x0, x1, x2)
Cond_Load173(TRUE, x0, x1, x2)
Cond_Load831(TRUE, x0, x1)
Cond_Load541(TRUE, x0)

(465) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs.

(466) TRUE