(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]=0∧i4[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)=0∧i4[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)=0 ⇒ LOAD792(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]=0∧i4[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)=0∧i4[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)=0 ⇒ LOAD792(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]=0 ⇒ 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 (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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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)=TRUE∧i7[3]=i7[0]∧i4[3]=i4[0]∧+(i149[3], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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]=0 ⇒ 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 (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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧i7[6]=i7[1]∧+(i139[6], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (84) using rules (III), (IV) which results in the following new constraint:
(85) (>(i139[5], 0)=TRUE ⇒ COND_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]=0∧i4[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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (117) using rules (III), (IV) which results in the following new constraint:
(118) (>(i126[8], 0)=TRUE ⇒ COND_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]=0∧i4[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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[11]=i4[12]∧i4[12]=i4[7]∧+(i118[12], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (150) using rules (III), (IV) which results in the following new constraint:
(151) (>(i118[11], 0)=TRUE ⇒ COND_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]=0 ⇒ 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 (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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧+(i106[15], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (183) using rules (III), (IV) which results in the following new constraint:
(184) (>(i106[14], 0)=TRUE ⇒ COND_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]=0 ⇒ 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 (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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i4[18]=i4[13]∧i7[18]=i7[13]∧+(i94[18], -1)=0 ⇒ COND_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)=0 ⇒ COND_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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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]=0 ⇒ 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 (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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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)=TRUE∧i4[21]=i4[16]∧i7[21]=i7[16]∧+(i83[21], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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]=0∧i7[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)=TRUE∧i69[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)=TRUE ⇒ 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 (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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i7[24]=i7[19]∧+(i69[24], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (282) using rules (III), (IV) which results in the following new constraint:
(283) (>(i69[23], 0)=TRUE ⇒ COND_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]=0∧i4[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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i7[27]=i7[22]∧+(i58[27], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (315) using rules (III), (IV) which results in the following new constraint:
(316) (>(i58[26], 0)=TRUE ⇒ COND_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]=0 ⇒ 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 (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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i4[30]=i4[25]∧+(i47[30], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (348) using rules (III), (IV) which results in the following new constraint:
(349) (>(i47[29], 0)=TRUE ⇒ COND_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]=0∧i4[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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (381) using rules (III), (IV) which results in the following new constraint:
(382) (>(i32[32], 0)=TRUE ⇒ COND_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))=TRUE∧i7[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)=TRUE ⇒ 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 (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]=0∧i4[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))=TRUE ⇒ LOAD54(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)=TRUE ⇒ LOAD54(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]=0∧i4[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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧+(i22[39], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (438) using rules (III), (IV) which results in the following new constraint:
(439) (>(i22[38], 0)=TRUE ⇒ COND_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))=TRUE ⇒ LOAD83(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)=TRUE ⇒ LOAD83(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)=TRUE ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD54(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)=TRUE ⇒ LOAD54(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)=TRUE ⇒ COND_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]1 ⇒ COND_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)=TRUE ⇒ COND_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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧+(i22[39], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (29) using rules (III), (IV) which results in the following new constraint:
(30) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i4[30]=i4[25]∧+(i47[30], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (50) using rules (III), (IV) which results in the following new constraint:
(51) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i7[27]=i7[22]∧+(i58[27], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (71) using rules (III), (IV) which results in the following new constraint:
(72) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i7[24]=i7[19]∧+(i69[24], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (92) using rules (III), (IV) which results in the following new constraint:
(93) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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)=TRUE∧i4[21]=i4[16]∧i7[21]=i7[16]∧+(i83[21], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i4[18]=i4[13]∧i7[18]=i7[13]∧+(i94[18], -1)=0 ⇒ COND_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)=0 ⇒ COND_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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧+(i106[15], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (155) using rules (III), (IV) which results in the following new constraint:
(156) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[11]=i4[12]∧i4[12]=i4[7]∧+(i118[12], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (176) using rules (III), (IV) which results in the following new constraint:
(177) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (197) using rules (III), (IV) which results in the following new constraint:
(198) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧i7[6]=i7[1]∧+(i139[6], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (218) using rules (III), (IV) which results in the following new constraint:
(219) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[3]=i7[0]∧i4[3]=i4[0]∧+(i149[3], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0∧i4[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]=0∧i4[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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0∧i7[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]=0∧i4[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]=0 ⇒ 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 (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]=0∧i4[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]=0∧i4[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))=TRUE∧i7[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)=TRUE ⇒ 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 (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]=0∧i4[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)=0∧i4[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)=0 ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧+(i22[39], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (29) using rules (III), (IV) which results in the following new constraint:
(30) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i4[30]=i4[25]∧+(i47[30], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (50) using rules (III), (IV) which results in the following new constraint:
(51) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i7[27]=i7[22]∧+(i58[27], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (71) using rules (III), (IV) which results in the following new constraint:
(72) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i7[24]=i7[19]∧+(i69[24], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (92) using rules (III), (IV) which results in the following new constraint:
(93) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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)=TRUE∧i4[21]=i4[16]∧i7[21]=i7[16]∧+(i83[21], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i4[18]=i4[13]∧i7[18]=i7[13]∧+(i94[18], -1)=0 ⇒ COND_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)=0 ⇒ COND_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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧+(i106[15], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (155) using rules (III), (IV) which results in the following new constraint:
(156) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=TRUE∧i4[11]=i4[12]∧i4[12]=i4[7]∧+(i118[12], -1)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (176) using rules (III), (IV) which results in the following new constraint:
(177) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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)=0∧i7[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)=0 ⇒ COND_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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (197) using rules (III), (IV) which results in the following new constraint:
(198) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧i7[6]=i7[1]∧+(i139[6], -1)=0∧i4[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)=0 ⇒ COND_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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (218) using rules (III), (IV) which results in the following new constraint:
(219) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[3]=i7[0]∧i4[3]=i4[0]∧+(i149[3], -1)=0 ⇒ COND_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)=0 ⇒ COND_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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0∧i4[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]=0∧i4[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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0 ⇒ 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 (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]=0∧i7[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]=0∧i4[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]=0 ⇒ 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 (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]=0∧i4[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]=0∧i4[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))=TRUE∧i7[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)=TRUE ⇒ 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 (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]=0∧i4[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)=0∧i4[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)=0 ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[3]=i7[2]1∧i4[3]=i4[2]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD792(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)=TRUE ⇒ LOAD792(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[5]=i7[6]∧i139[5]=i139[6]∧+(i139[6], -1)=i139[5]1∧i7[6]=i7[5]1∧i4[6]=i4[5]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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i139[5], 0)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[9]=i7[8]1∧i4[9]=i4[8]1∧+(i126[9], -1)=i126[8]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i126[8], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD688(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)=TRUE ⇒ LOAD688(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[11]=i4[12]∧i7[12]=i7[11]1∧i4[12]=i4[11]1∧+(i118[12], -1)=i118[11]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i118[11], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[14]=i4[15]∧i106[14]=i106[15]∧i4[15]=i4[14]1∧i7[15]=i7[14]1∧+(i106[15], -1)=i106[14]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i106[14], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[17]=i7[18]∧i4[17]=i4[18]∧i7[18]=i7[17]1∧+(i94[18], -1)=i94[17]1∧i4[18]=i4[17]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE∧i7[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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]1∧i7[21]=i7[20]1∧i4[21]=i4[20]1 ⇒ COND_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)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD472(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)=TRUE ⇒ LOAD472(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i69[23]=i69[24]∧i4[23]=i4[24]∧i7[23]=i7[24]∧i4[24]=i4[23]1∧+(i69[24], -1)=i69[23]1∧i7[24]=i7[23]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i69[23], 0)=TRUE ⇒ COND_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)=TRUE∧i69[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[26]=i4[27]∧i58[26]=i58[27]∧i4[27]=i4[26]1∧+(i58[27], -1)=i58[26]1∧i7[27]=i7[26]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i58[26], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[29]=i4[30]∧i47[29]=i47[30]∧i7[30]=i7[29]1∧+(i47[30], -1)=i47[29]1∧i4[30]=i4[29]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i47[29], 0)=TRUE ⇒ COND_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)=TRUE∧i4[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)=TRUE ⇒ 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 (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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i4[33]=i4[32]1∧+(i32[33], -1)=i32[32]1∧i7[33]=i7[32]1 ⇒ 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 (1) using rules (III), (IV) which results in the following new constraint:
(2) (>(i32[32], 0)=TRUE ⇒ COND_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)=TRUE ⇒ LOAD230(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)=TRUE ⇒ LOAD230(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 P
bound 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 P
bound.
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 P
bound:
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)=TRUE∧i7[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)=TRUE ⇒ 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 (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)=TRUE∧i7[38]=i7[39]∧i4[38]=i4[39]∧i7[39]=i7[38]1∧i4[39]=i4[38]1∧+(i22[39], -1)=i22[38]1 ⇒ 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 (8) using rules (III), (IV) which results in the following new constraint:
(9) (>(i22[38], 0)=TRUE ⇒ COND_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 P
bound 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 P
bound.
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 P
bound:
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