0 JBC
↳1 JBCToGraph (⇒, 480 ms)
↳2 JBCTerminationGraph
↳3 TerminationGraphToSCCProof (⇒, 0 ms)
↳4 AND
↳5 JBCTerminationSCC
↳6 SCCToIDPv1Proof (⇒, 70 ms)
↳7 IDP
↳8 IDPNonInfProof (⇒, 100 ms)
↳9 AND
↳10 IDP
↳11 IDependencyGraphProof (⇔, 0 ms)
↳12 TRUE
↳13 IDP
↳14 IDependencyGraphProof (⇔, 0 ms)
↳15 TRUE
↳16 JBCTerminationSCC
↳17 SCCToIDPv1Proof (⇒, 100 ms)
↳18 IDP
↳19 IDPNonInfProof (⇒, 140 ms)
↳20 AND
↳21 IDP
↳22 IDependencyGraphProof (⇔, 0 ms)
↳23 TRUE
↳24 IDP
↳25 IDependencyGraphProof (⇔, 0 ms)
↳26 TRUE
public class ListContent{
public static void main(String[] args) {
Random.args = args;
IntList l = IntList.createIntList();
while (l.value > 0) l.value--;
}
}
class IntList {
int value;
IntList next;
public IntList(int value, IntList next) {
this.value = value;
this.next = next;
}
public static IntList createIntList() {
int i = Random.random();
IntList l = null;
while (i > 0) {
l = new IntList(Random.random(), l);
i--;
}
return l;
}
}
public class Random {
static String[] args;
static int index = 0;
public static int random() {
String string = args[index];
index++;
return string.length();
}
}
Generated 38 rules for P and 0 rules for R.
P rules:
1371_0_createIntList_LE(EOS(STATIC_1371), i388, i388) → 1373_0_createIntList_LE(EOS(STATIC_1373), i388, i388)
1373_0_createIntList_LE(EOS(STATIC_1373), i388, i388) → 1376_0_createIntList_New(EOS(STATIC_1376), i388) | >(i388, 0)
1376_0_createIntList_New(EOS(STATIC_1376), i388) → 1380_0_createIntList_Duplicate(EOS(STATIC_1380), i388)
1380_0_createIntList_Duplicate(EOS(STATIC_1380), i388) → 1382_0_createIntList_InvokeMethod(EOS(STATIC_1382), i388)
1382_0_createIntList_InvokeMethod(EOS(STATIC_1382), i388) → 1386_0_random_FieldAccess(EOS(STATIC_1386), i388)
1386_0_random_FieldAccess(EOS(STATIC_1386), i388) → 1390_0_random_FieldAccess(EOS(STATIC_1390), i388)
1390_0_random_FieldAccess(EOS(STATIC_1390), i388) → 1393_0_random_ArrayAccess(EOS(STATIC_1393), i388)
1393_0_random_ArrayAccess(EOS(STATIC_1393), i388) → 1395_0_random_ArrayAccess(EOS(STATIC_1395), i388)
1395_0_random_ArrayAccess(EOS(STATIC_1395), i388) → 1398_0_random_Store(EOS(STATIC_1398), i388, o553)
1398_0_random_Store(EOS(STATIC_1398), i388, o553) → 1402_0_random_FieldAccess(EOS(STATIC_1402), i388, o553)
1402_0_random_FieldAccess(EOS(STATIC_1402), i388, o553) → 1404_0_random_ConstantStackPush(EOS(STATIC_1404), i388, o553)
1404_0_random_ConstantStackPush(EOS(STATIC_1404), i388, o553) → 1407_0_random_IntArithmetic(EOS(STATIC_1407), i388, o553)
1407_0_random_IntArithmetic(EOS(STATIC_1407), i388, o553) → 1411_0_random_FieldAccess(EOS(STATIC_1411), i388, o553)
1411_0_random_FieldAccess(EOS(STATIC_1411), i388, o553) → 1413_0_random_Load(EOS(STATIC_1413), i388, o553)
1413_0_random_Load(EOS(STATIC_1413), i388, o553) → 1419_0_random_InvokeMethod(EOS(STATIC_1419), i388, o553)
1419_0_random_InvokeMethod(EOS(STATIC_1419), i388, java.lang.Object(o570sub)) → 1422_0_random_InvokeMethod(EOS(STATIC_1422), i388, java.lang.Object(o570sub))
1422_0_random_InvokeMethod(EOS(STATIC_1422), i388, java.lang.Object(o570sub)) → 1425_0_length_Load(EOS(STATIC_1425), i388, java.lang.Object(o570sub), java.lang.Object(o570sub))
1425_0_length_Load(EOS(STATIC_1425), i388, java.lang.Object(o570sub), java.lang.Object(o570sub)) → 1435_0_length_FieldAccess(EOS(STATIC_1435), i388, java.lang.Object(o570sub), java.lang.Object(o570sub))
1435_0_length_FieldAccess(EOS(STATIC_1435), i388, java.lang.Object(java.lang.String(o578sub, i421)), java.lang.Object(java.lang.String(o578sub, i421))) → 1437_0_length_FieldAccess(EOS(STATIC_1437), i388, java.lang.Object(java.lang.String(o578sub, i421)), java.lang.Object(java.lang.String(o578sub, i421))) | &&(>=(i421, 0), >=(i422, 0))
1437_0_length_FieldAccess(EOS(STATIC_1437), i388, java.lang.Object(java.lang.String(o578sub, i421)), java.lang.Object(java.lang.String(o578sub, i421))) → 1444_0_length_Return(EOS(STATIC_1444), i388, java.lang.Object(java.lang.String(o578sub, i421)))
1444_0_length_Return(EOS(STATIC_1444), i388, java.lang.Object(java.lang.String(o578sub, i421))) → 1449_0_random_Return(EOS(STATIC_1449), i388)
1449_0_random_Return(EOS(STATIC_1449), i388) → 1450_0_createIntList_Load(EOS(STATIC_1450), i388)
1450_0_createIntList_Load(EOS(STATIC_1450), i388) → 1457_0_createIntList_InvokeMethod(EOS(STATIC_1457), i388)
1457_0_createIntList_InvokeMethod(EOS(STATIC_1457), i388) → 1463_0_<init>_Load(EOS(STATIC_1463), i388)
1463_0_<init>_Load(EOS(STATIC_1463), i388) → 1472_0_<init>_InvokeMethod(EOS(STATIC_1472), i388)
1472_0_<init>_InvokeMethod(EOS(STATIC_1472), i388) → 1480_0_<init>_Load(EOS(STATIC_1480), i388)
1480_0_<init>_Load(EOS(STATIC_1480), i388) → 1484_0_<init>_Load(EOS(STATIC_1484), i388)
1484_0_<init>_Load(EOS(STATIC_1484), i388) → 1490_0_<init>_FieldAccess(EOS(STATIC_1490), i388)
1490_0_<init>_FieldAccess(EOS(STATIC_1490), i388) → 1497_0_<init>_Load(EOS(STATIC_1497), i388)
1497_0_<init>_Load(EOS(STATIC_1497), i388) → 1504_0_<init>_Load(EOS(STATIC_1504), i388)
1504_0_<init>_Load(EOS(STATIC_1504), i388) → 1510_0_<init>_FieldAccess(EOS(STATIC_1510), i388)
1510_0_<init>_FieldAccess(EOS(STATIC_1510), i388) → 1519_0_<init>_Return(EOS(STATIC_1519), i388)
1519_0_<init>_Return(EOS(STATIC_1519), i388) → 1525_0_createIntList_Store(EOS(STATIC_1525), i388)
1525_0_createIntList_Store(EOS(STATIC_1525), i388) → 1533_0_createIntList_Inc(EOS(STATIC_1533), i388)
1533_0_createIntList_Inc(EOS(STATIC_1533), i388) → 1539_0_createIntList_JMP(EOS(STATIC_1539), +(i388, -1)) | >(i388, 0)
1539_0_createIntList_JMP(EOS(STATIC_1539), i466) → 1545_0_createIntList_Load(EOS(STATIC_1545), i466)
1545_0_createIntList_Load(EOS(STATIC_1545), i466) → 1368_0_createIntList_Load(EOS(STATIC_1368), i466)
1368_0_createIntList_Load(EOS(STATIC_1368), i383) → 1371_0_createIntList_LE(EOS(STATIC_1371), i383, i383)
R rules:
Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.
P rules:
1371_0_createIntList_LE(EOS(STATIC_1371), x0, x0) → 1371_0_createIntList_LE(EOS(STATIC_1371), +(x0, -1), +(x0, -1)) | >(x0, 0)
R rules:
Filtered ground terms:
1371_0_createIntList_LE(x1, x2, x3) → 1371_0_createIntList_LE(x2, x3)
EOS(x1) → EOS
Cond_1371_0_createIntList_LE(x1, x2, x3, x4) → Cond_1371_0_createIntList_LE(x1, x3, x4)
Filtered duplicate args:
1371_0_createIntList_LE(x1, x2) → 1371_0_createIntList_LE(x2)
Cond_1371_0_createIntList_LE(x1, x2, x3) → Cond_1371_0_createIntList_LE(x1, x3)
Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.
P rules:
1371_0_createIntList_LE(x0) → 1371_0_createIntList_LE(+(x0, -1)) | >(x0, 0)
R rules:
Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.
P rules:
1371_0_CREATEINTLIST_LE(x0) → COND_1371_0_CREATEINTLIST_LE(>(x0, 0), x0)
COND_1371_0_CREATEINTLIST_LE(TRUE, x0) → 1371_0_CREATEINTLIST_LE(+(x0, -1))
R rules:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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 (x0[0] > 0 ∧x0[0] →* x0[1])
(1) -> (0), if (x0[1] + -1 →* x0[0])
(1) (>(x0[0], 0)=TRUE∧x0[0]=x0[1] ⇒ 1371_0_CREATEINTLIST_LE(x0[0])≥NonInfC∧1371_0_CREATEINTLIST_LE(x0[0])≥COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥))
(2) (>(x0[0], 0)=TRUE ⇒ 1371_0_CREATEINTLIST_LE(x0[0])≥NonInfC∧1371_0_CREATEINTLIST_LE(x0[0])≥COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])∧(UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥))
(3) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(4) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(5) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(6) (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(7) (COND_1371_0_CREATEINTLIST_LE(TRUE, x0[1])≥NonInfC∧COND_1371_0_CREATEINTLIST_LE(TRUE, x0[1])≥1371_0_CREATEINTLIST_LE(+(x0[1], -1))∧(UIncreasing(1371_0_CREATEINTLIST_LE(+(x0[1], -1))), ≥))
(8) ((UIncreasing(1371_0_CREATEINTLIST_LE(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(9) ((UIncreasing(1371_0_CREATEINTLIST_LE(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(10) ((UIncreasing(1371_0_CREATEINTLIST_LE(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(11) ((UIncreasing(1371_0_CREATEINTLIST_LE(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(1371_0_CREATEINTLIST_LE(x1)) = [2]x1
POL(COND_1371_0_CREATEINTLIST_LE(x1, x2)) = [2]x2
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(+(x1, x2)) = x1 + x2
POL(-1) = [-1]
COND_1371_0_CREATEINTLIST_LE(TRUE, x0[1]) → 1371_0_CREATEINTLIST_LE(+(x0[1], -1))
1371_0_CREATEINTLIST_LE(x0[0]) → COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[0])
1371_0_CREATEINTLIST_LE(x0[0]) → COND_1371_0_CREATEINTLIST_LE(>(x0[0], 0), x0[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
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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
Generated 14 rules for P and 0 rules for R.
P rules:
1147_0_main_FieldAccess(EOS(STATIC_1147), java.lang.Object(o437sub), java.lang.Object(o437sub)) → 1151_0_main_FieldAccess(EOS(STATIC_1151), java.lang.Object(o437sub), java.lang.Object(o437sub))
1151_0_main_FieldAccess(EOS(STATIC_1151), java.lang.Object(IntList(EOC, i302)), java.lang.Object(IntList(EOC, i302))) → 1158_0_main_FieldAccess(EOS(STATIC_1158), java.lang.Object(IntList(EOC, i302)), java.lang.Object(IntList(EOC, i302)))
1158_0_main_FieldAccess(EOS(STATIC_1158), java.lang.Object(IntList(EOC, i302)), java.lang.Object(IntList(EOC, i302))) → 1163_0_main_LE(EOS(STATIC_1163), java.lang.Object(IntList(EOC, i302)), i302)
1163_0_main_LE(EOS(STATIC_1163), java.lang.Object(IntList(EOC, i309)), i309) → 1171_0_main_LE(EOS(STATIC_1171), java.lang.Object(IntList(EOC, i309)), i309)
1171_0_main_LE(EOS(STATIC_1171), java.lang.Object(IntList(EOC, i309)), i309) → 1178_0_main_Load(EOS(STATIC_1178), java.lang.Object(IntList(EOC, i309))) | >(i309, 0)
1178_0_main_Load(EOS(STATIC_1178), java.lang.Object(IntList(EOC, i309))) → 1184_0_main_Duplicate(EOS(STATIC_1184), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)))
1184_0_main_Duplicate(EOS(STATIC_1184), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309))) → 1191_0_main_FieldAccess(EOS(STATIC_1191), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)))
1191_0_main_FieldAccess(EOS(STATIC_1191), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309))) → 1199_0_main_ConstantStackPush(EOS(STATIC_1199), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), i309)
1199_0_main_ConstantStackPush(EOS(STATIC_1199), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), i309) → 1205_0_main_IntArithmetic(EOS(STATIC_1205), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), i309, 1)
1205_0_main_IntArithmetic(EOS(STATIC_1205), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), i309, matching1) → 1214_0_main_FieldAccess(EOS(STATIC_1214), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), -(i309, 1)) | &&(>(i309, 0), =(matching1, 1))
1214_0_main_FieldAccess(EOS(STATIC_1214), java.lang.Object(IntList(EOC, i309)), java.lang.Object(IntList(EOC, i309)), i324) → 1219_0_main_JMP(EOS(STATIC_1219), java.lang.Object(IntList(EOC, i324)))
1219_0_main_JMP(EOS(STATIC_1219), java.lang.Object(IntList(EOC, i324))) → 1226_0_main_Load(EOS(STATIC_1226), java.lang.Object(IntList(EOC, i324)))
1226_0_main_Load(EOS(STATIC_1226), java.lang.Object(IntList(EOC, i324))) → 1141_0_main_Load(EOS(STATIC_1141), java.lang.Object(IntList(EOC, i324)))
1141_0_main_Load(EOS(STATIC_1141), o426) → 1147_0_main_FieldAccess(EOS(STATIC_1147), o426, o426)
R rules:
Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.
P rules:
1147_0_main_FieldAccess(EOS(STATIC_1147), java.lang.Object(IntList(EOC, x0)), java.lang.Object(IntList(EOC, x0))) → 1147_0_main_FieldAccess(EOS(STATIC_1147), java.lang.Object(IntList(EOC, -(x0, 1))), java.lang.Object(IntList(EOC, -(x0, 1)))) | >(x0, 0)
R rules:
Filtered ground terms:
1147_0_main_FieldAccess(x1, x2, x3) → 1147_0_main_FieldAccess(x2, x3)
IntList(x1, x2) → IntList(x2)
EOS(x1) → EOS
Cond_1147_0_main_FieldAccess(x1, x2, x3, x4) → Cond_1147_0_main_FieldAccess(x1, x3, x4)
Filtered duplicate args:
1147_0_main_FieldAccess(x1, x2) → 1147_0_main_FieldAccess(x2)
Cond_1147_0_main_FieldAccess(x1, x2, x3) → Cond_1147_0_main_FieldAccess(x1, x3)
Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.
P rules:
1147_0_main_FieldAccess(java.lang.Object(IntList(x0))) → 1147_0_main_FieldAccess(java.lang.Object(IntList(-(x0, 1)))) | >(x0, 0)
R rules:
Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.
P rules:
1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0))) → COND_1147_0_MAIN_FIELDACCESS(>(x0, 0), java.lang.Object(IntList(x0)))
COND_1147_0_MAIN_FIELDACCESS(TRUE, java.lang.Object(IntList(x0))) → 1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0, 1))))
R rules:
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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 (x0[0] > 0 ∧java.lang.Object(IntList(x0[0])) →* java.lang.Object(IntList(x0[1])))
(1) -> (0), if (java.lang.Object(IntList(x0[1] - 1)) →* java.lang.Object(IntList(x0[0])))
(1) (>(x0[0], 0)=TRUE∧java.lang.Object(IntList(x0[0]))=java.lang.Object(IntList(x0[1])) ⇒ 1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0])))≥NonInfC∧1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0])))≥COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))∧(UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥))
(2) (>(x0[0], 0)=TRUE ⇒ 1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0])))≥NonInfC∧1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0])))≥COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))∧(UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥))
(3) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(4) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(5) (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(6) (x0[0] ≥ 0 ⇒ (UIncreasing(COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)
(7) (COND_1147_0_MAIN_FIELDACCESS(TRUE, java.lang.Object(IntList(x0[1])))≥NonInfC∧COND_1147_0_MAIN_FIELDACCESS(TRUE, java.lang.Object(IntList(x0[1])))≥1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))∧(UIncreasing(1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))), ≥))
(8) ((UIncreasing(1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(9) ((UIncreasing(1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(10) ((UIncreasing(1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)
(11) ((UIncreasing(1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)
POL(TRUE) = 0
POL(FALSE) = 0
POL(1147_0_MAIN_FIELDACCESS(x1)) = [2]x1
POL(java.lang.Object(x1)) = x1
POL(IntList(x1)) = x1
POL(COND_1147_0_MAIN_FIELDACCESS(x1, x2)) = [2]x2
POL(>(x1, x2)) = [-1]
POL(0) = 0
POL(-(x1, x2)) = x1 + [-1]x2
POL(1) = [1]
COND_1147_0_MAIN_FIELDACCESS(TRUE, java.lang.Object(IntList(x0[1]))) → 1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(-(x0[1], 1))))
1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0]))) → COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[0])))
1147_0_MAIN_FIELDACCESS(java.lang.Object(IntList(x0[0]))) → COND_1147_0_MAIN_FIELDACCESS(>(x0[0], 0), java.lang.Object(IntList(x0[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
!= | ~ | Neq: (Integer, Integer) -> Boolean |
* | ~ | Mul: (Integer, Integer) -> Integer |
>= | ~ | Ge: (Integer, Integer) -> Boolean |
-1 | ~ | UnaryMinus: (Integer) -> Integer |
| | ~ | Bwor: (Integer, Integer) -> Integer |
/ | ~ | Div: (Integer, Integer) -> Integer |
= | ~ | Eq: (Integer, Integer) -> Boolean |
~ | Bwxor: (Integer, Integer) -> Integer | |
|| | ~ | Lor: (Boolean, Boolean) -> Boolean |
! | ~ | Lnot: (Boolean) -> Boolean |
< | ~ | Lt: (Integer, Integer) -> Boolean |
- | ~ | Sub: (Integer, Integer) -> Integer |
<= | ~ | Le: (Integer, Integer) -> 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