0 JBC
↳1 JBC2FIG (⇐)
↳2 FIGraph
↳3 FIGtoITRSProof (⇐)
↳4 AND
↳5 ITRS
↳6 GroundTermsRemoverProof (⇔)
↳7 ITRS
↳8 ITRStoIDPProof (⇔)
↳9 IDP
↳10 UsableRulesProof (⇔)
↳11 IDP
↳12 ItpfGraphProof (⇔)
↳13 IDP
↳14 IDPNonInfProof (⇐)
↳15 AND
↳16 IDP
↳17 IDPNonInfProof (⇐)
↳18 AND
↳19 IDP
↳20 IDependencyGraphProof (⇔)
↳21 TRUE
↳22 IDP
↳23 IDependencyGraphProof (⇔)
↳24 TRUE
↳25 IDP
↳26 IDependencyGraphProof (⇔)
↳27 TRUE
↳28 ITRS
↳29 ITRStoIDPProof (⇔)
↳30 IDP
↳31 UsableRulesProof (⇔)
↳32 IDP
↳33 IDPNonInfProof (⇐)
↳34 IDP
↳35 IDependencyGraphProof (⇔)
↳36 TRUE
/**
* This class represents a list, where the function duplicate() can be used to
* duplicate all elements in the list.
* @author cotto
*/
public class ListDuplicate {
/**
* Walk through the list and, for each original element, copy it and append
* this copy after the original. This transforms abc to aabbcc.
*/
public static void duplicate(ObjectList list) {
ObjectList current = list;
boolean even = true;
while (current != null) {
// only copy the original elements!
if (even) {
final ObjectList copy =
new ObjectList(current.value, current.next);
current.next = copy;
}
current = current.next;
even = !even;
}
}
public static void main(String[] args) {
Random.args = args;
ObjectList list = ObjectList.createList();
duplicate(list);
}
}
public class ObjectList {
Object value;
ObjectList next;
public ObjectList(Object value, ObjectList next) {
this.value = value;
this.next = next;
}
public static ObjectList createList() {
ObjectList result = null;
int length = Random.random();
while (length > 0) {
result = new ObjectList(new Object(), result);
length--;
}
return result;
}
}
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 |
Load1658(x1, x2, x3) → Load1658(x2, x3)
Cond_Load1658(x1, x2, x3, x4) → Cond_Load1658(x1, x3, x4)
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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 |
Integer
(0) -> (0), if ((o751[0] →* java.lang.Object(ObjectList(o751[0]', o749[0]')))∧(1 →* 0))
(0) -> (1), if ((1 →* i43[1])∧(o751[0] →* java.lang.Object(ObjectList(o770[1], o769[1]))))
(1) -> (2), if ((java.lang.Object(ObjectList(o770[1], o769[1])) →* java.lang.Object(ObjectList(o770[2], o769[2])))∧(i43[1] > 0 →* TRUE)∧(i43[1] →* i43[2]))
(2) -> (0), if (java.lang.Object(ObjectList(o770[2], o769[2])) →* java.lang.Object(ObjectList(o751[0], o749[0])))
(2) -> (1), if ((java.lang.Object(ObjectList(o770[2], o769[2])) →* java.lang.Object(ObjectList(o770[1], o769[1])))∧(0 →* i43[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
(0) -> (0), if ((o751[0] →* java.lang.Object(ObjectList(o751[0]', o749[0]')))∧(1 →* 0))
(0) -> (1), if ((1 →* i43[1])∧(o751[0] →* java.lang.Object(ObjectList(o770[1], o769[1]))))
(1) -> (2), if ((java.lang.Object(ObjectList(o770[1], o769[1])) →* java.lang.Object(ObjectList(o770[2], o769[2])))∧(i43[1] > 0 →* TRUE)∧(i43[1] →* i43[2]))
(2) -> (0), if (java.lang.Object(ObjectList(o770[2], o769[2])) →* java.lang.Object(ObjectList(o751[0], o749[0])))
(2) -> (1), if ((java.lang.Object(ObjectList(o770[2], o769[2])) →* java.lang.Object(ObjectList(o770[1], o769[1])))∧(0 →* i43[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
(0) -> (1), if ((1 →* i43[1])∧(o751[0] →* java.lang.Object(ObjectList(o770[1], o769[1]))))
(0) -> (0), if ((o751[0] →* java.lang.Object(ObjectList(o751[0]', o749[0]')))∧false)
(1) -> (2), if (((o770[1] →* o770[2])∧(o769[1] →* o769[2]))∧(i43[1] > 0 →* TRUE)∧(i43[1] →* i43[2]))
(2) -> (0), if ((o770[2] →* o751[0])∧(o769[2] →* o749[0]))
(2) -> (1), if (((o770[2] →* o770[1])∧(o769[2] →* o769[1]))∧(0 →* i43[1]))
(1) (LOAD1658(java.lang.Object(ObjectList(o751[0]1, o749[0]1)), 0)≥LOAD1658(o751[0]1, 1)∧(UIncreasing(LOAD1658(o751[0]1, 1)), ≥))
(2) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(3) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(4) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(5) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
(6) (o770[2]=o751[0]∧o769[2]=o749[0]∧1=i43[1]∧o751[0]=java.lang.Object(ObjectList(o770[1], o769[1])) ⇒ LOAD1658(java.lang.Object(ObjectList(o751[0], o749[0])), 0)≥LOAD1658(o751[0], 1)∧(UIncreasing(LOAD1658(o751[0], 1)), ≥))
(7) (LOAD1658(java.lang.Object(ObjectList(java.lang.Object(ObjectList(o770[1], o769[1])), o769[2])), 0)≥LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), 1)∧(UIncreasing(LOAD1658(o751[0], 1)), ≥))
(8) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[13 + (-1)bso_13] + [4]o769[2] + [12]o769[1] + [12]o770[1] ≥ 0)
(9) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[13 + (-1)bso_13] + [4]o769[2] + [12]o769[1] + [12]o770[1] ≥ 0)
(10) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[13 + (-1)bso_13] + [4]o769[2] + [12]o769[1] + [12]o770[1] ≥ 0)
(11) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[13 + (-1)bso_13] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
(12) (LOAD1658(java.lang.Object(ObjectList(o751[0]1, o749[0]1)), 0)≥LOAD1658(o751[0]1, 1)∧(UIncreasing(LOAD1658(o751[0]1, 1)), ≥))
(13) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(14) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(15) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0]1 + [3]o751[0]1 ≥ 0)
(16) ((UIncreasing(LOAD1658(o751[0]1, 1)), ≥)∧[1 + (-1)bso_13] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
(17) (LOAD1658(java.lang.Object(ObjectList(o751[0], o749[0])), 0)≥LOAD1658(o751[0], 1)∧(UIncreasing(LOAD1658(o751[0], 1)), ≥))
(18) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0] + [3]o751[0] ≥ 0)
(19) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0] + [3]o751[0] ≥ 0)
(20) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[1 + (-1)bso_13] + [4]o749[0] + [3]o751[0] ≥ 0)
(21) ((UIncreasing(LOAD1658(o751[0], 1)), ≥)∧[1 + (-1)bso_13] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
(22) (o770[1]=o770[2]∧o769[1]=o769[2]∧>(i43[1], 0)=TRUE∧i43[1]=i43[2] ⇒ LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])∧(UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥))
(23) (>(i43[1], 0)=TRUE ⇒ LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])∧(UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥))
(24) (0 ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[(-1)bso_14] + [3]i43[1] ≥ 0)
(25) (0 ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[(-1)bso_14] + [3]i43[1] ≥ 0)
(26) (0 ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[(-1)bso_14] + [3]i43[1] ≥ 0)
(27) (0 ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_14] ≥ 0∧[1] ≥ 0)
(28) (o770[1]=o770[2]∧o769[1]=o769[2]∧>(i43[1], 0)=TRUE∧i43[1]=i43[2]∧o770[2]=o751[0]∧o769[2]=o749[0] ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2])≥LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(29) (>(i43[1], 0)=TRUE ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(30) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(31) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(32) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(33) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_15] ≥ 0)
(34) (o770[1]=o770[2]∧o769[1]=o769[2]∧>(i43[1], 0)=TRUE∧i43[1]=i43[2]∧o770[2]=o770[1]1∧o769[2]=o769[1]1∧0=i43[1]1 ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2])≥LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(35) (>(i43[1], 0)=TRUE ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(36) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(37) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(38) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(-1)bso_15] ≥ 0)
(39) (0 ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_15] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(LOAD1658(x1, x2)) = [3]x2 + x1
POL(java.lang.Object(x1)) = [2]x1
POL(ObjectList(x1, x2)) = [2] + [2]x2 + [2]x1
POL(0) = 0
POL(1) = 0
POL(COND_LOAD1658(x1, x2, x3)) = x2
POL(>(x1, x2)) = 0
LOAD1658(java.lang.Object(ObjectList(o751[0], o749[0])), 0) → LOAD1658(o751[0], 1)
LOAD1658(java.lang.Object(ObjectList(o751[0], o749[0])), 0) → LOAD1658(o751[0], 1)
LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1]) → COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])
COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2]) → LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)
LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1]) → COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])
COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2]) → LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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
(2) -> (1), if (((o770[2] →* o770[1])∧(o769[2] →* o769[1]))∧(0 →* i43[1]))
(1) -> (2), if (((o770[1] →* o770[2])∧(o769[1] →* o769[2]))∧(i43[1] > 0 →* TRUE)∧(i43[1] →* i43[2]))
(1) (o770[1]=o770[2]∧o769[1]=o769[2]∧>(i43[1], 0)=TRUE∧i43[1]=i43[2] ⇒ LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥NonInfC∧LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])∧(UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥))
(2) (>(i43[1], 0)=TRUE ⇒ LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥NonInfC∧LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])∧(UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥))
(3) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(2)bni_16]i43[1] ≥ 0∧[-2 + (-1)bso_17] + [2]i43[1] ≥ 0)
(4) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(2)bni_16]i43[1] ≥ 0∧[-2 + (-1)bso_17] + [2]i43[1] ≥ 0)
(5) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(2)bni_16]i43[1] ≥ 0∧[-2 + (-1)bso_17] + [2]i43[1] ≥ 0)
(6) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧0 = 0∧0 = 0∧[bni_16 + (-1)Bound*bni_16] + [(2)bni_16]i43[1] ≥ 0∧0 = 0∧0 = 0∧[-2 + (-1)bso_17] + [2]i43[1] ≥ 0)
(7) (i43[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])), ≥)∧0 = 0∧0 = 0∧[(3)bni_16 + (-1)Bound*bni_16] + [(2)bni_16]i43[1] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_17] + [2]i43[1] ≥ 0)
(8) (o770[1]=o770[2]∧o769[1]=o769[2]∧>(i43[1], 0)=TRUE∧i43[1]=i43[2]∧o770[2]=o770[1]1∧o769[2]=o769[1]1∧0=i43[1]1 ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2])≥NonInfC∧COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2])≥LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(9) (>(i43[1], 0)=TRUE ⇒ COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥NonInfC∧COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])≥LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), 0)∧(UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥))
(10) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(3)bni_18 + (-1)Bound*bni_18] ≥ 0∧[2 + (-1)bso_19] ≥ 0)
(11) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(3)bni_18 + (-1)Bound*bni_18] ≥ 0∧[2 + (-1)bso_19] ≥ 0)
(12) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧[(3)bni_18 + (-1)Bound*bni_18] ≥ 0∧[2 + (-1)bso_19] ≥ 0)
(13) (i43[1] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧0 = 0∧0 = 0∧[(3)bni_18 + (-1)Bound*bni_18] ≥ 0∧0 = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 0)
(14) (i43[1] ≥ 0 ⇒ (UIncreasing(LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)), ≥)∧0 = 0∧0 = 0∧[(3)bni_18 + (-1)Bound*bni_18] ≥ 0∧0 = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(LOAD1658(x1, x2)) = [-1] + [2]x2 + [2]x1
POL(java.lang.Object(x1)) = [1]
POL(ObjectList(x1, x2)) = [-1]x2 + x1
POL(COND_LOAD1658(x1, x2, x3)) = [2] + x2
POL(>(x1, x2)) = [-1]
POL(0) = 0
COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2]) → LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)
LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1]) → COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[1])
COND_LOAD1658(TRUE, java.lang.Object(ObjectList(o770[2], o769[2])), i43[2]) → LOAD1658(java.lang.Object(ObjectList(o770[2], o769[2])), 0)
LOAD1658(java.lang.Object(ObjectList(o770[1], o769[1])), i43[1]) → COND_LOAD1658(>(i43[1], 0), java.lang.Object(ObjectList(o770[1], o769[1])), i43[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 |
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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 |
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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
(0) -> (1), if ((i35[0] > 0 →* TRUE)∧(i35[0] →* i35[1]))
(1) -> (0), if ((i35[1] + -1 →* i35[0]))
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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
(0) -> (1), if ((i35[0] > 0 →* TRUE)∧(i35[0] →* i35[1]))
(1) -> (0), if ((i35[1] + -1 →* i35[0]))
(1) (>(i35[0], 0)=TRUE∧i35[0]=i35[1] ⇒ LOAD1080(i35[0])≥NonInfC∧LOAD1080(i35[0])≥COND_LOAD1080(>(i35[0], 0), i35[0])∧(UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥))
(2) (>(i35[0], 0)=TRUE ⇒ LOAD1080(i35[0])≥NonInfC∧LOAD1080(i35[0])≥COND_LOAD1080(>(i35[0], 0), i35[0])∧(UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥))
(3) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥)∧[(-1)Bound*bni_9] + [(2)bni_9]i35[0] ≥ 0∧[1 + (-1)bso_10] ≥ 0)
(4) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥)∧[(-1)Bound*bni_9] + [(2)bni_9]i35[0] ≥ 0∧[1 + (-1)bso_10] ≥ 0)
(5) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥)∧[(-1)Bound*bni_9] + [(2)bni_9]i35[0] ≥ 0∧[1 + (-1)bso_10] ≥ 0)
(6) (i35[0] ≥ 0 ⇒ (UIncreasing(COND_LOAD1080(>(i35[0], 0), i35[0])), ≥)∧[(-1)Bound*bni_9 + (2)bni_9] + [(2)bni_9]i35[0] ≥ 0∧[1 + (-1)bso_10] ≥ 0)
(7) (>(i35[0], 0)=TRUE∧i35[0]=i35[1]∧+(i35[1], -1)=i35[0]1 ⇒ COND_LOAD1080(TRUE, i35[1])≥NonInfC∧COND_LOAD1080(TRUE, i35[1])≥LOAD1080(+(i35[1], -1))∧(UIncreasing(LOAD1080(+(i35[1], -1))), ≥))
(8) (>(i35[0], 0)=TRUE ⇒ COND_LOAD1080(TRUE, i35[0])≥NonInfC∧COND_LOAD1080(TRUE, i35[0])≥LOAD1080(+(i35[0], -1))∧(UIncreasing(LOAD1080(+(i35[1], -1))), ≥))
(9) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1080(+(i35[1], -1))), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(2)bni_11]i35[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)
(10) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1080(+(i35[1], -1))), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(2)bni_11]i35[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)
(11) (i35[0] + [-1] ≥ 0 ⇒ (UIncreasing(LOAD1080(+(i35[1], -1))), ≥)∧[(-1)bni_11 + (-1)Bound*bni_11] + [(2)bni_11]i35[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)
(12) (i35[0] ≥ 0 ⇒ (UIncreasing(LOAD1080(+(i35[1], -1))), ≥)∧[bni_11 + (-1)Bound*bni_11] + [(2)bni_11]i35[0] ≥ 0∧[1 + (-1)bso_12] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(LOAD1080(x1)) = [2]x1
POL(COND_LOAD1080(x1, x2)) = [-1] + [2]x2
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(+(x1, x2)) = x1 + x2
POL(-1) = [-1]
LOAD1080(i35[0]) → COND_LOAD1080(>(i35[0], 0), i35[0])
COND_LOAD1080(TRUE, i35[1]) → LOAD1080(+(i35[1], -1))
LOAD1080(i35[0]) → COND_LOAD1080(>(i35[0], 0), i35[0])
COND_LOAD1080(TRUE, i35[1]) → LOAD1080(+(i35[1], -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 |