(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_16 (Sun Microsystems Inc.) Main-Class: GCD2
public class GCD2 {
public static int mod(int a, int b) {
if (a == b) {
return 0;
}
while(a>b) {
a -= b;
}
return a;
}

public static int gcd(int a, int b) {
int tmp;
while(b != 0 && a >= 0 && b >= 0) {
tmp = b;
b = mod(a, b);
a = tmp;
}
return a;
}

public static void main(String[] args) {
Random.args = args;
int x = Random.random();
int y = Random.random();
gcd(x, y);
}
}


public class Random {
static String[] args;
static int index = 0;

public static int random() {
String string = args[index];
index++;
return string.length();
}
}


(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 541 nodes with 9 SCCs.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) Complex Obligation (AND)

(5) Obligation:

ITRS problem:

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

The TRS R consists of the following rules:
JMP2949(i277, i1310) → Cond_JMP2949(i277 > 0 && i277 < i1310 && !(i1310 = 0), i277, i1310)
Cond_JMP2949(TRUE, i277, i1310) → JMP2949(i1310, i277)
JMP5679(i1310, i1310, i1310, i2872, i1310) → Cond_JMP5679(i1310 > 0 && i2872 <= i1310, i1310, i1310, i1310, i2872, i1310)
Cond_JMP5679(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP2949(i1310, i2872)
JMP2949(i277, i1310) → Cond_JMP29491(i1310 > 0 && i277 - i1310 <= i1310 && i277 > i1310, i277, i1310)
Cond_JMP29491(TRUE, i277, i1310) → JMP2949(i1310, i277 - i1310)
JMP2949(i1310, i1310) → Cond_JMP29492(i1310 > 0, i1310, i1310)
Cond_JMP29492(TRUE, i1310, i1310) → JMP2949(i1310, 0)
JMP5679(i1310, i1310, i1310, i2872, i1310) → Cond_JMP56791(i1310 > 0 && i2872 > i1310, i1310, i1310, i1310, i2872, i1310)
Cond_JMP56791(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP5679(i1310, i1310, i1310, i2872 - i1310, i1310)
JMP2949(i277, i1310) → Cond_JMP29493(i1310 > 0 && i277 - i1310 > i1310 && i277 > i1310, i277, i1310)
Cond_JMP29493(TRUE, i277, i1310) → JMP5679(i1310, i1310, i1310, i277 - i1310 - i1310, i1310)
The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(6) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(7) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
JMP2949(i277, i1310) → Cond_JMP2949(i277 > 0 && i277 < i1310 && !(i1310 = 0), i277, i1310)
Cond_JMP2949(TRUE, i277, i1310) → JMP2949(i1310, i277)
JMP5679(i1310, i1310, i1310, i2872, i1310) → Cond_JMP5679(i1310 > 0 && i2872 <= i1310, i1310, i1310, i1310, i2872, i1310)
Cond_JMP5679(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP2949(i1310, i2872)
JMP2949(i277, i1310) → Cond_JMP29491(i1310 > 0 && i277 - i1310 <= i1310 && i277 > i1310, i277, i1310)
Cond_JMP29491(TRUE, i277, i1310) → JMP2949(i1310, i277 - i1310)
JMP2949(i1310, i1310) → Cond_JMP29492(i1310 > 0, i1310, i1310)
Cond_JMP29492(TRUE, i1310, i1310) → JMP2949(i1310, 0)
JMP5679(i1310, i1310, i1310, i2872, i1310) → Cond_JMP56791(i1310 > 0 && i2872 > i1310, i1310, i1310, i1310, i2872, i1310)
Cond_JMP56791(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP5679(i1310, i1310, i1310, i2872 - i1310, i1310)
JMP2949(i277, i1310) → Cond_JMP29493(i1310 > 0 && i277 - i1310 > i1310 && i277 > i1310, i277, i1310)
Cond_JMP29493(TRUE, i277, i1310) → JMP5679(i1310, i1310, i1310, i277 - i1310 - i1310, i1310)

The integer pair graph contains the following rules and edges:
(0): JMP2949'(i277[0], i1310[0]) → COND_JMP2949(i277[0] > 0 && i277[0] < i1310[0] && !(i1310[0] = 0), i277[0], i1310[0])
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
(2): JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(i1310[2] > 0 && i2872[2] <= i1310[2], i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])
(3): COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3])
(4): JMP2949'(i277[4], i1310[4]) → COND_JMP29491(i1310[4] > 0 && i277[4] - i1310[4] <= i1310[4] && i277[4] > i1310[4], i277[4], i1310[4])
(5): COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], i277[5] - i1310[5])
(6): JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(i1310[6] > 0, i1310[6], i1310[6])
(7): COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0)
(8): JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(i1310[8] > 0 && i2872[8] > i1310[8], i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])
(9): COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], i2872[9] - i1310[9], i1310[9])
(10): JMP2949'(i277[10], i1310[10]) → COND_JMP29493(i1310[10] > 0 && i277[10] - i1310[10] > i1310[10] && i277[10] > i1310[10], i277[10], i1310[10])
(11): COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], i277[11] - i1310[11] - i1310[11], i1310[11])

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


(1) -> (0), if ((i1310[1]* i277[0])∧(i277[1]* i1310[0]))


(1) -> (4), if ((i277[1]* i1310[4])∧(i1310[1]* i277[4]))


(1) -> (6), if ((i277[1]* i1310[6])∧(i1310[1]* i1310[6]))


(1) -> (10), if ((i277[1]* i1310[10])∧(i1310[1]* i277[10]))


(2) -> (3), if ((i2872[2]* i2872[3])∧(i1310[2]* i1310[3])∧(i1310[2] > 0 && i2872[2] <= i1310[2]* TRUE))


(3) -> (0), if ((i1310[3]* i277[0])∧(i2872[3]* i1310[0]))


(3) -> (4), if ((i1310[3]* i277[4])∧(i2872[3]* i1310[4]))


(3) -> (6), if ((i1310[3]* i1310[6])∧(i2872[3]* i1310[6]))


(3) -> (10), if ((i2872[3]* i1310[10])∧(i1310[3]* i277[10]))


(4) -> (5), if ((i1310[4]* i1310[5])∧(i1310[4] > 0 && i277[4] - i1310[4] <= i1310[4] && i277[4] > i1310[4]* TRUE)∧(i277[4]* i277[5]))


(5) -> (0), if ((i277[5] - i1310[5]* i1310[0])∧(i1310[5]* i277[0]))


(5) -> (4), if ((i277[5] - i1310[5]* i1310[4])∧(i1310[5]* i277[4]))


(5) -> (6), if ((i1310[5]* i1310[6])∧(i277[5] - i1310[5]* i1310[6]))


(5) -> (10), if ((i1310[5]* i277[10])∧(i277[5] - i1310[5]* i1310[10]))


(6) -> (7), if ((i1310[6] > 0* TRUE)∧(i1310[6]* i1310[7]))


(7) -> (0), if ((i1310[7]* i277[0])∧(0* i1310[0]))


(7) -> (4), if ((0* i1310[4])∧(i1310[7]* i277[4]))


(7) -> (6), if ((0* i1310[6])∧(i1310[7]* i1310[6]))


(7) -> (10), if ((0* i1310[10])∧(i1310[7]* i277[10]))


(8) -> (9), if ((i1310[8] > 0 && i2872[8] > i1310[8]* TRUE)∧(i2872[8]* i2872[9])∧(i1310[8]* i1310[9]))


(9) -> (2), if ((i2872[9] - i1310[9]* i2872[2])∧(i1310[9]* i1310[2]))


(9) -> (8), if ((i2872[9] - i1310[9]* i2872[8])∧(i1310[9]* i1310[8]))


(10) -> (11), if ((i277[10]* i277[11])∧(i1310[10]* i1310[11])∧(i1310[10] > 0 && i277[10] - i1310[10] > i1310[10] && i277[10] > i1310[10]* TRUE))


(11) -> (2), if ((i1310[11]* i1310[2])∧(i277[11] - i1310[11] - i1310[11]* i2872[2]))


(11) -> (8), if ((i277[11] - i1310[11] - i1310[11]* i2872[8])∧(i1310[11]* i1310[8]))



The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

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

(9) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2949'(i277[0], i1310[0]) → COND_JMP2949(i277[0] > 0 && i277[0] < i1310[0] && !(i1310[0] = 0), i277[0], i1310[0])
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
(2): JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(i1310[2] > 0 && i2872[2] <= i1310[2], i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])
(3): COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3])
(4): JMP2949'(i277[4], i1310[4]) → COND_JMP29491(i1310[4] > 0 && i277[4] - i1310[4] <= i1310[4] && i277[4] > i1310[4], i277[4], i1310[4])
(5): COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], i277[5] - i1310[5])
(6): JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(i1310[6] > 0, i1310[6], i1310[6])
(7): COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0)
(8): JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(i1310[8] > 0 && i2872[8] > i1310[8], i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])
(9): COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], i2872[9] - i1310[9], i1310[9])
(10): JMP2949'(i277[10], i1310[10]) → COND_JMP29493(i1310[10] > 0 && i277[10] - i1310[10] > i1310[10] && i277[10] > i1310[10], i277[10], i1310[10])
(11): COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], i277[11] - i1310[11] - i1310[11], i1310[11])

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


(1) -> (0), if ((i1310[1]* i277[0])∧(i277[1]* i1310[0]))


(1) -> (4), if ((i277[1]* i1310[4])∧(i1310[1]* i277[4]))


(1) -> (6), if ((i277[1]* i1310[6])∧(i1310[1]* i1310[6]))


(1) -> (10), if ((i277[1]* i1310[10])∧(i1310[1]* i277[10]))


(2) -> (3), if ((i2872[2]* i2872[3])∧(i1310[2]* i1310[3])∧(i1310[2] > 0 && i2872[2] <= i1310[2]* TRUE))


(3) -> (0), if ((i1310[3]* i277[0])∧(i2872[3]* i1310[0]))


(3) -> (4), if ((i1310[3]* i277[4])∧(i2872[3]* i1310[4]))


(3) -> (6), if ((i1310[3]* i1310[6])∧(i2872[3]* i1310[6]))


(3) -> (10), if ((i2872[3]* i1310[10])∧(i1310[3]* i277[10]))


(4) -> (5), if ((i1310[4]* i1310[5])∧(i1310[4] > 0 && i277[4] - i1310[4] <= i1310[4] && i277[4] > i1310[4]* TRUE)∧(i277[4]* i277[5]))


(5) -> (0), if ((i277[5] - i1310[5]* i1310[0])∧(i1310[5]* i277[0]))


(5) -> (4), if ((i277[5] - i1310[5]* i1310[4])∧(i1310[5]* i277[4]))


(5) -> (6), if ((i1310[5]* i1310[6])∧(i277[5] - i1310[5]* i1310[6]))


(5) -> (10), if ((i1310[5]* i277[10])∧(i277[5] - i1310[5]* i1310[10]))


(6) -> (7), if ((i1310[6] > 0* TRUE)∧(i1310[6]* i1310[7]))


(7) -> (0), if ((i1310[7]* i277[0])∧(0* i1310[0]))


(7) -> (4), if ((0* i1310[4])∧(i1310[7]* i277[4]))


(7) -> (6), if ((0* i1310[6])∧(i1310[7]* i1310[6]))


(7) -> (10), if ((0* i1310[10])∧(i1310[7]* i277[10]))


(8) -> (9), if ((i1310[8] > 0 && i2872[8] > i1310[8]* TRUE)∧(i2872[8]* i2872[9])∧(i1310[8]* i1310[9]))


(9) -> (2), if ((i2872[9] - i1310[9]* i2872[2])∧(i1310[9]* i1310[2]))


(9) -> (8), if ((i2872[9] - i1310[9]* i2872[8])∧(i1310[9]* i1310[8]))


(10) -> (11), if ((i277[10]* i277[11])∧(i1310[10]* i1310[11])∧(i1310[10] > 0 && i277[10] - i1310[10] > i1310[10] && i277[10] > i1310[10]* TRUE))


(11) -> (2), if ((i1310[11]* i1310[2])∧(i277[11] - i1310[11] - i1310[11]* i2872[2]))


(11) -> (8), if ((i277[11] - i1310[11] - i1310[11]* i2872[8])∧(i1310[11]* i1310[8]))



The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(10) 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 JMP2949'(i277, i1310) → COND_JMP2949(&&(&&(>(i277, 0), <(i277, i1310)), !(=(i1310, 0))), i277, i1310) the following chains were created:
  • We consider the chain JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]), COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]) which results in the following constraint:

    (1)    (i1310[0]=i1310[1]i277[0]=i277[1]&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0)))=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))



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

    (2)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE<(i1310[0], 0)=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))


    (3)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE>(i1310[0], 0)=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))



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

    (4)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (5)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (6)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (7)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (8)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (9)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)bni_48 + (-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



    We solved constraint (8) using rule (IDP_SMT_SPLIT).We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (10)    (i277[0] ≥ 0∧i1310[0] + [-2] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_48] + [bni_48]i1310[0] + [bni_48]i277[0] ≥ 0∧[(-1)bso_49] ≥ 0)



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

    (11)    (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(2)bni_48 + (-1)Bound*bni_48] + [(2)bni_48]i277[0] + [bni_48]i1310[0] ≥ 0∧[(-1)bso_49] ≥ 0)







For Pair COND_JMP2949(TRUE, i277, i1310) → JMP2949'(i1310, i277) the following chains were created:
  • We consider the chain COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]) which results in the following constraint:

    (12)    (i1310[1]=i277[0]i277[1]=i1310[0]COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (13)    (COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (14)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (15)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (16)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (17)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)



  • We consider the chain COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4]) which results in the following constraint:

    (18)    (i277[1]=i1310[4]i1310[1]=i277[4]COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (19)    (COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (20)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (21)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (22)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (23)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)



  • We consider the chain COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6]) which results in the following constraint:

    (24)    (i277[1]=i1310[6]i1310[1]=i1310[6]COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (25)    (COND_JMP2949(TRUE, i1310[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i1310[1], i1310[1])≥JMP2949'(i1310[1], i1310[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (26)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (27)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (28)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (29)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧[(-1)bso_51] ≥ 0)



  • We consider the chain COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10]) which results in the following constraint:

    (30)    (i277[1]=i1310[10]i1310[1]=i277[10]COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (31)    (COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (32)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (33)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (34)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bso_51] ≥ 0)



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

    (35)    ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)







For Pair JMP5679'(i1310, i1310, i1310, i2872, i1310) → COND_JMP5679(&&(>(i1310, 0), <=(i2872, i1310)), i1310, i1310, i1310, i2872, i1310) the following chains were created:
  • We consider the chain JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]), COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3]) which results in the following constraint:

    (36)    (i2872[2]=i2872[3]i1310[2]=i1310[3]&&(>(i1310[2], 0), <=(i2872[2], i1310[2]))=TRUEJMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])≥NonInfC∧JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])≥COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])∧(UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥))



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

    (37)    (>(i1310[2], 0)=TRUE<=(i2872[2], i1310[2])=TRUEJMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])≥NonInfC∧JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])≥COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])∧(UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥))



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

    (38)    (i1310[2] + [-1] ≥ 0∧i1310[2] + [-1]i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)bni_52 + (-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)



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

    (39)    (i1310[2] + [-1] ≥ 0∧i1310[2] + [-1]i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)bni_52 + (-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)



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

    (40)    (i1310[2] + [-1] ≥ 0∧i1310[2] + [-1]i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)bni_52 + (-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)



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

    (41)    (i1310[2] ≥ 0∧[1] + i1310[2] + [-1]i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)



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

    (42)    (i1310[2] ≥ 0∧[1] + i1310[2] + [-1]i2872[2] ≥ 0∧i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)


    (43)    (i1310[2] ≥ 0∧[1] + i1310[2] + i2872[2] ≥ 0∧i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)Bound*bni_52] + [bni_52]i1310[2] + [(-1)bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)







For Pair COND_JMP5679(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP2949'(i1310, i2872) the following chains were created:
  • We consider the chain COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3]), JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]) which results in the following constraint:

    (44)    (i1310[3]=i277[0]i2872[3]=i1310[0]COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (45)    (COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (46)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (47)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (48)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (49)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)



  • We consider the chain COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3]), JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4]) which results in the following constraint:

    (50)    (i1310[3]=i277[4]i2872[3]=i1310[4]COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (51)    (COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (52)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (53)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (54)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (55)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)



  • We consider the chain COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3]), JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6]) which results in the following constraint:

    (56)    (i1310[3]=i1310[6]i2872[3]=i1310[6]COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (57)    (COND_JMP5679(TRUE, i2872[3], i2872[3], i2872[3], i2872[3], i2872[3])≥NonInfC∧COND_JMP5679(TRUE, i2872[3], i2872[3], i2872[3], i2872[3], i2872[3])≥JMP2949'(i2872[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (58)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (59)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (60)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (61)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧[(-1)bso_55] ≥ 0)



  • We consider the chain COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3]), JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10]) which results in the following constraint:

    (62)    (i2872[3]=i1310[10]i1310[3]=i277[10]COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (63)    (COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥NonInfC∧COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3])≥JMP2949'(i1310[3], i2872[3])∧(UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥))



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

    (64)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (65)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (66)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧[(-1)bso_55] ≥ 0)



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

    (67)    ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)







For Pair JMP2949'(i277, i1310) → COND_JMP29491(&&(&&(>(i1310, 0), <=(-(i277, i1310), i1310)), >(i277, i1310)), i277, i1310) the following chains were created:
  • We consider the chain JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4]), COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], -(i277[5], i1310[5])) which results in the following constraint:

    (68)    (i1310[4]=i1310[5]&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4]))=TRUEi277[4]=i277[5]JMP2949'(i277[4], i1310[4])≥NonInfC∧JMP2949'(i277[4], i1310[4])≥COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])∧(UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥))



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

    (69)    (>(i277[4], i1310[4])=TRUE>(i1310[4], 0)=TRUE<=(-(i277[4], i1310[4]), i1310[4])=TRUEJMP2949'(i277[4], i1310[4])≥NonInfC∧JMP2949'(i277[4], i1310[4])≥COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])∧(UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥))



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

    (70)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)bni_56 + (-1)Bound*bni_56] + [bni_56]i1310[4] + [bni_56]i277[4] ≥ 0∧[(-1)bso_57] + [-1]i1310[4] + i277[4] ≥ 0)



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

    (71)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)bni_56 + (-1)Bound*bni_56] + [bni_56]i1310[4] + [bni_56]i277[4] ≥ 0∧[(-1)bso_57] + [-1]i1310[4] + i277[4] ≥ 0)



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

    (72)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)bni_56 + (-1)Bound*bni_56] + [bni_56]i1310[4] + [bni_56]i277[4] ≥ 0∧[(-1)bso_57] + [-1]i1310[4] + i277[4] ≥ 0)



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

    (73)    (i277[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧i1310[4] + [-1] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)Bound*bni_56] + [(2)bni_56]i1310[4] + [bni_56]i277[4] ≥ 0∧[1 + (-1)bso_57] + i277[4] ≥ 0)



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

    (74)    (i277[4] ≥ 0∧i1310[4] ≥ 0∧i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)Bound*bni_56 + (2)bni_56] + [(2)bni_56]i1310[4] + [bni_56]i277[4] ≥ 0∧[1 + (-1)bso_57] + i277[4] ≥ 0)



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

    (75)    (i277[4] ≥ 0∧i277[4] + i1310[4] ≥ 0∧i1310[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)Bound*bni_56 + (2)bni_56] + [(3)bni_56]i277[4] + [(2)bni_56]i1310[4] ≥ 0∧[1 + (-1)bso_57] + i277[4] ≥ 0)







For Pair COND_JMP29491(TRUE, i277, i1310) → JMP2949'(i1310, -(i277, i1310)) the following chains were created:
  • We consider the chain JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4]), COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], -(i277[5], i1310[5])) which results in the following constraint:

    (76)    (i1310[4]=i1310[5]&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4]))=TRUEi277[4]=i277[5]COND_JMP29491(TRUE, i277[5], i1310[5])≥NonInfC∧COND_JMP29491(TRUE, i277[5], i1310[5])≥JMP2949'(i1310[5], -(i277[5], i1310[5]))∧(UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥))



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

    (77)    (>(i277[4], i1310[4])=TRUE>(i1310[4], 0)=TRUE<=(-(i277[4], i1310[4]), i1310[4])=TRUECOND_JMP29491(TRUE, i277[4], i1310[4])≥NonInfC∧COND_JMP29491(TRUE, i277[4], i1310[4])≥JMP2949'(i1310[4], -(i277[4], i1310[4]))∧(UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥))



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

    (78)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + [2]i1310[4] + [-1]i277[4] ≥ 0)



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

    (79)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + [2]i1310[4] + [-1]i277[4] ≥ 0)



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

    (80)    (i277[4] + [-1] + [-1]i1310[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧[2]i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + [2]i1310[4] + [-1]i277[4] ≥ 0)



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

    (81)    (i277[4] ≥ 0∧i1310[4] + [-1] ≥ 0∧i1310[4] + [-1] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[(-1)bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i1310[4] ≥ 0∧[-1 + (-1)bso_59] + i1310[4] + [-1]i277[4] ≥ 0)



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

    (82)    (i277[4] ≥ 0∧i1310[4] ≥ 0∧i1310[4] + [-1]i277[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + i1310[4] + [-1]i277[4] ≥ 0)



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

    (83)    (i277[4] ≥ 0∧i277[4] + i1310[4] ≥ 0∧i1310[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i277[4] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + i1310[4] ≥ 0)







For Pair JMP2949'(i1310, i1310) → COND_JMP29492(>(i1310, 0), i1310, i1310) the following chains were created:
  • We consider the chain JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6]), COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0) which results in the following constraint:

    (84)    (>(i1310[6], 0)=TRUEi1310[6]=i1310[7]JMP2949'(i1310[6], i1310[6])≥NonInfC∧JMP2949'(i1310[6], i1310[6])≥COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])∧(UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥))



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

    (85)    (>(i1310[6], 0)=TRUEJMP2949'(i1310[6], i1310[6])≥NonInfC∧JMP2949'(i1310[6], i1310[6])≥COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])∧(UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥))



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

    (86)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥)∧[(-1)bni_60 + (-1)Bound*bni_60] + [(2)bni_60]i1310[6] ≥ 0∧[(-1)bso_61] ≥ 0)



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

    (87)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥)∧[(-1)bni_60 + (-1)Bound*bni_60] + [(2)bni_60]i1310[6] ≥ 0∧[(-1)bso_61] ≥ 0)



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

    (88)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥)∧[(-1)bni_60 + (-1)Bound*bni_60] + [(2)bni_60]i1310[6] ≥ 0∧[(-1)bso_61] ≥ 0)



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

    (89)    (i1310[6] ≥ 0 ⇒ (UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥)∧[bni_60 + (-1)Bound*bni_60] + [(2)bni_60]i1310[6] ≥ 0∧[(-1)bso_61] ≥ 0)







For Pair COND_JMP29492(TRUE, i1310, i1310) → JMP2949'(i1310, 0) the following chains were created:
  • We consider the chain JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6]), COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0) which results in the following constraint:

    (90)    (>(i1310[6], 0)=TRUEi1310[6]=i1310[7]COND_JMP29492(TRUE, i1310[7], i1310[7])≥NonInfC∧COND_JMP29492(TRUE, i1310[7], i1310[7])≥JMP2949'(i1310[7], 0)∧(UIncreasing(JMP2949'(i1310[7], 0)), ≥))



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

    (91)    (>(i1310[6], 0)=TRUECOND_JMP29492(TRUE, i1310[6], i1310[6])≥NonInfC∧COND_JMP29492(TRUE, i1310[6], i1310[6])≥JMP2949'(i1310[6], 0)∧(UIncreasing(JMP2949'(i1310[7], 0)), ≥))



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

    (92)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[7], 0)), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [(2)bni_62]i1310[6] ≥ 0∧[(-1)bso_63] + i1310[6] ≥ 0)



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

    (93)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[7], 0)), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [(2)bni_62]i1310[6] ≥ 0∧[(-1)bso_63] + i1310[6] ≥ 0)



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

    (94)    (i1310[6] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[7], 0)), ≥)∧[(-1)bni_62 + (-1)Bound*bni_62] + [(2)bni_62]i1310[6] ≥ 0∧[(-1)bso_63] + i1310[6] ≥ 0)



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

    (95)    (i1310[6] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[7], 0)), ≥)∧[bni_62 + (-1)Bound*bni_62] + [(2)bni_62]i1310[6] ≥ 0∧[1 + (-1)bso_63] + i1310[6] ≥ 0)







For Pair JMP5679'(i1310, i1310, i1310, i2872, i1310) → COND_JMP56791(&&(>(i1310, 0), >(i2872, i1310)), i1310, i1310, i1310, i2872, i1310) the following chains were created:
  • We consider the chain JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]), COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9]) which results in the following constraint:

    (96)    (&&(>(i1310[8], 0), >(i2872[8], i1310[8]))=TRUEi2872[8]=i2872[9]i1310[8]=i1310[9]JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥NonInfC∧JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])∧(UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥))



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

    (97)    (>(i1310[8], 0)=TRUE>(i2872[8], i1310[8])=TRUEJMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥NonInfC∧JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])∧(UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥))



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

    (98)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[-1 + (-1)bso_65] + i1310[8] ≥ 0)



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

    (99)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[-1 + (-1)bso_65] + i1310[8] ≥ 0)



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

    (100)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[-1 + (-1)bso_65] + i1310[8] ≥ 0)



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

    (101)    (i1310[8] ≥ 0∧i2872[8] + [-2] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)Bound*bni_64] + [bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[(-1)bso_65] + i1310[8] ≥ 0)



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

    (102)    (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)Bound*bni_64 + (2)bni_64] + [(2)bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[(-1)bso_65] + i1310[8] ≥ 0)







For Pair COND_JMP56791(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP5679'(i1310, i1310, i1310, -(i2872, i1310), i1310) the following chains were created:
  • We consider the chain JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]), COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9]), JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) which results in the following constraint:

    (103)    (&&(>(i1310[8], 0), >(i2872[8], i1310[8]))=TRUEi2872[8]=i2872[9]i1310[8]=i1310[9]-(i2872[9], i1310[9])=i2872[2]i1310[9]=i1310[2]COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9])≥NonInfC∧COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9])≥JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])∧(UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥))



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

    (104)    (>(i1310[8], 0)=TRUE>(i2872[8], i1310[8])=TRUECOND_JMP56791(TRUE, i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥NonInfC∧COND_JMP56791(TRUE, i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥JMP5679'(i1310[8], i1310[8], i1310[8], -(i2872[8], i1310[8]), i1310[8])∧(UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥))



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

    (105)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (106)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (107)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (108)    (i1310[8] ≥ 0∧i2872[8] + [-2] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (109)    (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66 + (2)bni_66] + [bni_66]i1310[8] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



  • We consider the chain JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]), COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9]), JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) which results in the following constraint:

    (110)    (&&(>(i1310[8], 0), >(i2872[8], i1310[8]))=TRUEi2872[8]=i2872[9]i1310[8]=i1310[9]-(i2872[9], i1310[9])=i2872[8]1i1310[9]=i1310[8]1COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9])≥NonInfC∧COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9])≥JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])∧(UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥))



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

    (111)    (>(i1310[8], 0)=TRUE>(i2872[8], i1310[8])=TRUECOND_JMP56791(TRUE, i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥NonInfC∧COND_JMP56791(TRUE, i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])≥JMP5679'(i1310[8], i1310[8], i1310[8], -(i2872[8], i1310[8]), i1310[8])∧(UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥))



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

    (112)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (113)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (114)    (i1310[8] + [-1] ≥ 0∧i2872[8] + [-1] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (115)    (i1310[8] ≥ 0∧i2872[8] + [-2] + [-1]i1310[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)



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

    (116)    (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66 + (2)bni_66] + [bni_66]i1310[8] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)







For Pair JMP2949'(i277, i1310) → COND_JMP29493(&&(&&(>(i1310, 0), >(-(i277, i1310), i1310)), >(i277, i1310)), i277, i1310) the following chains were created:
  • We consider the chain JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10]), COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11]) which results in the following constraint:

    (117)    (i277[10]=i277[11]i1310[10]=i1310[11]&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10]))=TRUEJMP2949'(i277[10], i1310[10])≥NonInfC∧JMP2949'(i277[10], i1310[10])≥COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])∧(UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥))



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

    (118)    (>(i277[10], i1310[10])=TRUE>(i1310[10], 0)=TRUE>(-(i277[10], i1310[10]), i1310[10])=TRUEJMP2949'(i277[10], i1310[10])≥NonInfC∧JMP2949'(i277[10], i1310[10])≥COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])∧(UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥))



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

    (119)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[-2 + (-1)bso_69] + [2]i1310[10] ≥ 0)



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

    (120)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[-2 + (-1)bso_69] + [2]i1310[10] ≥ 0)



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

    (121)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[-2 + (-1)bso_69] + [2]i1310[10] ≥ 0)



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

    (122)    (i277[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧[-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)Bound*bni_68] + [(2)bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[-2 + (-1)bso_69] + [2]i1310[10] ≥ 0)



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

    (123)    (i277[10] ≥ 0∧i1310[10] ≥ 0∧[-1] + [-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)Bound*bni_68 + (2)bni_68] + [(2)bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[(-1)bso_69] + [2]i1310[10] ≥ 0)



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

    (124)    ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)Bound*bni_68 + (3)bni_68] + [(3)bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[(-1)bso_69] + [2]i1310[10] ≥ 0)







For Pair COND_JMP29493(TRUE, i277, i1310) → JMP5679'(i1310, i1310, i1310, -(-(i277, i1310), i1310), i1310) the following chains were created:
  • We consider the chain JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10]), COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11]), JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) which results in the following constraint:

    (125)    (i277[10]=i277[11]i1310[10]=i1310[11]&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10]))=TRUEi1310[11]=i1310[2]-(-(i277[11], i1310[11]), i1310[11])=i2872[2]COND_JMP29493(TRUE, i277[11], i1310[11])≥NonInfC∧COND_JMP29493(TRUE, i277[11], i1310[11])≥JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])∧(UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥))



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

    (126)    (>(i277[10], i1310[10])=TRUE>(i1310[10], 0)=TRUE>(-(i277[10], i1310[10]), i1310[10])=TRUECOND_JMP29493(TRUE, i277[10], i1310[10])≥NonInfC∧COND_JMP29493(TRUE, i277[10], i1310[10])≥JMP5679'(i1310[10], i1310[10], i1310[10], -(-(i277[10], i1310[10]), i1310[10]), i1310[10])∧(UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥))



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

    (127)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (128)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (129)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (130)    (i277[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧[-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(2)bni_70 + (-1)Bound*bni_70] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (131)    (i277[10] ≥ 0∧i1310[10] ≥ 0∧[-1] + [-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (2)bni_70] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (132)    ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (3)bni_70] + [bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



  • We consider the chain JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10]), COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11]), JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) which results in the following constraint:

    (133)    (i277[10]=i277[11]i1310[10]=i1310[11]&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10]))=TRUE-(-(i277[11], i1310[11]), i1310[11])=i2872[8]i1310[11]=i1310[8]COND_JMP29493(TRUE, i277[11], i1310[11])≥NonInfC∧COND_JMP29493(TRUE, i277[11], i1310[11])≥JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])∧(UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥))



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

    (134)    (>(i277[10], i1310[10])=TRUE>(i1310[10], 0)=TRUE>(-(i277[10], i1310[10]), i1310[10])=TRUECOND_JMP29493(TRUE, i277[10], i1310[10])≥NonInfC∧COND_JMP29493(TRUE, i277[10], i1310[10])≥JMP5679'(i1310[10], i1310[10], i1310[10], -(-(i277[10], i1310[10]), i1310[10]), i1310[10])∧(UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥))



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

    (135)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (136)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (137)    (i277[10] + [-1] + [-1]i1310[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧i277[10] + [-1] + [-2]i1310[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[bni_70 + (-1)Bound*bni_70] + [(-1)bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (138)    (i277[10] ≥ 0∧i1310[10] + [-1] ≥ 0∧[-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(2)bni_70 + (-1)Bound*bni_70] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (139)    (i277[10] ≥ 0∧i1310[10] ≥ 0∧[-1] + [-1]i1310[10] + i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (2)bni_70] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)



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

    (140)    ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (3)bni_70] + [bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP2949'(i277, i1310) → COND_JMP2949(&&(&&(>(i277, 0), <(i277, i1310)), !(=(i1310, 0))), i277, i1310)
    • (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(2)bni_48 + (-1)Bound*bni_48] + [(2)bni_48]i277[0] + [bni_48]i1310[0] ≥ 0∧[(-1)bso_49] ≥ 0)

  • COND_JMP2949(TRUE, i277, i1310) → JMP2949'(i1310, i277)
    • ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧[(-1)bso_51] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_51] ≥ 0)

  • JMP5679'(i1310, i1310, i1310, i2872, i1310) → COND_JMP5679(&&(>(i1310, 0), <=(i2872, i1310)), i1310, i1310, i1310, i2872, i1310)
    • (i1310[2] ≥ 0∧[1] + i1310[2] + [-1]i2872[2] ≥ 0∧i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)Bound*bni_52] + [bni_52]i1310[2] + [bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)
    • (i1310[2] ≥ 0∧[1] + i1310[2] + i2872[2] ≥ 0∧i2872[2] ≥ 0 ⇒ (UIncreasing(COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])), ≥)∧[(-1)Bound*bni_52] + [bni_52]i1310[2] + [(-1)bni_52]i2872[2] ≥ 0∧[(-1)bso_53] ≥ 0)

  • COND_JMP5679(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP2949'(i1310, i2872)
    • ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧[(-1)bso_55] ≥ 0)
    • ((UIncreasing(JMP2949'(i1310[3], i2872[3])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_55] ≥ 0)

  • JMP2949'(i277, i1310) → COND_JMP29491(&&(&&(>(i1310, 0), <=(-(i277, i1310), i1310)), >(i277, i1310)), i277, i1310)
    • (i277[4] ≥ 0∧i277[4] + i1310[4] ≥ 0∧i1310[4] ≥ 0 ⇒ (UIncreasing(COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])), ≥)∧[(-1)Bound*bni_56 + (2)bni_56] + [(3)bni_56]i277[4] + [(2)bni_56]i1310[4] ≥ 0∧[1 + (-1)bso_57] + i277[4] ≥ 0)

  • COND_JMP29491(TRUE, i277, i1310) → JMP2949'(i1310, -(i277, i1310))
    • (i277[4] ≥ 0∧i277[4] + i1310[4] ≥ 0∧i1310[4] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[5], -(i277[5], i1310[5]))), ≥)∧[bni_58 + (-1)Bound*bni_58] + [(2)bni_58]i277[4] + [(2)bni_58]i1310[4] ≥ 0∧[(-1)bso_59] + i1310[4] ≥ 0)

  • JMP2949'(i1310, i1310) → COND_JMP29492(>(i1310, 0), i1310, i1310)
    • (i1310[6] ≥ 0 ⇒ (UIncreasing(COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])), ≥)∧[bni_60 + (-1)Bound*bni_60] + [(2)bni_60]i1310[6] ≥ 0∧[(-1)bso_61] ≥ 0)

  • COND_JMP29492(TRUE, i1310, i1310) → JMP2949'(i1310, 0)
    • (i1310[6] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[7], 0)), ≥)∧[bni_62 + (-1)Bound*bni_62] + [(2)bni_62]i1310[6] ≥ 0∧[1 + (-1)bso_63] + i1310[6] ≥ 0)

  • JMP5679'(i1310, i1310, i1310, i2872, i1310) → COND_JMP56791(&&(>(i1310, 0), >(i2872, i1310)), i1310, i1310, i1310, i2872, i1310)
    • (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])), ≥)∧[(-1)Bound*bni_64 + (2)bni_64] + [(2)bni_64]i1310[8] + [bni_64]i2872[8] ≥ 0∧[(-1)bso_65] + i1310[8] ≥ 0)

  • COND_JMP56791(TRUE, i1310, i1310, i1310, i2872, i1310) → JMP5679'(i1310, i1310, i1310, -(i2872, i1310), i1310)
    • (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66 + (2)bni_66] + [bni_66]i1310[8] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)
    • (i1310[8] ≥ 0∧i2872[8] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])), ≥)∧[(-1)Bound*bni_66 + (2)bni_66] + [bni_66]i1310[8] + [bni_66]i2872[8] ≥ 0∧[1 + (-1)bso_67] ≥ 0)

  • JMP2949'(i277, i1310) → COND_JMP29493(&&(&&(>(i1310, 0), >(-(i277, i1310), i1310)), >(i277, i1310)), i277, i1310)
    • ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])), ≥)∧[(-1)Bound*bni_68 + (3)bni_68] + [(3)bni_68]i1310[10] + [bni_68]i277[10] ≥ 0∧[(-1)bso_69] + [2]i1310[10] ≥ 0)

  • COND_JMP29493(TRUE, i277, i1310) → JMP5679'(i1310, i1310, i1310, -(-(i277, i1310), i1310), i1310)
    • ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (3)bni_70] + [bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)
    • ([1] + i1310[10] + i277[10] ≥ 0∧i1310[10] ≥ 0∧i277[10] ≥ 0 ⇒ (UIncreasing(JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])), ≥)∧[(-1)Bound*bni_70 + (3)bni_70] + [bni_70]i1310[10] + [bni_70]i277[10] ≥ 0∧[2 + (-1)bso_71] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(JMP2949'(x1, x2)) = [-1] + x2 + x1   
POL(COND_JMP2949(x1, x2, x3)) = [-1] + x3 + x2 + [2]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(JMP5679'(x1, x2, x3, x4, x5)) = [-1] + x5 + x4 + [-1]x3 + x2   
POL(COND_JMP5679(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + x5 + [2]x4 + [-1]x3 + x2 + [2]x1   
POL(<=(x1, x2)) = [-1]   
POL(COND_JMP29491(x1, x2, x3)) = [-1] + [2]x3 + [-1]x1   
POL(-(x1, x2)) = x1 + [-1]x2   
POL(COND_JMP29492(x1, x2, x3)) = [-1] + x3 + x2   
POL(COND_JMP56791(x1, x2, x3, x4, x5, x6)) = x5 + [-1]x1   
POL(COND_JMP29493(x1, x2, x3)) = [1] + [-1]x3 + x2   

The following pairs are in P>:

JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])
COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0)
COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])
COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])

The following pairs are in Pbound:

JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])
JMP2949'(i277[4], i1310[4]) → COND_JMP29491(&&(&&(>(i1310[4], 0), <=(-(i277[4], i1310[4]), i1310[4])), >(i277[4], i1310[4])), i277[4], i1310[4])
COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], -(i277[5], i1310[5]))
JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])
COND_JMP29492(TRUE, i1310[7], i1310[7]) → JMP2949'(i1310[7], 0)
JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])
COND_JMP56791(TRUE, i1310[9], i1310[9], i1310[9], i2872[9], i1310[9]) → JMP5679'(i1310[9], i1310[9], i1310[9], -(i2872[9], i1310[9]), i1310[9])
JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])
COND_JMP29493(TRUE, i277[11], i1310[11]) → JMP5679'(i1310[11], i1310[11], i1310[11], -(-(i277[11], i1310[11]), i1310[11]), i1310[11])

The following pairs are in P:

JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])
COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(&&(>(i1310[2], 0), <=(i2872[2], i1310[2])), i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])
COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3])
COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], -(i277[5], i1310[5]))
JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(>(i1310[6], 0), i1310[6], i1310[6])
JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(&&(>(i1310[8], 0), >(i2872[8], i1310[8])), i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])
JMP2949'(i277[10], i1310[10]) → COND_JMP29493(&&(&&(>(i1310[10], 0), >(-(i277[10], i1310[10]), i1310[10])), >(i277[10], i1310[10])), i277[10], i1310[10])

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

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1

(11) Complex Obligation (AND)

(12) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2949'(i277[0], i1310[0]) → COND_JMP2949(i277[0] > 0 && i277[0] < i1310[0] && !(i1310[0] = 0), i277[0], i1310[0])
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
(2): JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(i1310[2] > 0 && i2872[2] <= i1310[2], i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])
(3): COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3])
(5): COND_JMP29491(TRUE, i277[5], i1310[5]) → JMP2949'(i1310[5], i277[5] - i1310[5])
(6): JMP2949'(i1310[6], i1310[6]) → COND_JMP29492(i1310[6] > 0, i1310[6], i1310[6])
(8): JMP5679'(i1310[8], i1310[8], i1310[8], i2872[8], i1310[8]) → COND_JMP56791(i1310[8] > 0 && i2872[8] > i1310[8], i1310[8], i1310[8], i1310[8], i2872[8], i1310[8])
(10): JMP2949'(i277[10], i1310[10]) → COND_JMP29493(i1310[10] > 0 && i277[10] - i1310[10] > i1310[10] && i277[10] > i1310[10], i277[10], i1310[10])

(1) -> (0), if ((i1310[1]* i277[0])∧(i277[1]* i1310[0]))


(3) -> (0), if ((i1310[3]* i277[0])∧(i2872[3]* i1310[0]))


(5) -> (0), if ((i277[5] - i1310[5]* i1310[0])∧(i1310[5]* i277[0]))


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


(2) -> (3), if ((i2872[2]* i2872[3])∧(i1310[2]* i1310[3])∧(i1310[2] > 0 && i2872[2] <= i1310[2]* TRUE))


(1) -> (6), if ((i277[1]* i1310[6])∧(i1310[1]* i1310[6]))


(3) -> (6), if ((i1310[3]* i1310[6])∧(i2872[3]* i1310[6]))


(5) -> (6), if ((i1310[5]* i1310[6])∧(i277[5] - i1310[5]* i1310[6]))


(1) -> (10), if ((i277[1]* i1310[10])∧(i1310[1]* i277[10]))


(3) -> (10), if ((i2872[3]* i1310[10])∧(i1310[3]* i277[10]))


(5) -> (10), if ((i1310[5]* i277[10])∧(i277[5] - i1310[5]* i1310[10]))



The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(13) IDependencyGraphProof (EQUIVALENT transformation)

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

(14) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
(0): JMP2949'(i277[0], i1310[0]) → COND_JMP2949(i277[0] > 0 && i277[0] < i1310[0] && !(i1310[0] = 0), i277[0], i1310[0])

(1) -> (0), if ((i1310[1]* i277[0])∧(i277[1]* i1310[0]))


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



The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(15) IDPNonInfProof (SOUND transformation)

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


For Pair COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]) the following chains were created:
  • We consider the chain JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]), COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]) which results in the following constraint:

    (1)    (i1310[0]=i1310[1]i277[0]=i277[1]&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0)))=TRUEi1310[1]=i277[0]1i277[1]=i1310[0]1COND_JMP2949(TRUE, i277[1], i1310[1])≥NonInfC∧COND_JMP2949(TRUE, i277[1], i1310[1])≥JMP2949'(i1310[1], i277[1])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (2)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE<(i1310[0], 0)=TRUECOND_JMP2949(TRUE, i277[0], i1310[0])≥NonInfC∧COND_JMP2949(TRUE, i277[0], i1310[0])≥JMP2949'(i1310[0], i277[0])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))


    (3)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE>(i1310[0], 0)=TRUECOND_JMP2949(TRUE, i277[0], i1310[0])≥NonInfC∧COND_JMP2949(TRUE, i277[0], i1310[0])≥JMP2949'(i1310[0], i277[0])∧(UIncreasing(JMP2949'(i1310[1], i277[1])), ≥))



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

    (4)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (5)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (6)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (7)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (8)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (9)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-1 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



    We solved constraint (8) using rule (IDP_SMT_SPLIT).We simplified constraint (9) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (10)    (i277[0] ≥ 0∧i1310[0] + [-2] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[-2 + (-1)bso_16] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (11)    (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[(-1)bso_16] + i1310[0] ≥ 0)







For Pair JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]) the following chains were created:
  • We consider the chain COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]), JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0]), COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1]) which results in the following constraint:

    (12)    (i1310[1]=i277[0]i277[1]=i1310[0]i1310[0]=i1310[1]1i277[0]=i277[1]1&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0)))=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))



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

    (13)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE<(i1310[0], 0)=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))


    (14)    (>(i277[0], 0)=TRUE<(i277[0], i1310[0])=TRUE>(i1310[0], 0)=TRUEJMP2949'(i277[0], i1310[0])≥NonInfC∧JMP2949'(i277[0], i1310[0])≥COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])∧(UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥))



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

    (15)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (16)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (17)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (18)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (19)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧[-1] + [-1]i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (20)    (i277[0] + [-1] ≥ 0∧i1310[0] + [-1] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[1 + (-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (21)    (i277[0] ≥ 0∧i1310[0] + [-2] + [-1]i277[0] ≥ 0∧i1310[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17 + (-1)bni_17] + [bni_17]i1310[0] + [(-1)bni_17]i277[0] ≥ 0∧[(-1)bso_18] + i1310[0] + [-1]i277[0] ≥ 0)



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

    (22)    (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17 + bni_17] + [bni_17]i1310[0] ≥ 0∧[2 + (-1)bso_18] + i1310[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
    • (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(JMP2949'(i1310[1], i277[1])), ≥)∧[(-1)bni_15 + (-1)Bound*bni_15] ≥ 0∧[(-1)bso_16] + i1310[0] ≥ 0)

  • JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])
    • (i277[0] ≥ 0∧i1310[0] ≥ 0∧[1] + i277[0] + i1310[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])), ≥)∧[(-1)Bound*bni_17 + bni_17] + [bni_17]i1310[0] ≥ 0∧[2 + (-1)bso_18] + i1310[0] ≥ 0)




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

POL(TRUE) = [1]   
POL(FALSE) = [1]   
POL(COND_JMP2949(x1, x2, x3)) = [-1]x1   
POL(JMP2949'(x1, x2)) = x2 + [-1]x1   
POL(&&(x1, x2)) = [1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   

The following pairs are in P>:

JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])

The following pairs are in Pbound:

COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
JMP2949'(i277[0], i1310[0]) → COND_JMP2949(&&(&&(>(i277[0], 0), <(i277[0], i1310[0])), !(=(i1310[0], 0))), i277[0], i1310[0])

The following pairs are in P:

COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])

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

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1

(16) Complex Obligation (AND)

(17) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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 contains the following rules and edges:
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])


The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(18) IDependencyGraphProof (EQUIVALENT transformation)

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

(19) TRUE

(20) Obligation:

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


The following domains are used:
none


R is empty.

The integer pair graph is empty.

The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(21) IDependencyGraphProof (EQUIVALENT transformation)

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

(22) TRUE

(23) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_JMP2949(TRUE, i277[1], i1310[1]) → JMP2949'(i1310[1], i277[1])
(2): JMP5679'(i1310[2], i1310[2], i1310[2], i2872[2], i1310[2]) → COND_JMP5679(i1310[2] > 0 && i2872[2] <= i1310[2], i1310[2], i1310[2], i1310[2], i2872[2], i1310[2])
(3): COND_JMP5679(TRUE, i1310[3], i1310[3], i1310[3], i2872[3], i1310[3]) → JMP2949'(i1310[3], i2872[3])

(2) -> (3), if ((i2872[2]* i2872[3])∧(i1310[2]* i1310[3])∧(i1310[2] > 0 && i2872[2] <= i1310[2]* TRUE))



The set Q consists of the following terms:
JMP2949(x0, x1)
Cond_JMP2949(TRUE, x0, x1)
JMP5679(x0, x0, x0, x1, x0)
Cond_JMP5679(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29491(TRUE, x0, x1)
Cond_JMP29492(TRUE, x0, x0)
Cond_JMP56791(TRUE, x0, x0, x0, x1, x0)
Cond_JMP29493(TRUE, x0, x1)

(24) IDependencyGraphProof (EQUIVALENT transformation)

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

(25) TRUE

(26) 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:
JMP4611(i895, i895, i895, i1888, i895) → Cond_JMP4611(i895 > 0 && i1888 > i895, i895, i895, i895, i1888, i895)
Cond_JMP4611(TRUE, i895, i895, i895, i1888, i895) → JMP4611(i895, i895, i895, i1888 - i895, i895)
The set Q consists of the following terms:
JMP4611(x0, x0, x0, x1, x0)
Cond_JMP4611(TRUE, x0, x0, x0, x1, x0)

(27) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(28) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
JMP4611(i895, i895, i895, i1888, i895) → Cond_JMP4611(i895 > 0 && i1888 > i895, i895, i895, i895, i1888, i895)
Cond_JMP4611(TRUE, i895, i895, i895, i1888, i895) → JMP4611(i895, i895, i895, i1888 - i895, i895)

The integer pair graph contains the following rules and edges:
(0): JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(i895[0] > 0 && i1888[0] > i895[0], i895[0], i895[0], i895[0], i1888[0], i895[0])
(1): COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], i1888[1] - i895[1], i895[1])

(0) -> (1), if ((i895[0]* i895[1])∧(i895[0] > 0 && i1888[0] > i895[0]* TRUE)∧(i1888[0]* i1888[1]))


(1) -> (0), if ((i1888[1] - i895[1]* i1888[0])∧(i895[1]* i895[0]))



The set Q consists of the following terms:
JMP4611(x0, x0, x0, x1, x0)
Cond_JMP4611(TRUE, x0, x0, x0, x1, x0)

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

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

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(i895[0] > 0 && i1888[0] > i895[0], i895[0], i895[0], i895[0], i1888[0], i895[0])
(1): COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], i1888[1] - i895[1], i895[1])

(0) -> (1), if ((i895[0]* i895[1])∧(i895[0] > 0 && i1888[0] > i895[0]* TRUE)∧(i1888[0]* i1888[1]))


(1) -> (0), if ((i1888[1] - i895[1]* i1888[0])∧(i895[1]* i895[0]))



The set Q consists of the following terms:
JMP4611(x0, x0, x0, x1, x0)
Cond_JMP4611(TRUE, x0, x0, x0, x1, 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 JMP4611'(i895, i895, i895, i1888, i895) → COND_JMP4611(&&(>(i895, 0), >(i1888, i895)), i895, i895, i895, i1888, i895) the following chains were created:
  • We consider the chain JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0]), COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1]) which results in the following constraint:

    (1)    (i895[0]=i895[1]&&(>(i895[0], 0), >(i1888[0], i895[0]))=TRUEi1888[0]=i1888[1]JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0])≥NonInfC∧JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0])≥COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])∧(UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥))



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

    (2)    (>(i895[0], 0)=TRUE>(i1888[0], i895[0])=TRUEJMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0])≥NonInfC∧JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0])≥COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])∧(UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥))



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

    (3)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[-1 + (-1)bso_19] + i895[0] ≥ 0)



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

    (4)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[-1 + (-1)bso_19] + i895[0] ≥ 0)



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

    (5)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[-1 + (-1)bso_19] + i895[0] ≥ 0)



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

    (6)    (i895[0] ≥ 0∧i1888[0] + [-2] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18 + (-1)bni_18] + [(-1)bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[(-1)bso_19] + i895[0] ≥ 0)



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

    (7)    (i895[0] ≥ 0∧i1888[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18 + (3)bni_18] + [bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[(-1)bso_19] + i895[0] ≥ 0)







For Pair COND_JMP4611(TRUE, i895, i895, i895, i1888, i895) → JMP4611'(i895, i895, i895, -(i1888, i895), i895) the following chains were created:
  • We consider the chain JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0]), COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1]), JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0]) which results in the following constraint:

    (8)    (i895[0]=i895[1]&&(>(i895[0], 0), >(i1888[0], i895[0]))=TRUEi1888[0]=i1888[1]-(i1888[1], i895[1])=i1888[0]1i895[1]=i895[0]1COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1])≥NonInfC∧COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1])≥JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])∧(UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥))



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

    (9)    (>(i895[0], 0)=TRUE>(i1888[0], i895[0])=TRUECOND_JMP4611(TRUE, i895[0], i895[0], i895[0], i1888[0], i895[0])≥NonInfC∧COND_JMP4611(TRUE, i895[0], i895[0], i895[0], i1888[0], i895[0])≥JMP4611'(i895[0], i895[0], i895[0], -(i1888[0], i895[0]), i895[0])∧(UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥))



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

    (10)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i895[0] + [(2)bni_20]i1888[0] ≥ 0∧[1 + (-1)bso_21] + i895[0] ≥ 0)



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

    (11)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i895[0] + [(2)bni_20]i1888[0] ≥ 0∧[1 + (-1)bso_21] + i895[0] ≥ 0)



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

    (12)    (i895[0] + [-1] ≥ 0∧i1888[0] + [-1] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i895[0] + [(2)bni_20]i1888[0] ≥ 0∧[1 + (-1)bso_21] + i895[0] ≥ 0)



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

    (13)    (i895[0] ≥ 0∧i1888[0] + [-2] + [-1]i895[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i895[0] + [(2)bni_20]i1888[0] ≥ 0∧[2 + (-1)bso_21] + i895[0] ≥ 0)



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

    (14)    (i895[0] ≥ 0∧i1888[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[(3)bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i1888[0] ≥ 0∧[2 + (-1)bso_21] + i895[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP4611'(i895, i895, i895, i1888, i895) → COND_JMP4611(&&(>(i895, 0), >(i1888, i895)), i895, i895, i895, i1888, i895)
    • (i895[0] ≥ 0∧i1888[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])), ≥)∧[(-1)Bound*bni_18 + (3)bni_18] + [bni_18]i895[0] + [(2)bni_18]i1888[0] ≥ 0∧[(-1)bso_19] + i895[0] ≥ 0)

  • COND_JMP4611(TRUE, i895, i895, i895, i1888, i895) → JMP4611'(i895, i895, i895, -(i1888, i895), i895)
    • (i895[0] ≥ 0∧i1888[0] ≥ 0 ⇒ (UIncreasing(JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])), ≥)∧[(3)bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i1888[0] ≥ 0∧[2 + (-1)bso_21] + i895[0] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = [1]   
POL(JMP4611'(x1, x2, x3, x4, x5)) = [2]x5 + [2]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_JMP4611(x1, x2, x3, x4, x5, x6)) = [1] + [-1]x6 + [2]x5 + [-1]x4 + [-1]x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])

The following pairs are in Pbound:

JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])
COND_JMP4611(TRUE, i895[1], i895[1], i895[1], i1888[1], i895[1]) → JMP4611'(i895[1], i895[1], i895[1], -(i1888[1], i895[1]), i895[1])

The following pairs are in P:

JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(&&(>(i895[0], 0), >(i1888[0], i895[0])), i895[0], i895[0], i895[0], i1888[0], i895[0])

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

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

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP4611'(i895[0], i895[0], i895[0], i1888[0], i895[0]) → COND_JMP4611(i895[0] > 0 && i1888[0] > i895[0], i895[0], i895[0], i895[0], i1888[0], i895[0])


The set Q consists of the following terms:
JMP4611(x0, x0, x0, x1, x0)
Cond_JMP4611(TRUE, x0, x0, x0, x1, 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:
JMP4611(x0, x0, x0, x1, x0)
Cond_JMP4611(TRUE, x0, x0, x0, x1, x0)

(37) IDependencyGraphProof (EQUIVALENT transformation)

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

(38) TRUE

(39) 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:
JMP4563(i65, i65, i65, i65, i1832, i65) → Cond_JMP4563(i65 > 0 && i1832 > i65, i65, i65, i65, i65, i1832, i65)
Cond_JMP4563(TRUE, i65, i65, i65, i65, i1832, i65) → JMP4563(i65, i65, i65, i65, i1832 - i65, i65)
The set Q consists of the following terms:
JMP4563(x0, x0, x0, x0, x1, x0)
Cond_JMP4563(TRUE, x0, x0, x0, x0, x1, x0)

(40) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(41) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
JMP4563(i65, i65, i65, i65, i1832, i65) → Cond_JMP4563(i65 > 0 && i1832 > i65, i65, i65, i65, i65, i1832, i65)
Cond_JMP4563(TRUE, i65, i65, i65, i65, i1832, i65) → JMP4563(i65, i65, i65, i65, i1832 - i65, i65)

The integer pair graph contains the following rules and edges:
(0): JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(i65[0] > 0 && i1832[0] > i65[0], i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])
(1): COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], i1832[1] - i65[1], i65[1])

(0) -> (1), if ((i1832[0]* i1832[1])∧(i65[0]* i65[1])∧(i65[0] > 0 && i1832[0] > i65[0]* TRUE))


(1) -> (0), if ((i65[1]* i65[0])∧(i1832[1] - i65[1]* i1832[0]))



The set Q consists of the following terms:
JMP4563(x0, x0, x0, x0, x1, x0)
Cond_JMP4563(TRUE, x0, x0, x0, x0, x1, x0)

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

(43) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(i65[0] > 0 && i1832[0] > i65[0], i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])
(1): COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], i1832[1] - i65[1], i65[1])

(0) -> (1), if ((i1832[0]* i1832[1])∧(i65[0]* i65[1])∧(i65[0] > 0 && i1832[0] > i65[0]* TRUE))


(1) -> (0), if ((i65[1]* i65[0])∧(i1832[1] - i65[1]* i1832[0]))



The set Q consists of the following terms:
JMP4563(x0, x0, x0, x0, x1, x0)
Cond_JMP4563(TRUE, x0, x0, x0, x0, x1, x0)

(44) 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 JMP4563'(i65, i65, i65, i65, i1832, i65) → COND_JMP4563(&&(>(i65, 0), >(i1832, i65)), i65, i65, i65, i65, i1832, i65) the following chains were created:
  • We consider the chain JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]), COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1]) which results in the following constraint:

    (1)    (i1832[0]=i1832[1]i65[0]=i65[1]&&(>(i65[0], 0), >(i1832[0], i65[0]))=TRUEJMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥NonInfC∧JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])∧(UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥))



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

    (2)    (>(i65[0], 0)=TRUE>(i1832[0], i65[0])=TRUEJMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥NonInfC∧JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])∧(UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥))



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

    (3)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i65[0] + [(2)bni_20]i1832[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)



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

    (4)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i65[0] + [(2)bni_20]i1832[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)



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

    (5)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i65[0] + [(2)bni_20]i1832[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)



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

    (6)    (i65[0] ≥ 0∧i1832[0] + [-2] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[(-3)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i65[0] + [(2)bni_20]i1832[0] ≥ 0∧[1 + (-1)bso_21] + i65[0] ≥ 0)



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

    (7)    (i65[0] ≥ 0∧i1832[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i1832[0] ≥ 0∧[1 + (-1)bso_21] + i65[0] ≥ 0)







For Pair COND_JMP4563(TRUE, i65, i65, i65, i65, i1832, i65) → JMP4563'(i65, i65, i65, i65, -(i1832, i65), i65) the following chains were created:
  • We consider the chain JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]), COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1]), JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) which results in the following constraint:

    (8)    (i1832[0]=i1832[1]i65[0]=i65[1]&&(>(i65[0], 0), >(i1832[0], i65[0]))=TRUEi65[1]=i65[0]1-(i1832[1], i65[1])=i1832[0]1COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1])≥NonInfC∧COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1])≥JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])∧(UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥))



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

    (9)    (>(i65[0], 0)=TRUE>(i1832[0], i65[0])=TRUECOND_JMP4563(TRUE, i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥NonInfC∧COND_JMP4563(TRUE, i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])≥JMP4563'(i65[0], i65[0], i65[0], i65[0], -(i1832[0], i65[0]), i65[0])∧(UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥))



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

    (10)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-2)bni_22 + (-1)Bound*bni_22] + [(-3)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[-1 + (-1)bso_23] + i65[0] ≥ 0)



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

    (11)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-2)bni_22 + (-1)Bound*bni_22] + [(-3)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[-1 + (-1)bso_23] + i65[0] ≥ 0)



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

    (12)    (i65[0] + [-1] ≥ 0∧i1832[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-2)bni_22 + (-1)Bound*bni_22] + [(-3)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[-1 + (-1)bso_23] + i65[0] ≥ 0)



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

    (13)    (i65[0] ≥ 0∧i1832[0] + [-2] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-5)bni_22 + (-1)Bound*bni_22] + [(-3)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)



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

    (14)    (i65[0] ≥ 0∧i1832[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP4563'(i65, i65, i65, i65, i1832, i65) → COND_JMP4563(&&(>(i65, 0), >(i1832, i65)), i65, i65, i65, i65, i1832, i65)
    • (i65[0] ≥ 0∧i1832[0] ≥ 0 ⇒ (UIncreasing(COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i1832[0] ≥ 0∧[1 + (-1)bso_21] + i65[0] ≥ 0)

  • COND_JMP4563(TRUE, i65, i65, i65, i65, i1832, i65) → JMP4563'(i65, i65, i65, i65, -(i1832, i65), i65)
    • (i65[0] ≥ 0∧i1832[0] ≥ 0 ⇒ (UIncreasing(JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i65[0] + [(2)bni_22]i1832[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)




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

POL(TRUE) = [1]   
POL(FALSE) = [1]   
POL(JMP4563'(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [2]x5 + [-1]x3 + x2 + [-1]x1   
POL(COND_JMP4563(x1, x2, x3, x4, x5, x6, x7)) = [-1] + x7 + [2]x6 + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])

The following pairs are in Pbound:

JMP4563'(i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0]) → COND_JMP4563(&&(>(i65[0], 0), >(i1832[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i1832[0], i65[0])

The following pairs are in P:

COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], -(i1832[1], i65[1]), i65[1])

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

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

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_JMP4563(TRUE, i65[1], i65[1], i65[1], i65[1], i1832[1], i65[1]) → JMP4563'(i65[1], i65[1], i65[1], i65[1], i1832[1] - i65[1], i65[1])


The set Q consists of the following terms:
JMP4563(x0, x0, x0, x0, x1, x0)
Cond_JMP4563(TRUE, x0, x0, x0, x0, x1, x0)

(46) IDependencyGraphProof (EQUIVALENT transformation)

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

(47) TRUE

(48) 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:
JMP2376(i277, i277, i277, i652, i277) → Cond_JMP2376(i277 > 0 && i652 > i277, i277, i277, i277, i652, i277)
Cond_JMP2376(TRUE, i277, i277, i277, i652, i277) → JMP2376(i277, i277, i277, i652 - i277, i277)
The set Q consists of the following terms:
JMP2376(x0, x0, x0, x1, x0)
Cond_JMP2376(TRUE, x0, x0, x0, x1, x0)

(49) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(50) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
JMP2376(i277, i277, i277, i652, i277) → Cond_JMP2376(i277 > 0 && i652 > i277, i277, i277, i277, i652, i277)
Cond_JMP2376(TRUE, i277, i277, i277, i652, i277) → JMP2376(i277, i277, i277, i652 - i277, i277)

The integer pair graph contains the following rules and edges:
(0): JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(i277[0] > 0 && i652[0] > i277[0], i277[0], i277[0], i277[0], i652[0], i277[0])
(1): COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], i652[1] - i277[1], i277[1])

(0) -> (1), if ((i277[0] > 0 && i652[0] > i277[0]* TRUE)∧(i652[0]* i652[1])∧(i277[0]* i277[1]))


(1) -> (0), if ((i277[1]* i277[0])∧(i652[1] - i277[1]* i652[0]))



The set Q consists of the following terms:
JMP2376(x0, x0, x0, x1, x0)
Cond_JMP2376(TRUE, x0, x0, x0, x1, x0)

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

(52) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(i277[0] > 0 && i652[0] > i277[0], i277[0], i277[0], i277[0], i652[0], i277[0])
(1): COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], i652[1] - i277[1], i277[1])

(0) -> (1), if ((i277[0] > 0 && i652[0] > i277[0]* TRUE)∧(i652[0]* i652[1])∧(i277[0]* i277[1]))


(1) -> (0), if ((i277[1]* i277[0])∧(i652[1] - i277[1]* i652[0]))



The set Q consists of the following terms:
JMP2376(x0, x0, x0, x1, x0)
Cond_JMP2376(TRUE, x0, x0, x0, x1, x0)

(53) 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 JMP2376'(i277, i277, i277, i652, i277) → COND_JMP2376(&&(>(i277, 0), >(i652, i277)), i277, i277, i277, i652, i277) the following chains were created:
  • We consider the chain JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0]), COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1]) which results in the following constraint:

    (1)    (&&(>(i277[0], 0), >(i652[0], i277[0]))=TRUEi652[0]=i652[1]i277[0]=i277[1]JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0])≥NonInfC∧JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0])≥COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])∧(UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥))



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

    (2)    (>(i277[0], 0)=TRUE>(i652[0], i277[0])=TRUEJMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0])≥NonInfC∧JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0])≥COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])∧(UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥))



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

    (3)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[-1 + (-1)bso_19] + i277[0] ≥ 0)



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

    (4)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[-1 + (-1)bso_19] + i277[0] ≥ 0)



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

    (5)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18] + [(-1)bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[-1 + (-1)bso_19] + i277[0] ≥ 0)



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

    (6)    (i277[0] ≥ 0∧i652[0] + [-2] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18 + (-1)bni_18] + [(-1)bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[(-1)bso_19] + i277[0] ≥ 0)



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

    (7)    (i277[0] ≥ 0∧i652[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18 + (3)bni_18] + [bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[(-1)bso_19] + i277[0] ≥ 0)







For Pair COND_JMP2376(TRUE, i277, i277, i277, i652, i277) → JMP2376'(i277, i277, i277, -(i652, i277), i277) the following chains were created:
  • We consider the chain JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0]), COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1]), JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0]) which results in the following constraint:

    (8)    (&&(>(i277[0], 0), >(i652[0], i277[0]))=TRUEi652[0]=i652[1]i277[0]=i277[1]i277[1]=i277[0]1-(i652[1], i277[1])=i652[0]1COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1])≥NonInfC∧COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1])≥JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])∧(UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥))



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

    (9)    (>(i277[0], 0)=TRUE>(i652[0], i277[0])=TRUECOND_JMP2376(TRUE, i277[0], i277[0], i277[0], i652[0], i277[0])≥NonInfC∧COND_JMP2376(TRUE, i277[0], i277[0], i277[0], i652[0], i277[0])≥JMP2376'(i277[0], i277[0], i277[0], -(i652[0], i277[0]), i277[0])∧(UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥))



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

    (10)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i277[0] + [(2)bni_20]i652[0] ≥ 0∧[1 + (-1)bso_21] + i277[0] ≥ 0)



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

    (11)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i277[0] + [(2)bni_20]i652[0] ≥ 0∧[1 + (-1)bso_21] + i277[0] ≥ 0)



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

    (12)    (i277[0] + [-1] ≥ 0∧i652[0] + [-1] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i277[0] + [(2)bni_20]i652[0] ≥ 0∧[1 + (-1)bso_21] + i277[0] ≥ 0)



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

    (13)    (i277[0] ≥ 0∧i652[0] + [-2] + [-1]i277[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-2)bni_20]i277[0] + [(2)bni_20]i652[0] ≥ 0∧[2 + (-1)bso_21] + i277[0] ≥ 0)



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

    (14)    (i277[0] ≥ 0∧i652[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[(3)bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i652[0] ≥ 0∧[2 + (-1)bso_21] + i277[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP2376'(i277, i277, i277, i652, i277) → COND_JMP2376(&&(>(i277, 0), >(i652, i277)), i277, i277, i277, i652, i277)
    • (i277[0] ≥ 0∧i652[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])), ≥)∧[(-1)Bound*bni_18 + (3)bni_18] + [bni_18]i277[0] + [(2)bni_18]i652[0] ≥ 0∧[(-1)bso_19] + i277[0] ≥ 0)

  • COND_JMP2376(TRUE, i277, i277, i277, i652, i277) → JMP2376'(i277, i277, i277, -(i652, i277), i277)
    • (i277[0] ≥ 0∧i652[0] ≥ 0 ⇒ (UIncreasing(JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])), ≥)∧[(3)bni_20 + (-1)Bound*bni_20] + [(2)bni_20]i652[0] ≥ 0∧[2 + (-1)bso_21] + i277[0] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = [1]   
POL(JMP2376'(x1, x2, x3, x4, x5)) = [2]x5 + [2]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_JMP2376(x1, x2, x3, x4, x5, x6)) = [1] + [-1]x6 + [2]x5 + [-1]x4 + [-1]x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])

The following pairs are in Pbound:

JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])
COND_JMP2376(TRUE, i277[1], i277[1], i277[1], i652[1], i277[1]) → JMP2376'(i277[1], i277[1], i277[1], -(i652[1], i277[1]), i277[1])

The following pairs are in P:

JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(&&(>(i277[0], 0), >(i652[0], i277[0])), i277[0], i277[0], i277[0], i652[0], i277[0])

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

(54) Complex Obligation (AND)

(55) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2376'(i277[0], i277[0], i277[0], i652[0], i277[0]) → COND_JMP2376(i277[0] > 0 && i652[0] > i277[0], i277[0], i277[0], i277[0], i652[0], i277[0])


The set Q consists of the following terms:
JMP2376(x0, x0, x0, x1, x0)
Cond_JMP2376(TRUE, x0, x0, x0, x1, x0)

(56) IDependencyGraphProof (EQUIVALENT transformation)

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

(57) TRUE

(58) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
JMP2376(x0, x0, x0, x1, x0)
Cond_JMP2376(TRUE, x0, x0, x0, x1, x0)

(59) IDependencyGraphProof (EQUIVALENT transformation)

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

(60) TRUE

(61) 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:
JMP2360(i895, i895, i895) → Cond_JMP2360(i895 > 0, i895, i895, i895)
Cond_JMP2360(TRUE, i895, i895, i895) → JMP2360(i895, i895, 0)
The set Q consists of the following terms:
JMP2360(x0, x0, x0)
Cond_JMP2360(TRUE, x0, x0, x0)

(62) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

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

Integer


The ITRS R consists of the following rules:
JMP2360(i895, i895, i895) → Cond_JMP2360(i895 > 0, i895, i895, i895)
Cond_JMP2360(TRUE, i895, i895, i895) → JMP2360(i895, i895, 0)

The integer pair graph contains the following rules and edges:
(0): JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(i895[0] > 0, i895[0], i895[0], i895[0])
(1): COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0)

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


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



The set Q consists of the following terms:
JMP2360(x0, x0, x0)
Cond_JMP2360(TRUE, x0, x0, x0)

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

(65) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
(0): JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(i895[0] > 0, i895[0], i895[0], i895[0])
(1): COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0)

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


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



The set Q consists of the following terms:
JMP2360(x0, x0, x0)
Cond_JMP2360(TRUE, x0, x0, x0)

(66) 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 JMP2360'(i895, i895, i895) → COND_JMP2360(>(i895, 0), i895, i895, i895) the following chains were created:
  • We consider the chain JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0]), COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0) which results in the following constraint:

    (1)    (>(i895[0], 0)=TRUEi895[0]=i895[1]JMP2360'(i895[0], i895[0], i895[0])≥COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])∧(UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥))



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

    (2)    (>(i895[0], 0)=TRUEJMP2360'(i895[0], i895[0], i895[0])≥COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])∧(UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥))



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

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥)∧[2 + (-1)bso_10] + i895[0] ≥ 0)



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

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥)∧[2 + (-1)bso_10] + i895[0] ≥ 0)



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

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥)∧[2 + (-1)bso_10] + i895[0] ≥ 0)



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

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥)∧[1] ≥ 0∧[2 + (-1)bso_10] ≥ 0)







For Pair COND_JMP2360(TRUE, i895, i895, i895) → JMP2360'(i895, i895, 0) the following chains were created:
  • We consider the chain JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0]), COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0), JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0]) which results in the following constraint:

    (7)    (>(i895[0], 0)=TRUEi895[0]=i895[1]i895[1]=i895[0]10=i895[0]1COND_JMP2360(TRUE, i895[1], i895[1], i895[1])≥JMP2360'(i895[1], i895[1], 0)∧(UIncreasing(JMP2360'(i895[1], i895[1], 0)), ≥))



    We solved constraint (7) using rules (I), (II), (III), (IDP_CONSTANT_FOLD).




To summarize, we get the following constraints P for the following pairs.
  • JMP2360'(i895, i895, i895) → COND_JMP2360(>(i895, 0), i895, i895, i895)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])), ≥)∧[1] ≥ 0∧[2 + (-1)bso_10] ≥ 0)

  • COND_JMP2360(TRUE, i895, i895, i895) → JMP2360'(i895, i895, 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(JMP2360'(x1, x2, x3)) = [2] + [2]x1   
POL(COND_JMP2360(x1, x2, x3, x4)) = x2   
POL(>(x1, x2)) = 0   
POL(0) = 0   

The following pairs are in P>:

JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])
COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0)

The following pairs are in Pbound:

JMP2360'(i895[0], i895[0], i895[0]) → COND_JMP2360(>(i895[0], 0), i895[0], i895[0], i895[0])
COND_JMP2360(TRUE, i895[1], i895[1], i895[1]) → JMP2360'(i895[1], i895[1], 0)

The following pairs are in P:
none

There are no usable rules.

(67) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
JMP2360(x0, x0, x0)
Cond_JMP2360(TRUE, x0, x0, x0)

(68) IDependencyGraphProof (EQUIVALENT transformation)

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

(69) TRUE

(70) 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:
JMP2049(i128, i128, i128, i128, i389, i128) → Cond_JMP2049(i128 > 0 && i389 > i128, i128, i128, i128, i128, i389, i128)
Cond_JMP2049(TRUE, i128, i128, i128, i128, i389, i128) → JMP2049(i128, i128, i128, i128, i389 - i128, i128)
The set Q consists of the following terms:
JMP2049(x0, x0, x0, x0, x1, x0)
Cond_JMP2049(TRUE, x0, x0, x0, x0, x1, x0)

(71) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

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

Boolean, Integer


The ITRS R consists of the following rules:
JMP2049(i128, i128, i128, i128, i389, i128) → Cond_JMP2049(i128 > 0 && i389 > i128, i128, i128, i128, i128, i389, i128)
Cond_JMP2049(TRUE, i128, i128, i128, i128, i389, i128) → JMP2049(i128, i128, i128, i128, i389 - i128, i128)

The integer pair graph contains the following rules and edges:
(0): JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(i128[0] > 0 && i389[0] > i128[0], i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])
(1): COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], i389[1] - i128[1], i128[1])

(0) -> (1), if ((i128[0] > 0 && i389[0] > i128[0]* TRUE)∧(i389[0]* i389[1])∧(i128[0]* i128[1]))


(1) -> (0), if ((i128[1]* i128[0])∧(i389[1] - i128[1]* i389[0]))



The set Q consists of the following terms:
JMP2049(x0, x0, x0, x0, x1, x0)
Cond_JMP2049(TRUE, x0, x0, x0, x0, x1, x0)

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

(74) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(i128[0] > 0 && i389[0] > i128[0], i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])
(1): COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], i389[1] - i128[1], i128[1])

(0) -> (1), if ((i128[0] > 0 && i389[0] > i128[0]* TRUE)∧(i389[0]* i389[1])∧(i128[0]* i128[1]))


(1) -> (0), if ((i128[1]* i128[0])∧(i389[1] - i128[1]* i389[0]))



The set Q consists of the following terms:
JMP2049(x0, x0, x0, x0, x1, x0)
Cond_JMP2049(TRUE, x0, x0, x0, x0, x1, x0)

(75) 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 JMP2049'(i128, i128, i128, i128, i389, i128) → COND_JMP2049(&&(>(i128, 0), >(i389, i128)), i128, i128, i128, i128, i389, i128) the following chains were created:
  • We consider the chain JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]), COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1]) which results in the following constraint:

    (1)    (&&(>(i128[0], 0), >(i389[0], i128[0]))=TRUEi389[0]=i389[1]i128[0]=i128[1]JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥NonInfC∧JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])∧(UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥))



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

    (2)    (>(i128[0], 0)=TRUE>(i389[0], i128[0])=TRUEJMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥NonInfC∧JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])∧(UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥))



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

    (3)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i128[0] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)



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

    (4)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i128[0] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)



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

    (5)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i128[0] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)



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

    (6)    (i128[0] ≥ 0∧i389[0] + [-2] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-2)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i128[0] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)



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

    (7)    (i128[0] ≥ 0∧i389[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-1)Bound*bni_20] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)







For Pair COND_JMP2049(TRUE, i128, i128, i128, i128, i389, i128) → JMP2049'(i128, i128, i128, i128, -(i389, i128), i128) the following chains were created:
  • We consider the chain JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]), COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1]), JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) which results in the following constraint:

    (8)    (&&(>(i128[0], 0), >(i389[0], i128[0]))=TRUEi389[0]=i389[1]i128[0]=i128[1]i128[1]=i128[0]1-(i389[1], i128[1])=i389[0]1COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1])≥NonInfC∧COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1])≥JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])∧(UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥))



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

    (9)    (>(i128[0], 0)=TRUE>(i389[0], i128[0])=TRUECOND_JMP2049(TRUE, i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥NonInfC∧COND_JMP2049(TRUE, i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])≥JMP2049'(i128[0], i128[0], i128[0], i128[0], -(i389[0], i128[0]), i128[0])∧(UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥))



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

    (10)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i128[0] + [bni_22]i389[0] ≥ 0∧[(-1)bso_23] + i128[0] ≥ 0)



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

    (11)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i128[0] + [bni_22]i389[0] ≥ 0∧[(-1)bso_23] + i128[0] ≥ 0)



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

    (12)    (i128[0] + [-1] ≥ 0∧i389[0] + [-1] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i128[0] + [bni_22]i389[0] ≥ 0∧[(-1)bso_23] + i128[0] ≥ 0)



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

    (13)    (i128[0] ≥ 0∧i389[0] + [-2] + [-1]i128[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-2)bni_22 + (-1)Bound*bni_22] + [(-1)bni_22]i128[0] + [bni_22]i389[0] ≥ 0∧[1 + (-1)bso_23] + i128[0] ≥ 0)



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

    (14)    (i128[0] ≥ 0∧i389[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-1)Bound*bni_22] + [bni_22]i389[0] ≥ 0∧[1 + (-1)bso_23] + i128[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP2049'(i128, i128, i128, i128, i389, i128) → COND_JMP2049(&&(>(i128, 0), >(i389, i128)), i128, i128, i128, i128, i389, i128)
    • (i128[0] ≥ 0∧i389[0] ≥ 0 ⇒ (UIncreasing(COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])), ≥)∧[(-1)Bound*bni_20] + [bni_20]i389[0] ≥ 0∧[(-1)bso_21] ≥ 0)

  • COND_JMP2049(TRUE, i128, i128, i128, i128, i389, i128) → JMP2049'(i128, i128, i128, i128, -(i389, i128), i128)
    • (i128[0] ≥ 0∧i389[0] ≥ 0 ⇒ (UIncreasing(JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])), ≥)∧[(-1)Bound*bni_22] + [bni_22]i389[0] ≥ 0∧[1 + (-1)bso_23] + i128[0] ≥ 0)




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

POL(TRUE) = [2]   
POL(FALSE) = [3]   
POL(JMP2049'(x1, x2, x3, x4, x5, x6)) = [-1] + [2]x6 + x5 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_JMP2049(x1, x2, x3, x4, x5, x6, x7)) = [-1] + x7 + x6 + x5 + [-1]x4 + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])

The following pairs are in Pbound:

JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])
COND_JMP2049(TRUE, i128[1], i128[1], i128[1], i128[1], i389[1], i128[1]) → JMP2049'(i128[1], i128[1], i128[1], i128[1], -(i389[1], i128[1]), i128[1])

The following pairs are in P:

JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(&&(>(i128[0], 0), >(i389[0], i128[0])), i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])

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

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, FALSE)1

(76) Complex Obligation (AND)

(77) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP2049'(i128[0], i128[0], i128[0], i128[0], i389[0], i128[0]) → COND_JMP2049(i128[0] > 0 && i389[0] > i128[0], i128[0], i128[0], i128[0], i128[0], i389[0], i128[0])


The set Q consists of the following terms:
JMP2049(x0, x0, x0, x0, x1, x0)
Cond_JMP2049(TRUE, x0, x0, x0, x0, x1, x0)

(78) IDependencyGraphProof (EQUIVALENT transformation)

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

(79) TRUE

(80) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
JMP2049(x0, x0, x0, x0, x1, x0)
Cond_JMP2049(TRUE, x0, x0, x0, x0, x1, x0)

(81) IDependencyGraphProof (EQUIVALENT transformation)

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

(82) TRUE

(83) 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:
NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → Cond_NE2054(i65 > 0 && !(i65 = i65), i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
Cond_NE2054(TRUE, i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
JMP1672(i65, i65, i65) → Cond_JMP1672(i65 > 0 && !(i65 = i65), i65, i65, i65)
Cond_JMP1672(TRUE, i65, i65, i65) → NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
NE2054(i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → Cond_NE20541(i277 < i65 && i65 <= i277 && i277 > 0, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277)
Cond_NE20541(TRUE, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → JMP1672(i65, i65, i277)
JMP1672(i65, i65, i277) → Cond_JMP16721(i277 < i65 && i65 <= i277 && i65 >= 0 && !(i277 = 0), i65, i65, i277)
Cond_JMP16721(TRUE, i65, i65, i277) → JMP1672(i65, i65, i277)
NE2054(i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → Cond_NE20542(i277 > 0, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277)
Cond_NE20542(TRUE, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → JMP1672(i277, i277, 0)
JMP1672(i277, i277, i277) → Cond_JMP16722(i277 > 0, i277, i277, i277)
Cond_JMP16722(TRUE, i277, i277, i277) → JMP1672(i277, i277, 0)
The set Q consists of the following terms:
Cond_NE2054(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP1672(TRUE, x0, x0, x0)
NE2054(x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE20541(TRUE, x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
JMP1672(x0, x0, x1)
Cond_JMP16721(TRUE, x0, x0, x1)
Cond_NE20542(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP16722(TRUE, x0, x0, x0)

(84) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(85) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → Cond_NE2054(i65 > 0 && !(i65 = i65), i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
Cond_NE2054(TRUE, i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
JMP1672(i65, i65, i65) → Cond_JMP1672(i65 > 0 && !(i65 = i65), i65, i65, i65)
Cond_JMP1672(TRUE, i65, i65, i65) → NE2054(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
NE2054(i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → Cond_NE20541(i277 < i65 && i65 <= i277 && i277 > 0, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277)
Cond_NE20541(TRUE, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → JMP1672(i65, i65, i277)
JMP1672(i65, i65, i277) → Cond_JMP16721(i277 < i65 && i65 <= i277 && i65 >= 0 && !(i277 = 0), i65, i65, i277)
Cond_JMP16721(TRUE, i65, i65, i277) → JMP1672(i65, i65, i277)
NE2054(i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → Cond_NE20542(i277 > 0, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277)
Cond_NE20542(TRUE, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → JMP1672(i277, i277, 0)
JMP1672(i277, i277, i277) → Cond_JMP16722(i277 > 0, i277, i277, i277)
Cond_JMP16722(TRUE, i277, i277, i277) → JMP1672(i277, i277, 0)

The integer pair graph contains the following rules and edges:
(0): NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(i65[0] > 0 && !(i65[0] = i65[0]), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])
(1): COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])
(2): JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(i65[2] > 0 && !(i65[2] = i65[2]), i65[2], i65[2], i65[2])
(3): COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])
(4): NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(i277[4] < i65[4] && i65[4] <= i277[4] && i277[4] > 0, i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])
(5): COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5])
(6): JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(i277[6] < i65[6] && i65[6] <= i277[6] && i65[6] >= 0 && !(i277[6] = 0), i65[6], i65[6], i277[6])
(7): COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7])
(8): NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(i277[8] > 0, i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])
(9): COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0)
(10): JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(i277[10] > 0, i277[10], i277[10], i277[10])
(11): COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0)

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


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


(1) -> (4), if ((i65[1]* i65[4])∧(i65[1]* i277[4]))


(1) -> (8), if ((i65[1]* i277[8]))


(2) -> (3), if ((i65[2]* i65[3])∧(i65[2] > 0 && !(i65[2] = i65[2]) →* TRUE))


(3) -> (0), if ((i65[3]* i65[0]))


(3) -> (4), if ((i65[3]* i277[4])∧(i65[3]* i65[4]))


(3) -> (8), if ((i65[3]* i277[8]))


(4) -> (5), if ((i65[4]* i65[5])∧(i277[4] < i65[4] && i65[4] <= i277[4] && i277[4] > 0* TRUE)∧(i277[4]* i277[5]))


(5) -> (2), if ((i65[5]* i65[2])∧(i277[5]* i65[2]))


(5) -> (6), if ((i277[5]* i277[6])∧(i65[5]* i65[6]))


(5) -> (10), if ((i65[5]* i277[10])∧(i277[5]* i277[10]))


(6) -> (7), if ((i277[6]* i277[7])∧(i277[6] < i65[6] && i65[6] <= i277[6] && i65[6] >= 0 && !(i277[6] = 0) →* TRUE)∧(i65[6]* i65[7]))


(7) -> (2), if ((i277[7]* i65[2])∧(i65[7]* i65[2]))


(7) -> (6), if ((i277[7]* i277[6])∧(i65[7]* i65[6]))


(7) -> (10), if ((i277[7]* i277[10])∧(i65[7]* i277[10]))


(8) -> (9), if ((i277[8]* i277[9])∧(i277[8] > 0* TRUE))


(9) -> (2), if ((0* i65[2])∧(i277[9]* i65[2]))


(9) -> (6), if ((0* i277[6])∧(i277[9]* i65[6]))


(9) -> (10), if ((0* i277[10])∧(i277[9]* i277[10]))


(10) -> (11), if ((i277[10] > 0* TRUE)∧(i277[10]* i277[11]))


(11) -> (2), if ((0* i65[2])∧(i277[11]* i65[2]))


(11) -> (6), if ((0* i277[6])∧(i277[11]* i65[6]))


(11) -> (10), if ((i277[11]* i277[10])∧(0* i277[10]))



The set Q consists of the following terms:
Cond_NE2054(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP1672(TRUE, x0, x0, x0)
NE2054(x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE20541(TRUE, x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
JMP1672(x0, x0, x1)
Cond_JMP16721(TRUE, x0, x0, x1)
Cond_NE20542(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP16722(TRUE, x0, x0, x0)

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

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

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(i65[0] > 0 && !(i65[0] = i65[0]), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])
(1): COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])
(2): JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(i65[2] > 0 && !(i65[2] = i65[2]), i65[2], i65[2], i65[2])
(3): COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])
(4): NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(i277[4] < i65[4] && i65[4] <= i277[4] && i277[4] > 0, i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])
(5): COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5])
(6): JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(i277[6] < i65[6] && i65[6] <= i277[6] && i65[6] >= 0 && !(i277[6] = 0), i65[6], i65[6], i277[6])
(7): COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7])
(8): NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(i277[8] > 0, i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])
(9): COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0)
(10): JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(i277[10] > 0, i277[10], i277[10], i277[10])
(11): COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0)

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


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


(1) -> (4), if ((i65[1]* i65[4])∧(i65[1]* i277[4]))


(1) -> (8), if ((i65[1]* i277[8]))


(2) -> (3), if ((i65[2]* i65[3])∧(i65[2] > 0 && !(i65[2] = i65[2]) →* TRUE))


(3) -> (0), if ((i65[3]* i65[0]))


(3) -> (4), if ((i65[3]* i277[4])∧(i65[3]* i65[4]))


(3) -> (8), if ((i65[3]* i277[8]))


(4) -> (5), if ((i65[4]* i65[5])∧(i277[4] < i65[4] && i65[4] <= i277[4] && i277[4] > 0* TRUE)∧(i277[4]* i277[5]))


(5) -> (2), if ((i65[5]* i65[2])∧(i277[5]* i65[2]))


(5) -> (6), if ((i277[5]* i277[6])∧(i65[5]* i65[6]))


(5) -> (10), if ((i65[5]* i277[10])∧(i277[5]* i277[10]))


(6) -> (7), if ((i277[6]* i277[7])∧(i277[6] < i65[6] && i65[6] <= i277[6] && i65[6] >= 0 && !(i277[6] = 0) →* TRUE)∧(i65[6]* i65[7]))


(7) -> (2), if ((i277[7]* i65[2])∧(i65[7]* i65[2]))


(7) -> (6), if ((i277[7]* i277[6])∧(i65[7]* i65[6]))


(7) -> (10), if ((i277[7]* i277[10])∧(i65[7]* i277[10]))


(8) -> (9), if ((i277[8]* i277[9])∧(i277[8] > 0* TRUE))


(9) -> (2), if ((0* i65[2])∧(i277[9]* i65[2]))


(9) -> (6), if ((0* i277[6])∧(i277[9]* i65[6]))


(9) -> (10), if ((0* i277[10])∧(i277[9]* i277[10]))


(10) -> (11), if ((i277[10] > 0* TRUE)∧(i277[10]* i277[11]))


(11) -> (2), if ((0* i65[2])∧(i277[11]* i65[2]))


(11) -> (6), if ((0* i277[6])∧(i277[11]* i65[6]))


(11) -> (10), if ((i277[11]* i277[10])∧(0* i277[10]))



The set Q consists of the following terms:
Cond_NE2054(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP1672(TRUE, x0, x0, x0)
NE2054(x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE20541(TRUE, x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
JMP1672(x0, x0, x1)
Cond_JMP16721(TRUE, x0, x0, x1)
Cond_NE20542(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP16722(TRUE, x0, x0, x0)

(88) 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 NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → COND_NE2054(&&(>(i65, 0), !(=(i65, i65))), i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) the following chains were created:
  • We consider the chain NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]), COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) which results in the following constraint:

    (1)    (&&(>(i65[0], 0), !(=(i65[0], i65[0])))=TRUEi65[0]=i65[1]NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥NonInfC∧NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])∧(UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥))



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

    (2)    (>(i65[0], 0)=TRUE<(i65[0], i65[0])=TRUENE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥NonInfC∧NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])∧(UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥))


    (3)    (>(i65[0], 0)=TRUE>(i65[0], i65[0])=TRUENE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥NonInfC∧NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])≥COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])∧(UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥))



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

    (4)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



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

    (5)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



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

    (6)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



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

    (7)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



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

    (8)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



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

    (9)    (i65[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])), ≥)∧[(2)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[0] ≥ 0∧[(-1)bso_77] ≥ 0)



    We solved constraint (8) using rule (IDP_SMT_SPLIT).We solved constraint (9) using rule (IDP_SMT_SPLIT).




For Pair COND_NE2054(TRUE, i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) the following chains were created:
  • We consider the chain COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]), NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) which results in the following constraint:

    (10)    (i65[1]=i65[0]COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (11)    (COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (12)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (13)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (14)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (15)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)



  • We consider the chain COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]), NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) which results in the following constraint:

    (16)    (i65[1]=i65[4]i65[1]=i277[4]COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (17)    (COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (18)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (19)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (20)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (21)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)



  • We consider the chain COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]), NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) which results in the following constraint:

    (22)    (i65[1]=i277[8]COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (23)    (COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NonInfC∧COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])≥NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])∧(UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥))



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

    (24)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (25)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (26)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧[(-1)bso_79] ≥ 0)



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

    (27)    ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)







For Pair JMP1672'(i65, i65, i65) → COND_JMP1672(&&(>(i65, 0), !(=(i65, i65))), i65, i65, i65) the following chains were created:
  • We consider the chain JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2]), COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3]) which results in the following constraint:

    (28)    (i65[2]=i65[3]&&(>(i65[2], 0), !(=(i65[2], i65[2])))=TRUEJMP1672'(i65[2], i65[2], i65[2])≥NonInfC∧JMP1672'(i65[2], i65[2], i65[2])≥COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])∧(UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥))



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

    (29)    (>(i65[2], 0)=TRUE<(i65[2], i65[2])=TRUEJMP1672'(i65[2], i65[2], i65[2])≥NonInfC∧JMP1672'(i65[2], i65[2], i65[2])≥COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])∧(UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥))


    (30)    (>(i65[2], 0)=TRUE>(i65[2], i65[2])=TRUEJMP1672'(i65[2], i65[2], i65[2])≥NonInfC∧JMP1672'(i65[2], i65[2], i65[2])≥COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])∧(UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥))



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

    (31)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



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

    (32)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



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

    (33)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



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

    (34)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



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

    (35)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



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

    (36)    (i65[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])), ≥)∧[(-1)bni_80 + (-1)Bound*bni_80] ≥ 0∧[-3 + (-1)bso_81] + [2]i65[2] ≥ 0)



    We solved constraint (35) using rule (IDP_SMT_SPLIT).We solved constraint (36) using rule (IDP_SMT_SPLIT).




For Pair COND_JMP1672(TRUE, i65, i65, i65) → NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) the following chains were created:
  • We consider the chain COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3]), NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) which results in the following constraint:

    (37)    (i65[3]=i65[0]COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (38)    (COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (39)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (40)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (41)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (42)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)



  • We consider the chain COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3]), NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) which results in the following constraint:

    (43)    (i65[3]=i277[4]i65[3]=i65[4]COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (44)    (COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (45)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (46)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (47)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (48)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)



  • We consider the chain COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3]), NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) which results in the following constraint:

    (49)    (i65[3]=i277[8]COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (50)    (COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NonInfC∧COND_JMP1672(TRUE, i65[3], i65[3], i65[3])≥NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])∧(UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥))



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

    (51)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (52)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (53)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧[(-1)bso_83] ≥ 0)



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

    (54)    ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)







For Pair NE2054'(i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → COND_NE20541(&&(&&(<(i277, i65), <=(i65, i277)), >(i277, 0)), i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) the following chains were created:
  • We consider the chain NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]), COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5]) which results in the following constraint:

    (55)    (i65[4]=i65[5]&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0))=TRUEi277[4]=i277[5]NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])≥NonInfC∧NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])≥COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])∧(UIncreasing(COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])), ≥))



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

    (56)    (>(i277[4], 0)=TRUE<(i277[4], i65[4])=TRUE<=(i65[4], i277[4])=TRUENE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])≥NonInfC∧NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])≥COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])∧(UIncreasing(COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])), ≥))



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

    (57)    (i277[4] + [-1] ≥ 0∧i65[4] + [-1] + [-1]i277[4] ≥ 0∧i277[4] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])), ≥)∧[(2)bni_84 + (-1)Bound*bni_84] + [(-1)bni_84]i277[4] + [(-1)bni_84]i65[4] ≥ 0∧[1 + (-1)bso_85] + [-3]i277[4] + i65[4] ≥ 0)



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

    (58)    (i277[4] + [-1] ≥ 0∧i65[4] + [-1] + [-1]i277[4] ≥ 0∧i277[4] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])), ≥)∧[(2)bni_84 + (-1)Bound*bni_84] + [(-1)bni_84]i277[4] + [(-1)bni_84]i65[4] ≥ 0∧[1 + (-1)bso_85] + [-3]i277[4] + i65[4] ≥ 0)



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

    (59)    (i277[4] + [-1] ≥ 0∧i65[4] + [-1] + [-1]i277[4] ≥ 0∧i277[4] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])), ≥)∧[(2)bni_84 + (-1)Bound*bni_84] + [(-1)bni_84]i277[4] + [(-1)bni_84]i65[4] ≥ 0∧[1 + (-1)bso_85] + [-3]i277[4] + i65[4] ≥ 0)



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




For Pair COND_NE20541(TRUE, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → JMP1672'(i65, i65, i277) the following chains were created:
  • We consider the chain COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5]), JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2]) which results in the following constraint:

    (60)    (i65[5]=i65[2]i277[5]=i65[2]COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥JMP1672'(i65[5], i65[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (61)    (COND_NE20541(TRUE, i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5])≥JMP1672'(i277[5], i277[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (62)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (63)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (64)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (65)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧[(-1)bso_87] ≥ 0)



  • We consider the chain COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5]), JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6]) which results in the following constraint:

    (66)    (i277[5]=i277[6]i65[5]=i65[6]COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥JMP1672'(i65[5], i65[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (67)    (COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥JMP1672'(i65[5], i65[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (68)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (69)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (70)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (71)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_87] ≥ 0)



  • We consider the chain COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5]), JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]) which results in the following constraint:

    (72)    (i65[5]=i277[10]i277[5]=i277[10]COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5])≥JMP1672'(i65[5], i65[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (73)    (COND_NE20541(TRUE, i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5])≥NonInfC∧COND_NE20541(TRUE, i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5], i277[5])≥JMP1672'(i277[5], i277[5], i277[5])∧(UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥))



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

    (74)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (75)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (76)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧[(-1)bso_87] ≥ 0)



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

    (77)    ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧[(-1)bso_87] ≥ 0)







For Pair JMP1672'(i65, i65, i277) → COND_JMP16721(&&(&&(&&(<(i277, i65), <=(i65, i277)), >=(i65, 0)), !(=(i277, 0))), i65, i65, i277) the following chains were created:
  • We consider the chain JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6]), COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7]) which results in the following constraint:

    (78)    (i277[6]=i277[7]&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0)))=TRUEi65[6]=i65[7]JMP1672'(i65[6], i65[6], i277[6])≥NonInfC∧JMP1672'(i65[6], i65[6], i277[6])≥COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])∧(UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥))



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

    (79)    (>=(i65[6], 0)=TRUE<(i277[6], i65[6])=TRUE<=(i65[6], i277[6])=TRUE<(i277[6], 0)=TRUEJMP1672'(i65[6], i65[6], i277[6])≥NonInfC∧JMP1672'(i65[6], i65[6], i277[6])≥COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])∧(UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥))


    (80)    (>=(i65[6], 0)=TRUE<(i277[6], i65[6])=TRUE<=(i65[6], i277[6])=TRUE>(i277[6], 0)=TRUEJMP1672'(i65[6], i65[6], i277[6])≥NonInfC∧JMP1672'(i65[6], i65[6], i277[6])≥COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])∧(UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥))



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

    (81)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧[-1] + [-1]i277[6] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



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

    (82)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧i277[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



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

    (83)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧[-1] + [-1]i277[6] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



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

    (84)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧i277[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



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

    (85)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧[-1] + [-1]i277[6] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



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

    (86)    (i65[6] ≥ 0∧i65[6] + [-1] + [-1]i277[6] ≥ 0∧i277[6] + [-1]i65[6] ≥ 0∧i277[6] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])), ≥)∧[(-1)bni_88 + (-1)Bound*bni_88] + [(2)bni_88]i277[6] + [(-2)bni_88]i65[6] ≥ 0∧[(-1)bso_89] ≥ 0)



    We solved constraint (85) using rule (IDP_SMT_SPLIT).We solved constraint (86) using rule (IDP_SMT_SPLIT).




For Pair COND_JMP16721(TRUE, i65, i65, i277) → JMP1672'(i65, i65, i277) the following chains were created:
  • We consider the chain COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7]), JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2]) which results in the following constraint:

    (87)    (i277[7]=i65[2]i65[7]=i65[2]COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥JMP1672'(i65[7], i65[7], i277[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (88)    (COND_JMP16721(TRUE, i65[7], i65[7], i65[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i65[7])≥JMP1672'(i65[7], i65[7], i65[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (89)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (90)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (91)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (92)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧[(-1)bso_91] ≥ 0)



  • We consider the chain COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7]), JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6]) which results in the following constraint:

    (93)    (i277[7]=i277[6]i65[7]=i65[6]COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥JMP1672'(i65[7], i65[7], i277[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (94)    (COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥JMP1672'(i65[7], i65[7], i277[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (95)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (96)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (97)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (98)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_91] ≥ 0)



  • We consider the chain COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7]), JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]) which results in the following constraint:

    (99)    (i277[7]=i277[10]i65[7]=i277[10]COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i277[7])≥JMP1672'(i65[7], i65[7], i277[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (100)    (COND_JMP16721(TRUE, i65[7], i65[7], i65[7])≥NonInfC∧COND_JMP16721(TRUE, i65[7], i65[7], i65[7])≥JMP1672'(i65[7], i65[7], i65[7])∧(UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥))



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

    (101)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (102)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (103)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧[(-1)bso_91] ≥ 0)



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

    (104)    ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧[(-1)bso_91] ≥ 0)







For Pair NE2054'(i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → COND_NE20542(>(i277, 0), i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) the following chains were created:
  • We consider the chain NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]), COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0) which results in the following constraint:

    (105)    (i277[8]=i277[9]>(i277[8], 0)=TRUENE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥NonInfC∧NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])∧(UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥))



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

    (106)    (>(i277[8], 0)=TRUENE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥NonInfC∧NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])∧(UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥))



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

    (107)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥)∧[(2)bni_92 + (-1)Bound*bni_92] + [(-2)bni_92]i277[8] ≥ 0∧[3 + (-1)bso_93] ≥ 0)



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

    (108)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥)∧[(2)bni_92 + (-1)Bound*bni_92] + [(-2)bni_92]i277[8] ≥ 0∧[3 + (-1)bso_93] ≥ 0)



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

    (109)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥)∧[(2)bni_92 + (-1)Bound*bni_92] + [(-2)bni_92]i277[8] ≥ 0∧[3 + (-1)bso_93] ≥ 0)



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

    (110)    (i277[8] ≥ 0 ⇒ (UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥)∧[(-1)Bound*bni_92] + [(-2)bni_92]i277[8] ≥ 0∧[3 + (-1)bso_93] ≥ 0)







For Pair COND_NE20542(TRUE, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → JMP1672'(i277, i277, 0) the following chains were created:
  • We consider the chain NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]), COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0), JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2]) which results in the following constraint:

    (111)    (i277[8]=i277[9]>(i277[8], 0)=TRUE0=i65[2]i277[9]=i65[2]COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥NonInfC∧COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥JMP1672'(i277[9], i277[9], 0)∧(UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥))



    We solved constraint (111) using rules (I), (II), (III), (IDP_CONSTANT_FOLD).
  • We consider the chain NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]), COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0), JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6]) which results in the following constraint:

    (112)    (i277[8]=i277[9]>(i277[8], 0)=TRUE0=i277[6]i277[9]=i65[6]COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥NonInfC∧COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥JMP1672'(i277[9], i277[9], 0)∧(UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥))



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

    (113)    (>(i277[8], 0)=TRUECOND_NE20542(TRUE, i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥NonInfC∧COND_NE20542(TRUE, i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])≥JMP1672'(i277[8], i277[8], 0)∧(UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥))



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

    (114)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥)∧[(-1)bni_94 + (-1)Bound*bni_94] + [(-2)bni_94]i277[8] ≥ 0∧[(-1)bso_95] ≥ 0)



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

    (115)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥)∧[(-1)bni_94 + (-1)Bound*bni_94] + [(-2)bni_94]i277[8] ≥ 0∧[(-1)bso_95] ≥ 0)



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

    (116)    (i277[8] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥)∧[(-1)bni_94 + (-1)Bound*bni_94] + [(-2)bni_94]i277[8] ≥ 0∧[(-1)bso_95] ≥ 0)



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

    (117)    (i277[8] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥)∧[(-3)bni_94 + (-1)Bound*bni_94] + [(-2)bni_94]i277[8] ≥ 0∧[(-1)bso_95] ≥ 0)



  • We consider the chain NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]), COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0), JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]) which results in the following constraint:

    (118)    (i277[8]=i277[9]>(i277[8], 0)=TRUE0=i277[10]i277[9]=i277[10]COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥NonInfC∧COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9])≥JMP1672'(i277[9], i277[9], 0)∧(UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥))



    We solved constraint (118) using rules (I), (II), (III), (IDP_CONSTANT_FOLD).




For Pair JMP1672'(i277, i277, i277) → COND_JMP16722(>(i277, 0), i277, i277, i277) the following chains were created:
  • We consider the chain JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]), COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0) which results in the following constraint:

    (119)    (>(i277[10], 0)=TRUEi277[10]=i277[11]JMP1672'(i277[10], i277[10], i277[10])≥NonInfC∧JMP1672'(i277[10], i277[10], i277[10])≥COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])∧(UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥))



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

    (120)    (>(i277[10], 0)=TRUEJMP1672'(i277[10], i277[10], i277[10])≥NonInfC∧JMP1672'(i277[10], i277[10], i277[10])≥COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])∧(UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥))



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

    (121)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥)∧[(-1)bni_96 + (-1)Bound*bni_96] ≥ 0∧[(-1)bso_97] + i277[10] ≥ 0)



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

    (122)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥)∧[(-1)bni_96 + (-1)Bound*bni_96] ≥ 0∧[(-1)bso_97] + i277[10] ≥ 0)



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

    (123)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥)∧[(-1)bni_96 + (-1)Bound*bni_96] ≥ 0∧[(-1)bso_97] + i277[10] ≥ 0)



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

    (124)    (i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥)∧[(-1)bni_96 + (-1)Bound*bni_96] ≥ 0∧[1 + (-1)bso_97] + i277[10] ≥ 0)







For Pair COND_JMP16722(TRUE, i277, i277, i277) → JMP1672'(i277, i277, 0) the following chains were created:
  • We consider the chain JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]), COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0), JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2]) which results in the following constraint:

    (125)    (>(i277[10], 0)=TRUEi277[10]=i277[11]0=i65[2]i277[11]=i65[2]COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥NonInfC∧COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥JMP1672'(i277[11], i277[11], 0)∧(UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥))



    We solved constraint (125) using rules (I), (II), (III), (IDP_CONSTANT_FOLD).
  • We consider the chain JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]), COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0), JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6]) which results in the following constraint:

    (126)    (>(i277[10], 0)=TRUEi277[10]=i277[11]0=i277[6]i277[11]=i65[6]COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥NonInfC∧COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥JMP1672'(i277[11], i277[11], 0)∧(UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥))



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

    (127)    (>(i277[10], 0)=TRUECOND_JMP16722(TRUE, i277[10], i277[10], i277[10])≥NonInfC∧COND_JMP16722(TRUE, i277[10], i277[10], i277[10])≥JMP1672'(i277[10], i277[10], 0)∧(UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥))



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

    (128)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥)∧[(-1)bni_98 + (-1)Bound*bni_98] + [(-1)bni_98]i277[10] ≥ 0∧[(-1)bso_99] + i277[10] ≥ 0)



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

    (129)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥)∧[(-1)bni_98 + (-1)Bound*bni_98] + [(-1)bni_98]i277[10] ≥ 0∧[(-1)bso_99] + i277[10] ≥ 0)



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

    (130)    (i277[10] + [-1] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥)∧[(-1)bni_98 + (-1)Bound*bni_98] + [(-1)bni_98]i277[10] ≥ 0∧[(-1)bso_99] + i277[10] ≥ 0)



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

    (131)    (i277[10] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥)∧[(-2)bni_98 + (-1)Bound*bni_98] + [(-1)bni_98]i277[10] ≥ 0∧[1 + (-1)bso_99] + i277[10] ≥ 0)



  • We consider the chain JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]), COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0), JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10]) which results in the following constraint:

    (132)    (>(i277[10], 0)=TRUEi277[10]=i277[11]i277[11]=i277[10]10=i277[10]1COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥NonInfC∧COND_JMP16722(TRUE, i277[11], i277[11], i277[11])≥JMP1672'(i277[11], i277[11], 0)∧(UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥))



    We solved constraint (132) using rules (I), (II), (III), (IDP_CONSTANT_FOLD).




To summarize, we get the following constraints P for the following pairs.
  • NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → COND_NE2054(&&(>(i65, 0), !(=(i65, i65))), i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)

  • COND_NE2054(TRUE, i65, i65, i65, i65, i65, i65, i65, i65, i65, i65) → NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
    • ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)
    • ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)
    • ((UIncreasing(NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])), ≥)∧0 = 0∧[(-1)bso_79] ≥ 0)

  • JMP1672'(i65, i65, i65) → COND_JMP1672(&&(>(i65, 0), !(=(i65, i65))), i65, i65, i65)

  • COND_JMP1672(TRUE, i65, i65, i65) → NE2054'(i65, i65, i65, i65, i65, i65, i65, i65, i65, i65)
    • ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)
    • ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)
    • ((UIncreasing(NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])), ≥)∧0 = 0∧[(-1)bso_83] ≥ 0)

  • NE2054'(i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → COND_NE20541(&&(&&(<(i277, i65), <=(i65, i277)), >(i277, 0)), i65, i65, i277, i277, i65, i277, i65, i277, i65, i277)

  • COND_NE20541(TRUE, i65, i65, i277, i277, i65, i277, i65, i277, i65, i277) → JMP1672'(i65, i65, i277)
    • ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧[(-1)bso_87] ≥ 0)
    • ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_87] ≥ 0)
    • ((UIncreasing(JMP1672'(i65[5], i65[5], i277[5])), ≥)∧0 = 0∧[(-1)bso_87] ≥ 0)

  • JMP1672'(i65, i65, i277) → COND_JMP16721(&&(&&(&&(<(i277, i65), <=(i65, i277)), >=(i65, 0)), !(=(i277, 0))), i65, i65, i277)

  • COND_JMP16721(TRUE, i65, i65, i277) → JMP1672'(i65, i65, i277)
    • ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧[(-1)bso_91] ≥ 0)
    • ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧0 = 0∧[(-1)bso_91] ≥ 0)
    • ((UIncreasing(JMP1672'(i65[7], i65[7], i277[7])), ≥)∧0 = 0∧[(-1)bso_91] ≥ 0)

  • NE2054'(i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → COND_NE20542(>(i277, 0), i277, i277, i277, i277, i277, i277, i277, i277, i277, i277)
    • (i277[8] ≥ 0 ⇒ (UIncreasing(COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])), ≥)∧[(-1)Bound*bni_92] + [(-2)bni_92]i277[8] ≥ 0∧[3 + (-1)bso_93] ≥ 0)

  • COND_NE20542(TRUE, i277, i277, i277, i277, i277, i277, i277, i277, i277, i277) → JMP1672'(i277, i277, 0)
    • (i277[8] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[9], i277[9], 0)), ≥)∧[(-3)bni_94 + (-1)Bound*bni_94] + [(-2)bni_94]i277[8] ≥ 0∧[(-1)bso_95] ≥ 0)

  • JMP1672'(i277, i277, i277) → COND_JMP16722(>(i277, 0), i277, i277, i277)
    • (i277[10] ≥ 0 ⇒ (UIncreasing(COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])), ≥)∧[(-1)bni_96 + (-1)Bound*bni_96] ≥ 0∧[1 + (-1)bso_97] + i277[10] ≥ 0)

  • COND_JMP16722(TRUE, i277, i277, i277) → JMP1672'(i277, i277, 0)
    • (i277[10] ≥ 0 ⇒ (UIncreasing(JMP1672'(i277[11], i277[11], 0)), ≥)∧[(-2)bni_98 + (-1)Bound*bni_98] + [(-1)bni_98]i277[10] ≥ 0∧[1 + (-1)bso_99] + i277[10] ≥ 0)




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

POL(TRUE) = [1]   
POL(FALSE) = 0   
POL(NE2054'(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10)) = [2] + [-1]x10 + [-1]x9 + [-1]x8 + [-1]x7 + [-1]x6 + [-1]x5 + x4 + x3 + [2]x1   
POL(COND_NE2054(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11)) = [2] + [2]x11 + x10 + x8 + [-1]x7 + [-1]x6 + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(JMP1672'(x1, x2, x3)) = [-1] + [2]x3 + [-1]x2 + [-1]x1   
POL(COND_JMP1672(x1, x2, x3, x4)) = [2] + [-1]x3 + [-1]x2   
POL(COND_NE20541(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11)) = [-1]x10 + [-1]x9 + [-1]x8 + [2]x7 + [-1]x6 + [-1]x5 + [2]x4 + x2 + [-1]x1   
POL(<(x1, x2)) = [-1]   
POL(<=(x1, x2)) = [-1]   
POL(COND_JMP16721(x1, x2, x3, x4)) = [-1] + [2]x4 + [-1]x3 + [-1]x2   
POL(>=(x1, x2)) = [-1]   
POL(COND_NE20542(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11)) = [-1] + [-1]x11 + [-1]x10 + [-1]x9 + [-1]x8 + [2]x7 + [2]x6 + x5 + [-1]x4 + [-1]x3 + [-1]x2   
POL(COND_JMP16722(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + x2   

The following pairs are in P>:

NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])
JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])
NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])
JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])
NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(>(i277[8], 0), i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])
JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])
COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0)

The following pairs are in Pbound:

NE2054'(i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0]) → COND_NE2054(&&(>(i65[0], 0), !(=(i65[0], i65[0]))), i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0], i65[0])
JMP1672'(i65[2], i65[2], i65[2]) → COND_JMP1672(&&(>(i65[2], 0), !(=(i65[2], i65[2]))), i65[2], i65[2], i65[2])
NE2054'(i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4]) → COND_NE20541(&&(&&(<(i277[4], i65[4]), <=(i65[4], i277[4])), >(i277[4], 0)), i65[4], i65[4], i277[4], i277[4], i65[4], i277[4], i65[4], i277[4], i65[4], i277[4])
JMP1672'(i65[6], i65[6], i277[6]) → COND_JMP16721(&&(&&(&&(<(i277[6], i65[6]), <=(i65[6], i277[6])), >=(i65[6], 0)), !(=(i277[6], 0))), i65[6], i65[6], i277[6])
JMP1672'(i277[10], i277[10], i277[10]) → COND_JMP16722(>(i277[10], 0), i277[10], i277[10], i277[10])

The following pairs are in P:

COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])
COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])
COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5])
COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7])
COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0)

There are no usable rules.

(89) Complex Obligation (AND)

(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 contains the following rules and edges:
(1): COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])
(3): COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])
(5): COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5])
(7): COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7])
(9): COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0)


The set Q consists of the following terms:
Cond_NE2054(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP1672(TRUE, x0, x0, x0)
NE2054(x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE20541(TRUE, x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
JMP1672(x0, x0, x1)
Cond_JMP16721(TRUE, x0, x0, x1)
Cond_NE20542(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP16722(TRUE, x0, x0, x0)

(91) IDependencyGraphProof (EQUIVALENT transformation)

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

(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:
(1): COND_NE2054(TRUE, i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1]) → NE2054'(i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1], i65[1])
(3): COND_JMP1672(TRUE, i65[3], i65[3], i65[3]) → NE2054'(i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3], i65[3])
(5): COND_NE20541(TRUE, i65[5], i65[5], i277[5], i277[5], i65[5], i277[5], i65[5], i277[5], i65[5], i277[5]) → JMP1672'(i65[5], i65[5], i277[5])
(7): COND_JMP16721(TRUE, i65[7], i65[7], i277[7]) → JMP1672'(i65[7], i65[7], i277[7])
(8): NE2054'(i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8]) → COND_NE20542(i277[8] > 0, i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8], i277[8])
(9): COND_NE20542(TRUE, i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9], i277[9]) → JMP1672'(i277[9], i277[9], 0)
(11): COND_JMP16722(TRUE, i277[11], i277[11], i277[11]) → JMP1672'(i277[11], i277[11], 0)

(1) -> (8), if ((i65[1]* i277[8]))


(3) -> (8), if ((i65[3]* i277[8]))


(8) -> (9), if ((i277[8]* i277[9])∧(i277[8] > 0* TRUE))



The set Q consists of the following terms:
Cond_NE2054(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP1672(TRUE, x0, x0, x0)
NE2054(x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE20541(TRUE, x0, x0, x1, x1, x0, x1, x0, x1, x0, x1)
JMP1672(x0, x0, x1)
Cond_JMP16721(TRUE, x0, x0, x1)
Cond_NE20542(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_JMP16722(TRUE, x0, x0, x0)

(94) IDependencyGraphProof (EQUIVALENT transformation)

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

(95) TRUE

(96) 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:
JMP1351(i65, i65, i65, i65, i96, i65) → Cond_JMP1351(i65 > 0 && i96 > i65, i65, i65, i65, i65, i96, i65)
Cond_JMP1351(TRUE, i65, i65, i65, i65, i96, i65) → JMP1351(i65, i65, i65, i65, i96 - i65, i65)
The set Q consists of the following terms:
JMP1351(x0, x0, x0, x0, x1, x0)
Cond_JMP1351(TRUE, x0, x0, x0, x0, x1, x0)

(97) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(98) Obligation:

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


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
JMP1351(i65, i65, i65, i65, i96, i65) → Cond_JMP1351(i65 > 0 && i96 > i65, i65, i65, i65, i65, i96, i65)
Cond_JMP1351(TRUE, i65, i65, i65, i65, i96, i65) → JMP1351(i65, i65, i65, i65, i96 - i65, i65)

The integer pair graph contains the following rules and edges:
(0): JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(i65[0] > 0 && i96[0] > i65[0], i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])
(1): COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], i96[1] - i65[1], i65[1])

(0) -> (1), if ((i65[0]* i65[1])∧(i65[0] > 0 && i96[0] > i65[0]* TRUE)∧(i96[0]* i96[1]))


(1) -> (0), if ((i96[1] - i65[1]* i96[0])∧(i65[1]* i65[0]))



The set Q consists of the following terms:
JMP1351(x0, x0, x0, x0, x1, x0)
Cond_JMP1351(TRUE, x0, x0, x0, x0, x1, x0)

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

(100) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(i65[0] > 0 && i96[0] > i65[0], i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])
(1): COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], i96[1] - i65[1], i65[1])

(0) -> (1), if ((i65[0]* i65[1])∧(i65[0] > 0 && i96[0] > i65[0]* TRUE)∧(i96[0]* i96[1]))


(1) -> (0), if ((i96[1] - i65[1]* i96[0])∧(i65[1]* i65[0]))



The set Q consists of the following terms:
JMP1351(x0, x0, x0, x0, x1, x0)
Cond_JMP1351(TRUE, x0, x0, x0, x0, x1, x0)

(101) 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 JMP1351'(i65, i65, i65, i65, i96, i65) → COND_JMP1351(&&(>(i65, 0), >(i96, i65)), i65, i65, i65, i65, i96, i65) the following chains were created:
  • We consider the chain JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]), COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1]) which results in the following constraint:

    (1)    (i65[0]=i65[1]&&(>(i65[0], 0), >(i96[0], i65[0]))=TRUEi96[0]=i96[1]JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥NonInfC∧JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])∧(UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥))



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

    (2)    (>(i65[0], 0)=TRUE>(i96[0], i65[0])=TRUEJMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥NonInfC∧JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])∧(UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥))



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

    (3)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[-1 + (-1)bso_21] + i65[0] ≥ 0)



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

    (4)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[-1 + (-1)bso_21] + i65[0] ≥ 0)



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

    (5)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[-1 + (-1)bso_21] + i65[0] ≥ 0)



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

    (6)    (i65[0] ≥ 0∧i96[0] + [-2] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(-2)bni_20 + (-1)Bound*bni_20] + [(-1)bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)



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

    (7)    (i65[0] ≥ 0∧i96[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(2)bni_20 + (-1)Bound*bni_20] + [bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)







For Pair COND_JMP1351(TRUE, i65, i65, i65, i65, i96, i65) → JMP1351'(i65, i65, i65, i65, -(i96, i65), i65) the following chains were created:
  • We consider the chain JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]), COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1]), JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) which results in the following constraint:

    (8)    (i65[0]=i65[1]&&(>(i65[0], 0), >(i96[0], i65[0]))=TRUEi96[0]=i96[1]-(i96[1], i65[1])=i96[0]1i65[1]=i65[0]1COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1])≥NonInfC∧COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1])≥JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])∧(UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥))



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

    (9)    (>(i65[0], 0)=TRUE>(i96[0], i65[0])=TRUECOND_JMP1351(TRUE, i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥NonInfC∧COND_JMP1351(TRUE, i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])≥JMP1351'(i65[0], i65[0], i65[0], i65[0], -(i96[0], i65[0]), i65[0])∧(UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥))



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

    (10)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-2)bni_22]i65[0] + [(2)bni_22]i96[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)



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

    (11)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-2)bni_22]i65[0] + [(2)bni_22]i96[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)



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

    (12)    (i65[0] + [-1] ≥ 0∧i96[0] + [-1] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[(-1)bni_22 + (-1)Bound*bni_22] + [(-2)bni_22]i65[0] + [(2)bni_22]i96[0] ≥ 0∧[(-1)bso_23] + i65[0] ≥ 0)



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

    (13)    (i65[0] ≥ 0∧i96[0] + [-2] + [-1]i65[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[(-3)bni_22 + (-1)Bound*bni_22] + [(-2)bni_22]i65[0] + [(2)bni_22]i96[0] ≥ 0∧[1 + (-1)bso_23] + i65[0] ≥ 0)



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

    (14)    (i65[0] ≥ 0∧i96[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[bni_22 + (-1)Bound*bni_22] + [(2)bni_22]i96[0] ≥ 0∧[1 + (-1)bso_23] + i65[0] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • JMP1351'(i65, i65, i65, i65, i96, i65) → COND_JMP1351(&&(>(i65, 0), >(i96, i65)), i65, i65, i65, i65, i96, i65)
    • (i65[0] ≥ 0∧i96[0] ≥ 0 ⇒ (UIncreasing(COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])), ≥)∧[(2)bni_20 + (-1)Bound*bni_20] + [bni_20]i65[0] + [(2)bni_20]i96[0] ≥ 0∧[(-1)bso_21] + i65[0] ≥ 0)

  • COND_JMP1351(TRUE, i65, i65, i65, i65, i96, i65) → JMP1351'(i65, i65, i65, i65, -(i96, i65), i65)
    • (i65[0] ≥ 0∧i96[0] ≥ 0 ⇒ (UIncreasing(JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])), ≥)∧[bni_22 + (-1)Bound*bni_22] + [(2)bni_22]i96[0] ≥ 0∧[1 + (-1)bso_23] + i65[0] ≥ 0)




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

POL(TRUE) = [1]   
POL(FALSE) = [1]   
POL(JMP1351'(x1, x2, x3, x4, x5, x6)) = [-1] + [-1]x6 + [2]x5 + [-1]x3 + [-1]x2 + [2]x1   
POL(COND_JMP1351(x1, x2, x3, x4, x5, x6, x7)) = [2]x6 + [-1]x5 + [-1]x4 + [-1]x1   
POL(&&(x1, x2)) = 0   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])

The following pairs are in Pbound:

JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])
COND_JMP1351(TRUE, i65[1], i65[1], i65[1], i65[1], i96[1], i65[1]) → JMP1351'(i65[1], i65[1], i65[1], i65[1], -(i96[1], i65[1]), i65[1])

The following pairs are in P:

JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(&&(>(i65[0], 0), >(i96[0], i65[0])), i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])

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

(102) Complex Obligation (AND)

(103) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): JMP1351'(i65[0], i65[0], i65[0], i65[0], i96[0], i65[0]) → COND_JMP1351(i65[0] > 0 && i96[0] > i65[0], i65[0], i65[0], i65[0], i65[0], i96[0], i65[0])


The set Q consists of the following terms:
JMP1351(x0, x0, x0, x0, x1, x0)
Cond_JMP1351(TRUE, x0, x0, x0, x0, x1, x0)

(104) IDependencyGraphProof (EQUIVALENT transformation)

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

(105) TRUE

(106) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
JMP1351(x0, x0, x0, x0, x1, x0)
Cond_JMP1351(TRUE, x0, x0, x0, x0, x1, x0)

(107) IDependencyGraphProof (EQUIVALENT transformation)

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

(108) TRUE

(109) 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:
NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → Cond_NE1240(i128 > 0 && !(i128 = i128), i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
Cond_NE1240(TRUE, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
Load889(i128, i128, i128, i128) → Cond_Load889(i128 > 0 && !(i128 = i128), i128, i128, i128, i128)
Cond_Load889(TRUE, i128, i128, i128, i128) → NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
NE1240(i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → Cond_NE12401(i65 > 0 && i65 < i128 && i128 <= i65, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65)
Cond_NE12401(TRUE, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → Load889(i128, i65, i128, i65)
Load889(i128, i65, i128, i65) → Cond_Load8891(i65 > 0 && i65 < i128 && i128 <= i65, i128, i65, i128, i65)
Cond_Load8891(TRUE, i128, i65, i128, i65) → Load889(i128, i65, i128, i65)
The set Q consists of the following terms:
Cond_NE1240(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_Load889(TRUE, x0, x0, x0, x0)
NE1240(x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE12401(TRUE, x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Load889(x0, x1, x0, x1)
Cond_Load8891(TRUE, x0, x1, x0, x1)

(110) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

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

Boolean, Integer


The ITRS R consists of the following rules:
NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → Cond_NE1240(i128 > 0 && !(i128 = i128), i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
Cond_NE1240(TRUE, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
Load889(i128, i128, i128, i128) → Cond_Load889(i128 > 0 && !(i128 = i128), i128, i128, i128, i128)
Cond_Load889(TRUE, i128, i128, i128, i128) → NE1240(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)
NE1240(i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → Cond_NE12401(i65 > 0 && i65 < i128 && i128 <= i65, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65)
Cond_NE12401(TRUE, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → Load889(i128, i65, i128, i65)
Load889(i128, i65, i128, i65) → Cond_Load8891(i65 > 0 && i65 < i128 && i128 <= i65, i128, i65, i128, i65)
Cond_Load8891(TRUE, i128, i65, i128, i65) → Load889(i128, i65, i128, i65)

The integer pair graph contains the following rules and edges:
(0): NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(i128[0] > 0 && !(i128[0] = i128[0]), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])
(1): COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])
(2): LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(i128[2] > 0 && !(i128[2] = i128[2]), i128[2], i128[2], i128[2], i128[2])
(3): COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])
(4): NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(i65[4] > 0 && i65[4] < i128[4] && i128[4] <= i65[4], i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])
(5): COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5])
(6): LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(i65[6] > 0 && i65[6] < i128[6] && i128[6] <= i65[6], i128[6], i65[6], i128[6], i65[6])
(7): COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7])

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


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


(1) -> (4), if ((i128[1]* i128[4])∧(i128[1]* i65[4]))


(2) -> (3), if ((i128[2] > 0 && !(i128[2] = i128[2]) →* TRUE)∧(i128[2]* i128[3]))


(3) -> (0), if ((i128[3]* i128[0]))


(3) -> (4), if ((i128[3]* i65[4])∧(i128[3]* i128[4]))


(4) -> (5), if ((i65[4]* i65[5])∧(i65[4] > 0 && i65[4] < i128[4] && i128[4] <= i65[4]* TRUE)∧(i128[4]* i128[5]))


(5) -> (2), if ((i128[5]* i128[2])∧(i65[5]* i128[2]))


(5) -> (6), if ((i128[5]* i128[6])∧(i65[5]* i65[6]))


(6) -> (7), if ((i128[6]* i128[7])∧(i65[6] > 0 && i65[6] < i128[6] && i128[6] <= i65[6]* TRUE)∧(i65[6]* i65[7]))


(7) -> (2), if ((i128[7]* i128[2])∧(i65[7]* i128[2]))


(7) -> (6), if ((i65[7]* i65[6])∧(i128[7]* i128[6]))



The set Q consists of the following terms:
Cond_NE1240(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_Load889(TRUE, x0, x0, x0, x0)
NE1240(x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE12401(TRUE, x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Load889(x0, x1, x0, x1)
Cond_Load8891(TRUE, x0, x1, x0, x1)

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

(113) Obligation:

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


The following domains are used:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(i128[0] > 0 && !(i128[0] = i128[0]), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])
(1): COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])
(2): LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(i128[2] > 0 && !(i128[2] = i128[2]), i128[2], i128[2], i128[2], i128[2])
(3): COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])
(4): NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(i65[4] > 0 && i65[4] < i128[4] && i128[4] <= i65[4], i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])
(5): COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5])
(6): LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(i65[6] > 0 && i65[6] < i128[6] && i128[6] <= i65[6], i128[6], i65[6], i128[6], i65[6])
(7): COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7])

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


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


(1) -> (4), if ((i128[1]* i128[4])∧(i128[1]* i65[4]))


(2) -> (3), if ((i128[2] > 0 && !(i128[2] = i128[2]) →* TRUE)∧(i128[2]* i128[3]))


(3) -> (0), if ((i128[3]* i128[0]))


(3) -> (4), if ((i128[3]* i65[4])∧(i128[3]* i128[4]))


(4) -> (5), if ((i65[4]* i65[5])∧(i65[4] > 0 && i65[4] < i128[4] && i128[4] <= i65[4]* TRUE)∧(i128[4]* i128[5]))


(5) -> (2), if ((i128[5]* i128[2])∧(i65[5]* i128[2]))


(5) -> (6), if ((i128[5]* i128[6])∧(i65[5]* i65[6]))


(6) -> (7), if ((i128[6]* i128[7])∧(i65[6] > 0 && i65[6] < i128[6] && i128[6] <= i65[6]* TRUE)∧(i65[6]* i65[7]))


(7) -> (2), if ((i128[7]* i128[2])∧(i65[7]* i128[2]))


(7) -> (6), if ((i65[7]* i65[6])∧(i128[7]* i128[6]))



The set Q consists of the following terms:
Cond_NE1240(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_Load889(TRUE, x0, x0, x0, x0)
NE1240(x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE12401(TRUE, x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Load889(x0, x1, x0, x1)
Cond_Load8891(TRUE, x0, x1, x0, x1)

(114) 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 NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → COND_NE1240(&&(>(i128, 0), !(=(i128, i128))), i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) the following chains were created:
  • We consider the chain COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]), NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]), COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) which results in the following constraint:

    (1)    (i128[1]=i128[0]i128[0]=i128[1]1&&(>(i128[0], 0), !(=(i128[0], i128[0])))=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))



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

    (2)    (>(i128[0], 0)=TRUE<(i128[0], i128[0])=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))


    (3)    (>(i128[0], 0)=TRUE>(i128[0], i128[0])=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))



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

    (4)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (5)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (6)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (7)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (8)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (9)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



    We solved constraint (8) using rule (IDP_SMT_SPLIT).We solved constraint (9) using rule (IDP_SMT_SPLIT).
  • We consider the chain COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]), NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]), COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) which results in the following constraint:

    (10)    (i128[3]=i128[0]i128[0]=i128[1]&&(>(i128[0], 0), !(=(i128[0], i128[0])))=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))



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

    (11)    (>(i128[0], 0)=TRUE<(i128[0], i128[0])=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))


    (12)    (>(i128[0], 0)=TRUE>(i128[0], i128[0])=TRUENE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥))



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

    (13)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (14)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (15)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (16)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (17)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



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

    (18)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])), ≥)∧[(-1)bni_64 + (-1)Bound*bni_64] + [(-11)bni_64]i128[0] ≥ 0∧[-1 + (-1)bso_65] ≥ 0)



    We solved constraint (17) using rule (IDP_SMT_SPLIT).We solved constraint (18) using rule (IDP_SMT_SPLIT).




For Pair COND_NE1240(TRUE, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) the following chains were created:
  • We consider the chain NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]), COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]), NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) which results in the following constraint:

    (19)    (i128[0]=i128[1]&&(>(i128[0], 0), !(=(i128[0], i128[0])))=TRUEi128[1]=i128[0]1COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])≥NonInfC∧COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])≥NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))



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

    (20)    (>(i128[0], 0)=TRUE<(i128[0], i128[0])=TRUECOND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧COND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))


    (21)    (>(i128[0], 0)=TRUE>(i128[0], i128[0])=TRUECOND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧COND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))



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

    (22)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (23)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (24)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (25)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (26)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (27)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



    We solved constraint (26) using rule (IDP_SMT_SPLIT).We solved constraint (27) using rule (IDP_SMT_SPLIT).
  • We consider the chain NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]), COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]), NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) which results in the following constraint:

    (28)    (i128[0]=i128[1]&&(>(i128[0], 0), !(=(i128[0], i128[0])))=TRUEi128[1]=i128[4]i128[1]=i65[4]COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])≥NonInfC∧COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])≥NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))



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

    (29)    (>(i128[0], 0)=TRUE<(i128[0], i128[0])=TRUECOND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧COND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))


    (30)    (>(i128[0], 0)=TRUE>(i128[0], i128[0])=TRUECOND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NonInfC∧COND_NE1240(TRUE, i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])≥NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])∧(UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥))



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

    (31)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (32)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (33)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (34)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (35)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



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

    (36)    (i128[0] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])), ≥)∧[(-1)bni_66 + (-1)Bound*bni_66] + [(-11)bni_66]i128[0] ≥ 0∧[(-1)bso_67] ≥ 0)



    We solved constraint (35) using rule (IDP_SMT_SPLIT).We solved constraint (36) using rule (IDP_SMT_SPLIT).




For Pair LOAD889(i128, i128, i128, i128) → COND_LOAD889(&&(>(i128, 0), !(=(i128, i128))), i128, i128, i128, i128) the following chains were created:
  • We consider the chain COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]), LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]), COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]) which results in the following constraint:

    (37)    (i128[5]=i128[2]i65[5]=i128[2]&&(>(i128[2], 0), !(=(i128[2], i128[2])))=TRUEi128[2]=i128[3]LOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))



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

    (38)    (>(i128[2], 0)=TRUE<(i128[2], i128[2])=TRUELOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))


    (39)    (>(i128[2], 0)=TRUE>(i128[2], i128[2])=TRUELOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))



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

    (40)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (41)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (42)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (43)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (44)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (45)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



    We solved constraint (44) using rule (IDP_SMT_SPLIT).We solved constraint (45) using rule (IDP_SMT_SPLIT).
  • We consider the chain COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]), LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]), COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]) which results in the following constraint:

    (46)    (i128[7]=i128[2]i65[7]=i128[2]&&(>(i128[2], 0), !(=(i128[2], i128[2])))=TRUEi128[2]=i128[3]LOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))



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

    (47)    (>(i128[2], 0)=TRUE<(i128[2], i128[2])=TRUELOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))


    (48)    (>(i128[2], 0)=TRUE>(i128[2], i128[2])=TRUELOAD889(i128[2], i128[2], i128[2], i128[2])≥NonInfC∧LOAD889(i128[2], i128[2], i128[2], i128[2])≥COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥))



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

    (49)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (50)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (51)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (52)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (53)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



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

    (54)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])), ≥)∧[(-1)bni_68 + (-1)Bound*bni_68] + [(-4)bni_68]i128[2] ≥ 0∧[-1 + (-1)bso_69] ≥ 0)



    We solved constraint (53) using rule (IDP_SMT_SPLIT).We solved constraint (54) using rule (IDP_SMT_SPLIT).




For Pair COND_LOAD889(TRUE, i128, i128, i128, i128) → NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) the following chains were created:
  • We consider the chain LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]), COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]), NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) which results in the following constraint:

    (55)    (&&(>(i128[2], 0), !(=(i128[2], i128[2])))=TRUEi128[2]=i128[3]i128[3]=i128[0]COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3])≥NonInfC∧COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3])≥NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))



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

    (56)    (>(i128[2], 0)=TRUE<(i128[2], i128[2])=TRUECOND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NonInfC∧COND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NE1240'(i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))


    (57)    (>(i128[2], 0)=TRUE>(i128[2], i128[2])=TRUECOND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NonInfC∧COND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NE1240'(i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))



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

    (58)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (59)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (60)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (61)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (62)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (63)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



    We solved constraint (62) using rule (IDP_SMT_SPLIT).We solved constraint (63) using rule (IDP_SMT_SPLIT).
  • We consider the chain LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]), COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]), NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) which results in the following constraint:

    (64)    (&&(>(i128[2], 0), !(=(i128[2], i128[2])))=TRUEi128[2]=i128[3]i128[3]=i65[4]i128[3]=i128[4]COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3])≥NonInfC∧COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3])≥NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))



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

    (65)    (>(i128[2], 0)=TRUE<(i128[2], i128[2])=TRUECOND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NonInfC∧COND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NE1240'(i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))


    (66)    (>(i128[2], 0)=TRUE>(i128[2], i128[2])=TRUECOND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NonInfC∧COND_LOAD889(TRUE, i128[2], i128[2], i128[2], i128[2])≥NE1240'(i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2], i128[2])∧(UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥))



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

    (67)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (68)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (69)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (70)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (71)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



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

    (72)    (i128[2] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])), ≥)∧[(-1)bni_70 + (-1)Bound*bni_70] + [(-4)bni_70]i128[2] ≥ 0∧[(-1)bso_71] + [7]i128[2] ≥ 0)



    We solved constraint (71) using rule (IDP_SMT_SPLIT).We solved constraint (72) using rule (IDP_SMT_SPLIT).




For Pair NE1240'(i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → COND_NE12401(&&(&&(>(i65, 0), <(i65, i128)), <=(i128, i65)), i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) the following chains were created:
  • We consider the chain COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]), NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]), COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]) which results in the following constraint:

    (73)    (i128[1]=i128[4]i128[1]=i65[4]i65[4]=i65[5]&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4]))=TRUEi128[4]=i128[5]NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥NonInfC∧NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])∧(UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥))



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

    (74)    (<=(i128[4], i128[4])=TRUE>(i128[4], 0)=TRUE<(i128[4], i128[4])=TRUENE1240'(i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4])≥NonInfC∧NE1240'(i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4])≥COND_NE12401(&&(&&(>(i128[4], 0), <(i128[4], i128[4])), <=(i128[4], i128[4])), i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4], i128[4])∧(UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥))



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

    (75)    (0 ≥ 0∧i128[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i128[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



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

    (76)    (0 ≥ 0∧i128[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i128[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



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

    (77)    (0 ≥ 0∧i128[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i128[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



    We solved constraint (77) using rule (IDP_SMT_SPLIT).
  • We consider the chain COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3]), NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]), COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]) which results in the following constraint:

    (78)    (i128[3]=i65[4]i128[3]=i128[4]i65[4]=i65[5]&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4]))=TRUEi128[4]=i128[5]NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥NonInfC∧NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])∧(UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥))



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

    (79)    (<=(i65[4], i65[4])=TRUE>(i65[4], 0)=TRUE<(i65[4], i65[4])=TRUENE1240'(i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4])≥NonInfC∧NE1240'(i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4])≥COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i65[4])), <=(i65[4], i65[4])), i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4])∧(UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥))



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

    (80)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i65[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



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

    (81)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i65[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



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

    (82)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])), ≥)∧[(-1)bni_72 + (-1)Bound*bni_72] + [(-11)bni_72]i65[4] ≥ 0∧[-1 + (-1)bso_73] ≥ 0)



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




For Pair COND_NE12401(TRUE, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → LOAD889(i128, i65, i128, i65) the following chains were created:
  • We consider the chain NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]), COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]), LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]) which results in the following constraint:

    (83)    (i65[4]=i65[5]&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4]))=TRUEi128[4]=i128[5]i128[5]=i128[2]i65[5]=i128[2]COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5])≥NonInfC∧COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5])≥LOAD889(i128[5], i65[5], i128[5], i65[5])∧(UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥))



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

    (84)    (<=(i65[4], i65[4])=TRUE>(i65[4], 0)=TRUE<(i65[4], i65[4])=TRUECOND_NE12401(TRUE, i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4])≥NonInfC∧COND_NE12401(TRUE, i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4], i65[4])≥LOAD889(i65[4], i65[4], i65[4], i65[4])∧(UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥))



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

    (85)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-11)bni_74]i65[4] ≥ 0∧[(-1)bso_75] + [-7]i65[4] ≥ 0)



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

    (86)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-11)bni_74]i65[4] ≥ 0∧[(-1)bso_75] + [-7]i65[4] ≥ 0)



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

    (87)    (0 ≥ 0∧i65[4] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-11)bni_74]i65[4] ≥ 0∧[(-1)bso_75] + [-7]i65[4] ≥ 0)



    We solved constraint (87) using rule (IDP_SMT_SPLIT).
  • We consider the chain NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]), COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]), LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]) which results in the following constraint:

    (88)    (i65[4]=i65[5]&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4]))=TRUEi128[4]=i128[5]i128[5]=i128[6]i65[5]=i65[6]COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5])≥NonInfC∧COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5])≥LOAD889(i128[5], i65[5], i128[5], i65[5])∧(UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥))



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

    (89)    (<=(i128[4], i65[4])=TRUE>(i65[4], 0)=TRUE<(i65[4], i128[4])=TRUECOND_NE12401(TRUE, i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥NonInfC∧COND_NE12401(TRUE, i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])≥LOAD889(i128[4], i65[4], i128[4], i65[4])∧(UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥))



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

    (90)    (i65[4] + [-1]i128[4] ≥ 0∧i65[4] + [-1] ≥ 0∧i128[4] + [-1] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-6)bni_74]i65[4] + [(-5)bni_74]i128[4] ≥ 0∧[(-1)bso_75] + [-4]i65[4] + [-3]i128[4] ≥ 0)



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

    (91)    (i65[4] + [-1]i128[4] ≥ 0∧i65[4] + [-1] ≥ 0∧i128[4] + [-1] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-6)bni_74]i65[4] + [(-5)bni_74]i128[4] ≥ 0∧[(-1)bso_75] + [-4]i65[4] + [-3]i128[4] ≥ 0)



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

    (92)    (i65[4] + [-1]i128[4] ≥ 0∧i65[4] + [-1] ≥ 0∧i128[4] + [-1] + [-1]i65[4] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[5], i65[5], i128[5], i65[5])), ≥)∧[(-1)bni_74 + (-1)Bound*bni_74] + [(-6)bni_74]i65[4] + [(-5)bni_74]i128[4] ≥ 0∧[(-1)bso_75] + [-4]i65[4] + [-3]i128[4] ≥ 0)



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




For Pair LOAD889(i128, i65, i128, i65) → COND_LOAD8891(&&(&&(>(i65, 0), <(i65, i128)), <=(i128, i65)), i128, i65, i128, i65) the following chains were created:
  • We consider the chain COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5]), LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]), COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]) which results in the following constraint:

    (93)    (i128[5]=i128[6]i65[5]=i65[6]i128[6]=i128[7]&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6]))=TRUEi65[6]=i65[7]LOAD889(i128[6], i65[6], i128[6], i65[6])≥NonInfC∧LOAD889(i128[6], i65[6], i128[6], i65[6])≥COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])∧(UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥))



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

    (94)    (<=(i128[6], i65[6])=TRUE>(i65[6], 0)=TRUE<(i65[6], i128[6])=TRUELOAD889(i128[6], i65[6], i128[6], i65[6])≥NonInfC∧LOAD889(i128[6], i65[6], i128[6], i65[6])≥COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])∧(UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥))



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

    (95)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



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

    (96)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



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

    (97)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



    We solved constraint (97) using rule (IDP_SMT_SPLIT).
  • We consider the chain COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]), LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]), COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]) which results in the following constraint:

    (98)    (i65[7]=i65[6]i128[7]=i128[6]i128[6]=i128[7]1&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6]))=TRUEi65[6]=i65[7]1LOAD889(i128[6], i65[6], i128[6], i65[6])≥NonInfC∧LOAD889(i128[6], i65[6], i128[6], i65[6])≥COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])∧(UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥))



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

    (99)    (<=(i128[6], i65[6])=TRUE>(i65[6], 0)=TRUE<(i65[6], i128[6])=TRUELOAD889(i128[6], i65[6], i128[6], i65[6])≥NonInfC∧LOAD889(i128[6], i65[6], i128[6], i65[6])≥COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])∧(UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥))



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

    (100)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



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

    (101)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



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

    (102)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])), ≥)∧[(-1)bni_76 + (-1)Bound*bni_76] + [(-2)bni_76]i65[6] + [(-2)bni_76]i128[6] ≥ 0∧[-1 + (-1)bso_77] ≥ 0)



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




For Pair COND_LOAD8891(TRUE, i128, i65, i128, i65) → LOAD889(i128, i65, i128, i65) the following chains were created:
  • We consider the chain LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]), COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]), LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2]) which results in the following constraint:

    (103)    (i128[6]=i128[7]&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6]))=TRUEi65[6]=i65[7]i128[7]=i128[2]i65[7]=i128[2]COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7])≥NonInfC∧COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7])≥LOAD889(i128[7], i65[7], i128[7], i65[7])∧(UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥))



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

    (104)    (<=(i65[6], i65[6])=TRUE>(i65[6], 0)=TRUE<(i65[6], i65[6])=TRUECOND_LOAD8891(TRUE, i65[6], i65[6], i65[6], i65[6])≥NonInfC∧COND_LOAD8891(TRUE, i65[6], i65[6], i65[6], i65[6])≥LOAD889(i65[6], i65[6], i65[6], i65[6])∧(UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥))



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

    (105)    (0 ≥ 0∧i65[6] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-4)bni_78]i65[6] ≥ 0∧[(-1)bso_79] ≥ 0)



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

    (106)    (0 ≥ 0∧i65[6] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-4)bni_78]i65[6] ≥ 0∧[(-1)bso_79] ≥ 0)



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

    (107)    (0 ≥ 0∧i65[6] + [-1] ≥ 0∧[-1] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-4)bni_78]i65[6] ≥ 0∧[(-1)bso_79] ≥ 0)



    We solved constraint (107) using rule (IDP_SMT_SPLIT).
  • We consider the chain LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]), COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7]), LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6]) which results in the following constraint:

    (108)    (i128[6]=i128[7]&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6]))=TRUEi65[6]=i65[7]i65[7]=i65[6]1i128[7]=i128[6]1COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7])≥NonInfC∧COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7])≥LOAD889(i128[7], i65[7], i128[7], i65[7])∧(UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥))



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

    (109)    (<=(i128[6], i65[6])=TRUE>(i65[6], 0)=TRUE<(i65[6], i128[6])=TRUECOND_LOAD8891(TRUE, i128[6], i65[6], i128[6], i65[6])≥NonInfC∧COND_LOAD8891(TRUE, i128[6], i65[6], i128[6], i65[6])≥LOAD889(i128[6], i65[6], i128[6], i65[6])∧(UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥))



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

    (110)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-2)bni_78]i65[6] + [(-2)bni_78]i128[6] ≥ 0∧[(-1)bso_79] ≥ 0)



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

    (111)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-2)bni_78]i65[6] + [(-2)bni_78]i128[6] ≥ 0∧[(-1)bso_79] ≥ 0)



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

    (112)    (i65[6] + [-1]i128[6] ≥ 0∧i65[6] + [-1] ≥ 0∧i128[6] + [-1] + [-1]i65[6] ≥ 0 ⇒ (UIncreasing(LOAD889(i128[7], i65[7], i128[7], i65[7])), ≥)∧[(-1)bni_78 + (-1)Bound*bni_78] + [(-2)bni_78]i65[6] + [(-2)bni_78]i128[6] ≥ 0∧[(-1)bso_79] ≥ 0)



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




To summarize, we get the following constraints P for the following pairs.
  • NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → COND_NE1240(&&(>(i128, 0), !(=(i128, i128))), i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)

  • COND_NE1240(TRUE, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128) → NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)

  • LOAD889(i128, i128, i128, i128) → COND_LOAD889(&&(>(i128, 0), !(=(i128, i128))), i128, i128, i128, i128)

  • COND_LOAD889(TRUE, i128, i128, i128, i128) → NE1240'(i128, i128, i128, i128, i128, i128, i128, i128, i128, i128, i128)

  • NE1240'(i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → COND_NE12401(&&(&&(>(i65, 0), <(i65, i128)), <=(i128, i65)), i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65)

  • COND_NE12401(TRUE, i128, i65, i128, i65, i65, i128, i65, i128, i65, i128, i65) → LOAD889(i128, i65, i128, i65)

  • LOAD889(i128, i65, i128, i65) → COND_LOAD8891(&&(&&(>(i65, 0), <(i65, i128)), <=(i128, i65)), i128, i65, i128, i65)

  • COND_LOAD8891(TRUE, i128, i65, i128, i65) → LOAD889(i128, i65, i128, i65)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(NE1240'(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11)) = [-1] + [-1]x11 + [-1]x10 + [-1]x9 + [-1]x8 + [-1]x7 + [-1]x6 + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_NE1240(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12)) = [-1] + [-1]x12 + [-1]x11 + [-1]x10 + [-1]x9 + [-1]x8 + [-1]x7 + [-1]x6 + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(!(x1)) = [-1]   
POL(=(x1, x2)) = [-1]   
POL(LOAD889(x1, x2, x3, x4)) = [-1] + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_LOAD889(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(COND_NE12401(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12)) = [-1] + [-1]x12 + [-1]x11 + [-1]x10 + [-1]x9 + [-1]x8 + [-1]x7 + [-1]x6 + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   
POL(<(x1, x2)) = [-1]   
POL(<=(x1, x2)) = [-1]   
POL(COND_LOAD8891(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + [-1]x4 + [-1]x3 + [-1]x2 + [-1]x1   

The following pairs are in P>:

NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])
COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])
LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])
COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])
NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])
COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5])
LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])
COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7])

The following pairs are in Pbound:

NE1240'(i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0]) → COND_NE1240(&&(>(i128[0], 0), !(=(i128[0], i128[0]))), i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0], i128[0])
COND_NE1240(TRUE, i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1]) → NE1240'(i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1], i128[1])
LOAD889(i128[2], i128[2], i128[2], i128[2]) → COND_LOAD889(&&(>(i128[2], 0), !(=(i128[2], i128[2]))), i128[2], i128[2], i128[2], i128[2])
COND_LOAD889(TRUE, i128[3], i128[3], i128[3], i128[3]) → NE1240'(i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3], i128[3])
NE1240'(i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4]) → COND_NE12401(&&(&&(>(i65[4], 0), <(i65[4], i128[4])), <=(i128[4], i65[4])), i128[4], i65[4], i128[4], i65[4], i65[4], i128[4], i65[4], i128[4], i65[4], i128[4], i65[4])
COND_NE12401(TRUE, i128[5], i65[5], i128[5], i65[5], i65[5], i128[5], i65[5], i128[5], i65[5], i128[5], i65[5]) → LOAD889(i128[5], i65[5], i128[5], i65[5])
LOAD889(i128[6], i65[6], i128[6], i65[6]) → COND_LOAD8891(&&(&&(>(i65[6], 0), <(i65[6], i128[6])), <=(i128[6], i65[6])), i128[6], i65[6], i128[6], i65[6])
COND_LOAD8891(TRUE, i128[7], i65[7], i128[7], i65[7]) → LOAD889(i128[7], i65[7], i128[7], i65[7])

The following pairs are in P:
none

There are no usable rules.

(115) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~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:
Cond_NE1240(TRUE, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0, x0)
Cond_Load889(TRUE, x0, x0, x0, x0)
NE1240(x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Cond_NE12401(TRUE, x0, x1, x0, x1, x1, x0, x1, x0, x1, x0, x1)
Load889(x0, x1, x0, x1)
Cond_Load8891(TRUE, x0, x1, x0, x1)

(116) IDependencyGraphProof (EQUIVALENT transformation)

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

(117) TRUE