0 JBC
↳1 JBC2FIG (⇐)
↳2 FIGraph
↳3 FIGtoITRSProof (⇐)
↳4 ITRS
↳5 ITRStoIDPProof (⇔)
↳6 IDP
↳7 UsableRulesProof (⇔)
↳8 IDP
↳9 IDPNonInfProof (⇐)
↳10 AND
↳11 IDP
↳12 IDependencyGraphProof (⇔)
↳13 IDP
↳14 IDPNonInfProof (⇐)
↳15 IDP
↳16 IDependencyGraphProof (⇔)
↳17 TRUE
↳18 IDP
↳19 IDependencyGraphProof (⇔)
↳20 IDP
↳21 IDPNonInfProof (⇐)
↳22 AND
↳23 IDP
↳24 IDependencyGraphProof (⇔)
↳25 TRUE
↳26 IDP
↳27 IDependencyGraphProof (⇔)
↳28 TRUE
/**
* Example taken from "A Term Rewriting Approach to the Automated Termination
* Analysis of Imperative Programs" (http://www.cs.unm.edu/~spf/papers/2009-02.pdf)
* and converted to Java.
*/
public class PastaB10 {
public static void main(String[] args) {
Random.args = args;
int x = Random.random();
int y = Random.random();
while (x + y > 0) {
if (x > 0) {
x--;
} else if (y > 0) {
y--;
} else {
continue;
}
}
}
}
public class Random {
static String[] args;
static int index = 0;
public static int random() {
String string = args[index];
index++;
return string.length();
}
}
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Boolean, Integer
(0) -> (1), if ((i120[0] →* i120[1])∧(i153[0] > 0 && i153[0] + i120[0] > 0 →* TRUE)∧(i153[0] →* i153[1]))
(1) -> (0), if ((i120[1] →* i120[0])∧(i153[1] + -1 →* i153[0]))
(1) -> (2), if ((i120[1] →* i161[2])∧(i153[1] + -1 →* i154[2]))
(1) -> (4), if ((i153[1] + -1 →* i154[4])∧(i120[1] →* i162[4]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
(3) -> (0), if ((i154[3] →* i153[0])∧(i161[3] + -1 →* i120[0]))
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(3) -> (4), if ((i161[3] + -1 →* i162[4])∧(i154[3] →* i154[4]))
(4) -> (5), if ((i162[4] <= 0 && i154[4] <= 0 && i154[4] + i162[4] > 0 →* TRUE)∧(i154[4] →* i154[5])∧(i162[4] →* i162[5]))
(5) -> (0), if ((i154[5] →* i153[0])∧(i162[5] →* i120[0]))
(5) -> (2), if ((i162[5] →* i161[2])∧(i154[5] →* i154[2]))
(5) -> (4), if ((i162[5] →* i162[4])∧(i154[5] →* i154[4]))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Boolean, Integer
(0) -> (1), if ((i120[0] →* i120[1])∧(i153[0] > 0 && i153[0] + i120[0] > 0 →* TRUE)∧(i153[0] →* i153[1]))
(1) -> (0), if ((i120[1] →* i120[0])∧(i153[1] + -1 →* i153[0]))
(1) -> (2), if ((i120[1] →* i161[2])∧(i153[1] + -1 →* i154[2]))
(1) -> (4), if ((i153[1] + -1 →* i154[4])∧(i120[1] →* i162[4]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
(3) -> (0), if ((i154[3] →* i153[0])∧(i161[3] + -1 →* i120[0]))
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(3) -> (4), if ((i161[3] + -1 →* i162[4])∧(i154[3] →* i154[4]))
(4) -> (5), if ((i162[4] <= 0 && i154[4] <= 0 && i154[4] + i162[4] > 0 →* TRUE)∧(i154[4] →* i154[5])∧(i162[4] →* i162[5]))
(5) -> (0), if ((i154[5] →* i153[0])∧(i162[5] →* i120[0]))
(5) -> (2), if ((i162[5] →* i161[2])∧(i154[5] →* i154[2]))
(5) -> (4), if ((i162[5] →* i162[4])∧(i154[5] →* i154[4]))
(1) (i120[0]=i120[1]∧&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0))=TRUE∧i153[0]=i153[1] ⇒ LOAD974(i153[0], i120[0])≥NonInfC∧LOAD974(i153[0], i120[0])≥COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])∧(UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥))
(2) (>(i153[0], 0)=TRUE∧>(+(i153[0], i120[0]), 0)=TRUE ⇒ LOAD974(i153[0], i120[0])≥NonInfC∧LOAD974(i153[0], i120[0])≥COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])∧(UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥))
(3) (i153[0] + [-1] ≥ 0∧i153[0] + [-1] + i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(4) (i153[0] + [-1] ≥ 0∧i153[0] + [-1] + i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(5) (i153[0] + [-1] ≥ 0∧i153[0] + [-1] + i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)bni_12 + (-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(6) (i153[0] ≥ 0∧i153[0] + i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(7) (i153[0] ≥ 0∧i153[0] + i120[0] ≥ 0∧i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(8) (i153[0] ≥ 0∧i153[0] + [-1]i120[0] ≥ 0∧i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)Bound*bni_12] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(9) (i120[0] + i153[0] ≥ 0∧i153[0] ≥ 0∧i120[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])), ≥)∧[(-1)Bound*bni_12] + [bni_12]i120[0] + [bni_12]i153[0] ≥ 0∧[(-1)bso_13] ≥ 0)
(10) (COND_LOAD974(TRUE, i153[1], i120[1])≥NonInfC∧COND_LOAD974(TRUE, i153[1], i120[1])≥LOAD974(+(i153[1], -1), i120[1])∧(UIncreasing(LOAD974(+(i153[1], -1), i120[1])), ≥))
(11) ((UIncreasing(LOAD974(+(i153[1], -1), i120[1])), ≥)∧[1 + (-1)bso_15] ≥ 0)
(12) ((UIncreasing(LOAD974(+(i153[1], -1), i120[1])), ≥)∧[1 + (-1)bso_15] ≥ 0)
(13) ((UIncreasing(LOAD974(+(i153[1], -1), i120[1])), ≥)∧[1 + (-1)bso_15] ≥ 0)
(14) ((UIncreasing(LOAD974(+(i153[1], -1), i120[1])), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_15] ≥ 0)
(15) (&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0))=TRUE∧i161[2]=i161[3]∧i154[2]=i154[3] ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(16) (>(+(i154[2], i161[2]), 0)=TRUE∧>(i161[2], 0)=TRUE∧<=(i154[2], 0)=TRUE ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(17) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [bni_16]i154[2] ≥ 0∧[(-1)bso_17] ≥ 0)
(18) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [bni_16]i154[2] ≥ 0∧[(-1)bso_17] ≥ 0)
(19) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [bni_16]i154[2] ≥ 0∧[(-1)bso_17] ≥ 0)
(20) ([-1]i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i154[2] ≥ 0∧[(-1)bso_17] ≥ 0)
(21) (i161[2] ≥ 0∧i154[2] + i161[2] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(-1)bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i154[2] ≥ 0∧[(-1)bso_17] ≥ 0)
(22) (COND_LOAD9741(TRUE, i154[3], i161[3])≥NonInfC∧COND_LOAD9741(TRUE, i154[3], i161[3])≥LOAD974(i154[3], +(i161[3], -1))∧(UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥))
(23) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_19] ≥ 0)
(24) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_19] ≥ 0)
(25) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_19] ≥ 0)
(26) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_19] ≥ 0)
(27) (&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0))=TRUE∧i154[4]=i154[5]∧i162[4]=i162[5] ⇒ LOAD974(i154[4], i162[4])≥NonInfC∧LOAD974(i154[4], i162[4])≥COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])∧(UIncreasing(COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])), ≥))
(28) (>(+(i154[4], i162[4]), 0)=TRUE∧<=(i162[4], 0)=TRUE∧<=(i154[4], 0)=TRUE ⇒ LOAD974(i154[4], i162[4])≥NonInfC∧LOAD974(i154[4], i162[4])≥COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])∧(UIncreasing(COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])), ≥))
(29) (i154[4] + [-1] + i162[4] ≥ 0∧[-1]i162[4] ≥ 0∧[-1]i154[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [bni_20]i154[4] ≥ 0∧[-2 + (-1)bso_21] ≥ 0)
(30) (i154[4] + [-1] + i162[4] ≥ 0∧[-1]i162[4] ≥ 0∧[-1]i154[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [bni_20]i154[4] ≥ 0∧[-2 + (-1)bso_21] ≥ 0)
(31) (i154[4] + [-1] + i162[4] ≥ 0∧[-1]i162[4] ≥ 0∧[-1]i154[4] ≥ 0 ⇒ (UIncreasing(COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])), ≥)∧[(-1)bni_20 + (-1)Bound*bni_20] + [bni_20]i154[4] ≥ 0∧[-2 + (-1)bso_21] ≥ 0)
(32) (i154[5]=i153[0]∧i162[5]=i120[0] ⇒ COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(33) (COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(34) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(35) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(36) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(37) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧0 = 0∧0 = 0∧[2 + (-1)bso_23] ≥ 0)
(38) (i162[5]=i161[2]∧i154[5]=i154[2] ⇒ COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(39) (COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(40) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(41) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(42) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(43) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧0 = 0∧0 = 0∧[2 + (-1)bso_23] ≥ 0)
(44) (i162[5]=i162[4]∧i154[5]=i154[4] ⇒ COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(45) (COND_LOAD9742(TRUE, i154[5], i162[5])≥NonInfC∧COND_LOAD9742(TRUE, i154[5], i162[5])≥LOAD974(i154[5], i162[5])∧(UIncreasing(LOAD974(i154[5], i162[5])), ≥))
(46) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(47) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(48) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧[2 + (-1)bso_23] ≥ 0)
(49) ((UIncreasing(LOAD974(i154[5], i162[5])), ≥)∧0 = 0∧0 = 0∧[2 + (-1)bso_23] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(LOAD974(x1, x2)) = [-1] + x1
POL(COND_LOAD974(x1, x2, x3)) = [-1] + x2
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(+(x1, x2)) = x1 + x2
POL(-1) = [-1]
POL(COND_LOAD9741(x1, x2, x3)) = [-1] + x2
POL(<=(x1, x2)) = [-1]
POL(COND_LOAD9742(x1, x2, x3)) = [1] + x2
COND_LOAD974(TRUE, i153[1], i120[1]) → LOAD974(+(i153[1], -1), i120[1])
LOAD974(i154[4], i162[4]) → COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])
COND_LOAD9742(TRUE, i154[5], i162[5]) → LOAD974(i154[5], i162[5])
LOAD974(i153[0], i120[0]) → COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])
LOAD974(i154[4], i162[4]) → COND_LOAD9742(&&(&&(<=(i162[4], 0), <=(i154[4], 0)), >(+(i154[4], i162[4]), 0)), i154[4], i162[4])
LOAD974(i153[0], i120[0]) → COND_LOAD974(&&(>(i153[0], 0), >(+(i153[0], i120[0]), 0)), i153[0], i120[0])
LOAD974(i154[2], i161[2]) → COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])
COND_LOAD9741(TRUE, i154[3], i161[3]) → LOAD974(i154[3], +(i161[3], -1))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Boolean, Integer
(3) -> (0), if ((i154[3] →* i153[0])∧(i161[3] + -1 →* i120[0]))
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Integer, Boolean
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
(1) (COND_LOAD9741(TRUE, i154[3], i161[3])≥NonInfC∧COND_LOAD9741(TRUE, i154[3], i161[3])≥LOAD974(i154[3], +(i161[3], -1))∧(UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥))
(2) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_9] ≥ 0)
(3) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_9] ≥ 0)
(4) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[(-1)bso_9] ≥ 0)
(5) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧0 = 0∧0 = 0∧[(-1)bso_9] ≥ 0)
(6) (&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0))=TRUE∧i161[2]=i161[3]∧i154[2]=i154[3] ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(7) (>(+(i154[2], i161[2]), 0)=TRUE∧>(i161[2], 0)=TRUE∧<=(i154[2], 0)=TRUE ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(8) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(2)bni_10 + (-1)Bound*bni_10] + [(2)bni_10]i161[2] + [(2)bni_10]i154[2] ≥ 0∧[2 + (-1)bso_11] ≥ 0)
(9) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(2)bni_10 + (-1)Bound*bni_10] + [(2)bni_10]i161[2] + [(2)bni_10]i154[2] ≥ 0∧[2 + (-1)bso_11] ≥ 0)
(10) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(2)bni_10 + (-1)Bound*bni_10] + [(2)bni_10]i161[2] + [(2)bni_10]i154[2] ≥ 0∧[2 + (-1)bso_11] ≥ 0)
(11) ([-1]i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(2)bni_10 + (-1)Bound*bni_10] + [(2)bni_10]i161[2] + [(-2)bni_10]i154[2] ≥ 0∧[2 + (-1)bso_11] ≥ 0)
(12) (i161[2] ≥ 0∧i154[2] + i161[2] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(4)bni_10 + (-1)Bound*bni_10] + [(2)bni_10]i161[2] ≥ 0∧[2 + (-1)bso_11] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(COND_LOAD9741(x1, x2, x3)) = [2]x2 + [2]x3
POL(LOAD974(x1, x2)) = [2] + [2]x2 + [2]x1
POL(+(x1, x2)) = x1 + x2
POL(-1) = [-1]
POL(&&(x1, x2)) = [2]
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
LOAD974(i154[2], i161[2]) → COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])
LOAD974(i154[2], i161[2]) → COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])
COND_LOAD9741(TRUE, i154[3], i161[3]) → LOAD974(i154[3], +(i161[3], -1))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Integer
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Integer, Boolean
(1) -> (2), if ((i120[1] →* i161[2])∧(i153[1] + -1 →* i154[2]))
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(5) -> (2), if ((i162[5] →* i161[2])∧(i154[5] →* i154[2]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Integer, Boolean
(3) -> (2), if ((i154[3] →* i154[2])∧(i161[3] + -1 →* i161[2]))
(2) -> (3), if ((i161[2] > 0 && i154[2] <= 0 && i154[2] + i161[2] > 0 →* TRUE)∧(i161[2] →* i161[3])∧(i154[2] →* i154[3]))
(1) (COND_LOAD9741(TRUE, i154[3], i161[3])≥NonInfC∧COND_LOAD9741(TRUE, i154[3], i161[3])≥LOAD974(i154[3], +(i161[3], -1))∧(UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥))
(2) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[1 + (-1)bso_10] ≥ 0)
(3) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[1 + (-1)bso_10] ≥ 0)
(4) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧[1 + (-1)bso_10] ≥ 0)
(5) ((UIncreasing(LOAD974(i154[3], +(i161[3], -1))), ≥)∧0 = 0∧0 = 0∧[1 + (-1)bso_10] ≥ 0)
(6) (&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0))=TRUE∧i161[2]=i161[3]∧i154[2]=i154[3] ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(7) (>(+(i154[2], i161[2]), 0)=TRUE∧>(i161[2], 0)=TRUE∧<=(i154[2], 0)=TRUE ⇒ LOAD974(i154[2], i161[2])≥NonInfC∧LOAD974(i154[2], i161[2])≥COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])∧(UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥))
(8) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[bni_11 + (-1)Bound*bni_11] + [bni_11]i161[2] + [bni_11]i154[2] ≥ 0∧[(-1)bso_12] ≥ 0)
(9) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[bni_11 + (-1)Bound*bni_11] + [bni_11]i161[2] + [bni_11]i154[2] ≥ 0∧[(-1)bso_12] ≥ 0)
(10) (i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧[-1]i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[bni_11 + (-1)Bound*bni_11] + [bni_11]i161[2] + [bni_11]i154[2] ≥ 0∧[(-1)bso_12] ≥ 0)
(11) ([-1]i154[2] + [-1] + i161[2] ≥ 0∧i161[2] + [-1] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[bni_11 + (-1)Bound*bni_11] + [bni_11]i161[2] + [(-1)bni_11]i154[2] ≥ 0∧[(-1)bso_12] ≥ 0)
(12) (i161[2] ≥ 0∧i154[2] + i161[2] ≥ 0∧i154[2] ≥ 0 ⇒ (UIncreasing(COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])), ≥)∧[(2)bni_11 + (-1)Bound*bni_11] + [bni_11]i161[2] ≥ 0∧[(-1)bso_12] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(COND_LOAD9741(x1, x2, x3)) = [1] + x2 + x3
POL(LOAD974(x1, x2)) = [1] + x2 + x1
POL(+(x1, x2)) = x1 + x2
POL(-1) = [-1]
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(<=(x1, x2)) = [-1]
COND_LOAD9741(TRUE, i154[3], i161[3]) → LOAD974(i154[3], +(i161[3], -1))
LOAD974(i154[2], i161[2]) → COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])
LOAD974(i154[2], i161[2]) → COND_LOAD9741(&&(&&(>(i161[2], 0), <=(i154[2], 0)), >(+(i154[2], i161[2]), 0)), i154[2], i161[2])
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Boolean, Integer
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> Boolean |
> | ~ | Gt: (Integer, Integer) -> Boolean |
~ | ~ | Bwnot: (Integer) -> Integer |
% | ~ | Mod: (Integer, Integer) -> Integer |
& | ~ | Bwand: (Integer, Integer) -> Integer |
+ | ~ | Add: (Integer, Integer) -> Integer |
&& | ~ | Land: (Boolean, Boolean) -> Boolean |
Integer