(0) Obligation:

JBC Problem based on JBC Program:
public class Random {
static String[] args;
static int index = 0;

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


public class Shuffle{

// adapted from [Walther, 94]
public static void main(String[] args) {
Random.args = args;
IntList l = IntList.createIntList();
IntList res = null;

while (l != null) {

res = new IntList(l.value, res);
l = l.next;
if (l != null) l = l.reverse();

}

}
}


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();
int j;

IntList l = null;

while (i > 0) {
j = Random.random();
l = new IntList(j, l);
i--;
}

return l;
}

public IntList reverse() {

IntList res = null;
IntList l = this;

while (l != null) {
res = new IntList(l.value, res);
l = l.next;

}

return res;
}
}


(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

Termination Graph based on JBC Program:
Shuffle.main([Ljava/lang/String;)V: Graph of 94 nodes with 1 SCC.

IntList.createIntList()LIntList;: Graph of 165 nodes with 1 SCC.

IntList.reverse()LIntList;: Graph of 54 nodes with 1 SCC.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 3 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: IntList.reverse()LIntList;
SCC calls the following helper methods:
Performed SCC analyses:
  • Used field analysis yielded the following read fields:
    • IntList: [value, next]
  • Marker field analysis yielded the following relations that could be markers:

(6) SCCToIntTRSProof (SOUND transformation)

Transformed FIGraph SCCs to intTRSs. Log:

Generated rules. Obtained 46 IRules

P rules:
f1790_0_reverse_NULL(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub)) → f1792_0_reverse_NULL(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub))
f1792_0_reverse_NULL(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub)) → f1802_0_reverse_New(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub))
f1802_0_reverse_New(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub)) → f1824_0_reverse_Duplicate(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub))
f1824_0_reverse_Duplicate(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub)) → f1836_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub))
f1836_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub)) → f1844_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub))
f1844_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub)) → f1857_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(o608sub), java.lang.Object(o608sub))
f1844_0_reverse_FieldAccess(EOS, java.lang.Object(o632sub), java.lang.Object(o632sub), java.lang.Object(o632sub)) → f1858_0_reverse_FieldAccess(EOS, java.lang.Object(o632sub), java.lang.Object(o632sub), java.lang.Object(o632sub))
f1857_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o635))) → f1863_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o635)))
f1863_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o635))) → f1875_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1875_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1886_0_reverse_InvokeMethod(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1886_0_reverse_InvokeMethod(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1896_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1896_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1917_0__init__InvokeMethod(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1917_0__init__InvokeMethod(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1924_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1924_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1936_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1936_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1945_0__init__FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1945_0__init__FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1959_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1959_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1965_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1965_0__init__Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1978_0__init__FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1978_0__init__FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f1990_0__init__Return(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f1990_0__init__Return(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f2008_0_reverse_Store(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f2008_0_reverse_Store(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f2031_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f2031_0_reverse_Load(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f2045_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)))
f2045_0_reverse_FieldAccess(EOS, java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635))) → f2063_0_reverse_Store(EOS, java.lang.Object(o596sub), o635)
f2063_0_reverse_Store(EOS, java.lang.Object(o596sub), o635) → f2077_0_reverse_JMP(EOS, java.lang.Object(o596sub), o635)
f2077_0_reverse_JMP(EOS, java.lang.Object(o596sub), o635) → f2097_0_reverse_Load(EOS, java.lang.Object(o596sub), o635)
f2097_0_reverse_Load(EOS, java.lang.Object(o596sub), o635) → f1784_0_reverse_Load(EOS, java.lang.Object(o596sub), o635)
f1784_0_reverse_Load(EOS, java.lang.Object(o596sub), o598) → f1790_0_reverse_NULL(EOS, java.lang.Object(o596sub), o598, o598)
f1858_0_reverse_FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1869_0_reverse_FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1869_0_reverse_FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1880_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1880_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1890_0_reverse_InvokeMethod(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1890_0_reverse_InvokeMethod(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1902_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1902_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1919_0__init__InvokeMethod(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1919_0__init__InvokeMethod(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1930_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1930_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1941_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1941_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1950_0__init__FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1950_0__init__FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1963_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1963_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1972_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1972_0__init__Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f1984_0__init__FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f1984_0__init__FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f2002_0__init__Return(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f2002_0__init__Return(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f2030_0_reverse_Store(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f2030_0_reverse_Store(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f2036_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f2036_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f2056_0_reverse_FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)))
f2056_0_reverse_FieldAccess(EOS, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638))) → f2071_0_reverse_Store(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638)
f2071_0_reverse_Store(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638) → f2088_0_reverse_JMP(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638)
f2088_0_reverse_JMP(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638) → f2104_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638)
f2104_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638) → f1784_0_reverse_Load(EOS, java.lang.Object(IntList(EOC, i343, o638)), o638)

Combined rules. Obtained 2 IRules

P rules:
f1790_0_reverse_NULL(EOS, java.lang.Object(x0), java.lang.Object(IntList(EOC, x1, x2)), java.lang.Object(IntList(EOC, x1, x2))) → f1790_0_reverse_NULL(EOS, java.lang.Object(x0), x2, x2)
f1790_0_reverse_NULL(EOS, java.lang.Object(IntList(EOC, x0, x1)), java.lang.Object(IntList(EOC, x0, x1)), java.lang.Object(IntList(EOC, x0, x1))) → f1790_0_reverse_NULL(EOS, java.lang.Object(IntList(EOC, x0, x1)), x1, x1)

Filtered ground terms:


f1790_0_reverse_NULL(x1, x2, x3, x4) → f1790_0_reverse_NULL(x2, x3, x4)
IntList(x1, x2, x3) → IntList(x2, x3)

Filtered duplicate terms:


f1790_0_reverse_NULL(x1, x2, x3) → f1790_0_reverse_NULL(x1, x3)

Filtered unneeded terms:


IntList(x1, x2) → IntList(x2)

Prepared 2 rules for path length conversion:

P rules:
f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x2))) → f1790_0_reverse_NULL(java.lang.Object(x0), x2)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x1)

Finished conversion. Obtained 2 rules.

P rules:
f1790_0_reverse_NULL(v5, v6) → f1790_0_reverse_NULL(v7, v8) | &&(&&(&&(&&(&&(>(+(v8, 1), 0), <=(+(v8, 1), v6)), >(+(v7, 1), 1)), <=(v7, v5)), >(+(v6, 1), 1)), >(+(v5, 1), 1))
f1790_0_reverse_NULL(v9, v10) → f1790_0_reverse_NULL(v11, v12) | &&(&&(&&(&&(&&(&&(&&(>=(v9, +(v12, 1)), >=(v9, v11)), >(+(v9, 1), 1)), >(+(v12, 1), 0)), <=(+(v12, 1), v10)), >(+(v11, 1), 1)), <=(v11, v10)), >(+(v10, 1), 1))

(7) Obligation:

Rules:
f1790_0_reverse_NULL(v5, v6) → f1790_0_reverse_NULL(v7, v8) | &&(&&(&&(&&(&&(>(+(v8, 1), 0), <=(+(v8, 1), v6)), >(+(v7, 1), 1)), <=(v7, v5)), >(+(v6, 1), 1)), >(+(v5, 1), 1))
f1790_0_reverse_NULL(v9, v10) → f1790_0_reverse_NULL(v11, v12) | &&(&&(&&(&&(&&(&&(&&(>=(v9, +(v12, 1)), >=(v9, v11)), >(+(v9, 1), 1)), >(+(v12, 1), 0)), <=(+(v12, 1), v10)), >(+(v11, 1), 1)), <=(v11, v10)), >(+(v10, 1), 1))

(8) PolynomialOrderProcessor (EQUIVALENT transformation)

Found the following polynomial interpretation:


[f1790_0_reverse_NULL(x9, x11)] = x11

Therefore the following rule(s) have been dropped:


f1790_0_reverse_NULL(x0, x1) → f1790_0_reverse_NULL(x2, x3) | &&(&&(&&(&&(&&(>(+(x3, 1), 0), <=(+(x3, 1), x1)), >(+(x2, 1), 1)), <=(x2, x0)), >(+(x1, 1), 1)), >(+(x0, 1), 1))
f1790_0_reverse_NULL(x4, x5) → f1790_0_reverse_NULL(x6, x7) | &&(&&(&&(&&(&&(&&(&&(>=(x4, +(x7, 1)), >=(x4, x6)), >(+(x4, 1), 1)), >(+(x7, 1), 0)), <=(+(x7, 1), x5)), >(+(x6, 1), 1)), <=(x6, x5)), >(+(x5, 1), 1))

(9) YES

(10) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: IntList.createIntList()LIntList;
SCC calls the following helper methods:
Performed SCC analyses:
  • Used field analysis yielded the following read fields:
    • java.lang.String: [count]
  • Marker field analysis yielded the following relations that could be markers:

(11) SCCToIntTRSProof (SOUND transformation)

Transformed FIGraph SCCs to intTRSs. Log:

Generated rules. Obtained 40 IRules

P rules:
f2323_0_createIntList_LE(EOS, i453, i453) → f2327_0_createIntList_LE(EOS, i453, i453)
f2327_0_createIntList_LE(EOS, i453, i453) → f2330_0_createIntList_InvokeMethod(EOS, i453) | >(i453, 0)
f2330_0_createIntList_InvokeMethod(EOS, i453) → f2333_0_random_FieldAccess(EOS, i453)
f2333_0_random_FieldAccess(EOS, i453) → f2340_0_random_FieldAccess(EOS, i453)
f2340_0_random_FieldAccess(EOS, i453) → f2346_0_random_ArrayAccess(EOS, i453)
f2346_0_random_ArrayAccess(EOS, i453) → f2348_0_random_ArrayAccess(EOS, i453)
f2348_0_random_ArrayAccess(EOS, i453) → f2352_0_random_Store(EOS, i453, o844)
f2352_0_random_Store(EOS, i453, o844) → f2354_0_random_FieldAccess(EOS, i453, o844)
f2354_0_random_FieldAccess(EOS, i453, o844) → f2356_0_random_ConstantStackPush(EOS, i453, o844)
f2356_0_random_ConstantStackPush(EOS, i453, o844) → f2360_0_random_IntArithmetic(EOS, i453, o844)
f2360_0_random_IntArithmetic(EOS, i453, o844) → f2364_0_random_FieldAccess(EOS, i453, o844)
f2364_0_random_FieldAccess(EOS, i453, o844) → f2367_0_random_Load(EOS, i453, o844)
f2367_0_random_Load(EOS, i453, o844) → f2373_0_random_InvokeMethod(EOS, i453, o844)
f2373_0_random_InvokeMethod(EOS, i453, java.lang.Object(o859sub)) → f2375_0_random_InvokeMethod(EOS, i453, java.lang.Object(o859sub))
f2375_0_random_InvokeMethod(EOS, i453, java.lang.Object(o859sub)) → f2379_0_length_Load(EOS, i453, java.lang.Object(o859sub), java.lang.Object(o859sub))
f2379_0_length_Load(EOS, i453, java.lang.Object(o859sub), java.lang.Object(o859sub)) → f2390_0_length_FieldAccess(EOS, i453, java.lang.Object(o859sub), java.lang.Object(o859sub))
f2390_0_length_FieldAccess(EOS, i453, java.lang.Object(java.lang.String(o867sub, i484)), java.lang.Object(java.lang.String(o867sub, i484))) → f2393_0_length_FieldAccess(EOS, i453, java.lang.Object(java.lang.String(o867sub, i484)), java.lang.Object(java.lang.String(o867sub, i484)))
f2393_0_length_FieldAccess(EOS, i453, java.lang.Object(java.lang.String(o867sub, i484)), java.lang.Object(java.lang.String(o867sub, i484))) → f2398_0_length_Return(EOS, i453, java.lang.Object(java.lang.String(o867sub, i484)))
f2398_0_length_Return(EOS, i453, java.lang.Object(java.lang.String(o867sub, i484))) → f2404_0_random_Return(EOS, i453)
f2404_0_random_Return(EOS, i453) → f2405_0_createIntList_Store(EOS, i453)
f2405_0_createIntList_Store(EOS, i453) → f2414_0_createIntList_New(EOS, i453)
f2414_0_createIntList_New(EOS, i453) → f2421_0_createIntList_Duplicate(EOS, i453)
f2421_0_createIntList_Duplicate(EOS, i453) → f2424_0_createIntList_Load(EOS, i453)
f2424_0_createIntList_Load(EOS, i453) → f2434_0_createIntList_Load(EOS, i453)
f2434_0_createIntList_Load(EOS, i453) → f2443_0_createIntList_InvokeMethod(EOS, i453)
f2443_0_createIntList_InvokeMethod(EOS, i453) → f2449_0__init__Load(EOS, i453)
f2449_0__init__Load(EOS, i453) → f2467_0__init__InvokeMethod(EOS, i453)
f2467_0__init__InvokeMethod(EOS, i453) → f2476_0__init__Load(EOS, i453)
f2476_0__init__Load(EOS, i453) → f2485_0__init__Load(EOS, i453)
f2485_0__init__Load(EOS, i453) → f2496_0__init__FieldAccess(EOS, i453)
f2496_0__init__FieldAccess(EOS, i453) → f2504_0__init__Load(EOS, i453)
f2504_0__init__Load(EOS, i453) → f2515_0__init__Load(EOS, i453)
f2515_0__init__Load(EOS, i453) → f2522_0__init__FieldAccess(EOS, i453)
f2522_0__init__FieldAccess(EOS, i453) → f2529_0__init__Return(EOS, i453)
f2529_0__init__Return(EOS, i453) → f2544_0_createIntList_Store(EOS, i453)
f2544_0_createIntList_Store(EOS, i453) → f2553_0_createIntList_Inc(EOS, i453)
f2553_0_createIntList_Inc(EOS, i453) → f2556_0_createIntList_JMP(EOS, +(i453, -1)) | >(i453, 0)
f2556_0_createIntList_JMP(EOS, i537) → f2562_0_createIntList_Load(EOS, i537)
f2562_0_createIntList_Load(EOS, i537) → f2319_0_createIntList_Load(EOS, i537)
f2319_0_createIntList_Load(EOS, i449) → f2323_0_createIntList_LE(EOS, i449, i449)

Combined rules. Obtained 1 IRules

P rules:
f2323_0_createIntList_LE(EOS, x0, x0) → f2323_0_createIntList_LE(EOS, -(x0, 1), -(x0, 1)) | >(x0, 0)

Filtered ground terms:


f2323_0_createIntList_LE(x1, x2, x3) → f2323_0_createIntList_LE(x2, x3)
Cond_f2323_0_createIntList_LE(x1, x2, x3, x4) → Cond_f2323_0_createIntList_LE(x1, x3, x4)

Filtered duplicate terms:


f2323_0_createIntList_LE(x1, x2) → f2323_0_createIntList_LE(x2)
Cond_f2323_0_createIntList_LE(x1, x2, x3) → Cond_f2323_0_createIntList_LE(x1, x3)

Prepared 1 rules for path length conversion:

P rules:
f2323_0_createIntList_LE(x0) → f2323_0_createIntList_LE(-(x0, 1)) | >(x0, 0)

Finished conversion. Obtained 1 rules.

P rules:
f2323_0_createIntList_LE(x0) → f2323_0_createIntList_LE(-(x0, 1)) | >(x0, 0)

(12) Obligation:

Rules:
f2323_0_createIntList_LE(x0) → f2323_0_createIntList_LE(-(x0, 1)) | >(x0, 0)

(13) PolynomialOrderProcessor (EQUIVALENT transformation)

Found the following polynomial interpretation:


[f2323_0_createIntList_LE(x2)] = x2

Therefore the following rule(s) have been dropped:


f2323_0_createIntList_LE(x0) → f2323_0_createIntList_LE(-(x0, 1)) | >(x0, 0)

(14) YES

(15) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Shuffle.main([Ljava/lang/String;)V
SCC calls the following helper methods: IntList.reverse()LIntList;
Performed SCC analyses:
  • Used field analysis yielded the following read fields:
    • IntList: [value, next]
  • Marker field analysis yielded the following relations that could be markers:

(16) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 37 rules for P and 56 rules for R.


P rules:
f2034_0_main_NULL(EOS(STATIC_2034), java.lang.Object(o707sub), java.lang.Object(o707sub)) → f2042_0_main_NULL(EOS(STATIC_2042), java.lang.Object(o707sub), java.lang.Object(o707sub))
f2042_0_main_NULL(EOS(STATIC_2042), java.lang.Object(o707sub), java.lang.Object(o707sub)) → f2053_0_main_New(EOS(STATIC_2053), java.lang.Object(o707sub))
f2053_0_main_New(EOS(STATIC_2053), java.lang.Object(o707sub)) → f2068_0_main_Duplicate(EOS(STATIC_2068), java.lang.Object(o707sub))
f2068_0_main_Duplicate(EOS(STATIC_2068), java.lang.Object(o707sub)) → f2084_0_main_Load(EOS(STATIC_2084), java.lang.Object(o707sub))
f2084_0_main_Load(EOS(STATIC_2084), java.lang.Object(o707sub)) → f2092_0_main_FieldAccess(EOS(STATIC_2092), java.lang.Object(o707sub), java.lang.Object(o707sub))
f2092_0_main_FieldAccess(EOS(STATIC_2092), java.lang.Object(IntList(EOC, i389, o728)), java.lang.Object(IntList(EOC, i389, o728))) → f2099_0_main_FieldAccess(EOS(STATIC_2099), java.lang.Object(IntList(EOC, i389, o728)), java.lang.Object(IntList(EOC, i389, o728)))
f2099_0_main_FieldAccess(EOS(STATIC_2099), java.lang.Object(IntList(EOC, i389, o728)), java.lang.Object(IntList(EOC, i389, o728))) → f2109_0_main_Load(EOS(STATIC_2109), java.lang.Object(IntList(EOC, i389, o728)))
f2109_0_main_Load(EOS(STATIC_2109), java.lang.Object(IntList(EOC, i389, o728))) → f2112_0_main_InvokeMethod(EOS(STATIC_2112), java.lang.Object(IntList(EOC, i389, o728)))
f2112_0_main_InvokeMethod(EOS(STATIC_2112), java.lang.Object(IntList(EOC, i389, o728))) → f2117_0__init__Load(EOS(STATIC_2117), java.lang.Object(IntList(EOC, i389, o728)))
f2117_0__init__Load(EOS(STATIC_2117), java.lang.Object(IntList(EOC, i389, o728))) → f2123_0__init__InvokeMethod(EOS(STATIC_2123), java.lang.Object(IntList(EOC, i389, o728)))
f2123_0__init__InvokeMethod(EOS(STATIC_2123), java.lang.Object(IntList(EOC, i389, o728))) → f2127_0__init__Load(EOS(STATIC_2127), java.lang.Object(IntList(EOC, i389, o728)))
f2127_0__init__Load(EOS(STATIC_2127), java.lang.Object(IntList(EOC, i389, o728))) → f2134_0__init__Load(EOS(STATIC_2134), java.lang.Object(IntList(EOC, i389, o728)))
f2134_0__init__Load(EOS(STATIC_2134), java.lang.Object(IntList(EOC, i389, o728))) → f2137_0__init__FieldAccess(EOS(STATIC_2137), java.lang.Object(IntList(EOC, i389, o728)))
f2137_0__init__FieldAccess(EOS(STATIC_2137), java.lang.Object(IntList(EOC, i389, o728))) → f2139_0__init__Load(EOS(STATIC_2139), java.lang.Object(IntList(EOC, i389, o728)))
f2139_0__init__Load(EOS(STATIC_2139), java.lang.Object(IntList(EOC, i389, o728))) → f2145_0__init__Load(EOS(STATIC_2145), java.lang.Object(IntList(EOC, i389, o728)))
f2145_0__init__Load(EOS(STATIC_2145), java.lang.Object(IntList(EOC, i389, o728))) → f2148_0__init__FieldAccess(EOS(STATIC_2148), java.lang.Object(IntList(EOC, i389, o728)))
f2148_0__init__FieldAccess(EOS(STATIC_2148), java.lang.Object(IntList(EOC, i389, o728))) → f2154_0__init__Return(EOS(STATIC_2154), java.lang.Object(IntList(EOC, i389, o728)))
f2154_0__init__Return(EOS(STATIC_2154), java.lang.Object(IntList(EOC, i389, o728))) → f2158_0_main_Store(EOS(STATIC_2158), java.lang.Object(IntList(EOC, i389, o728)))
f2158_0_main_Store(EOS(STATIC_2158), java.lang.Object(IntList(EOC, i389, o728))) → f2160_0_main_Load(EOS(STATIC_2160), java.lang.Object(IntList(EOC, i389, o728)))
f2160_0_main_Load(EOS(STATIC_2160), java.lang.Object(IntList(EOC, i389, o728))) → f2165_0_main_FieldAccess(EOS(STATIC_2165), java.lang.Object(IntList(EOC, i389, o728)))
f2165_0_main_FieldAccess(EOS(STATIC_2165), java.lang.Object(IntList(EOC, i389, o728))) → f2170_0_main_Store(EOS(STATIC_2170), o728)
f2170_0_main_Store(EOS(STATIC_2170), o728) → f2175_0_main_Load(EOS(STATIC_2175), o728)
f2175_0_main_Load(EOS(STATIC_2175), o728) → f2180_0_main_NULL(EOS(STATIC_2180), o728, o728)
f2180_0_main_NULL(EOS(STATIC_2180), java.lang.Object(o765sub), java.lang.Object(o765sub)) → f2185_0_main_NULL(EOS(STATIC_2185), java.lang.Object(o765sub), java.lang.Object(o765sub))
f2180_0_main_NULL(EOS(STATIC_2180), NULL, NULL) → f2186_0_main_NULL(EOS(STATIC_2186), NULL, NULL)
f2185_0_main_NULL(EOS(STATIC_2185), java.lang.Object(o765sub), java.lang.Object(o765sub)) → f2188_0_main_Load(EOS(STATIC_2188), java.lang.Object(o765sub))
f2188_0_main_Load(EOS(STATIC_2188), java.lang.Object(o765sub)) → f2199_0_main_InvokeMethod(EOS(STATIC_2199), java.lang.Object(o765sub))
f2199_0_main_InvokeMethod(EOS(STATIC_2199), java.lang.Object(o765sub)) → f2202_1_main_InvokeMethod(f2202_0_reverse_ConstantStackPush(EOS(STATIC_2202), java.lang.Object(o765sub), java.lang.Object(o765sub)), java.lang.Object(o765sub))
f2202_0_reverse_ConstantStackPush(EOS(STATIC_2202), java.lang.Object(o765sub), java.lang.Object(o765sub)) → f2209_0_reverse_ConstantStackPush(EOS(STATIC_2209), java.lang.Object(o765sub), java.lang.Object(o765sub))
f2230_0_reverse_Return(EOS(STATIC_2230), java.lang.Object(o788sub), o783) → f2234_0_main_Store(EOS(STATIC_2234), o783)
f2234_0_main_Store(EOS(STATIC_2234), o783) → f2239_0_main_JMP(EOS(STATIC_2239), o783)
f2239_0_main_JMP(EOS(STATIC_2239), o783) → f2247_0_main_Load(EOS(STATIC_2247), o783)
f2247_0_main_Load(EOS(STATIC_2247), o783) → f2024_0_main_Load(EOS(STATIC_2024), o783)
f2024_0_main_Load(EOS(STATIC_2024), o695) → f2034_0_main_NULL(EOS(STATIC_2034), o695, o695)
f2186_0_main_NULL(EOS(STATIC_2186), NULL, NULL) → f2194_0_main_Load(EOS(STATIC_2194), NULL)
f2194_0_main_Load(EOS(STATIC_2194), NULL) → f2024_0_main_Load(EOS(STATIC_2024), NULL)
f2202_1_main_InvokeMethod(f1830_0_reverse_Return(EOS(STATIC_1830), java.lang.Object(o788sub), o783), java.lang.Object(o788sub)) → f2230_0_reverse_Return(EOS(STATIC_2230), java.lang.Object(o788sub), o783)
R rules:
f2202_0_reverse_ConstantStackPush(EOS(STATIC_2202), java.lang.Object(o765sub), java.lang.Object(o765sub)) → f2209_0_reverse_ConstantStackPush(EOS(STATIC_2209), java.lang.Object(o765sub), java.lang.Object(o765sub))
f2209_0_reverse_ConstantStackPush(EOS(STATIC_2209), java.lang.Object(o765sub), java.lang.Object(o765sub)) → f1621_0_reverse_ConstantStackPush(EOS(STATIC_1621), java.lang.Object(o765sub), java.lang.Object(o765sub))
f1621_0_reverse_ConstantStackPush(EOS(STATIC_1621), java.lang.Object(o542sub), java.lang.Object(o542sub)) → f1627_0_reverse_Store(EOS(STATIC_1627), java.lang.Object(o542sub), java.lang.Object(o542sub), NULL)
f1627_0_reverse_Store(EOS(STATIC_1627), java.lang.Object(o542sub), java.lang.Object(o542sub), NULL) → f1632_0_reverse_Load(EOS(STATIC_1632), java.lang.Object(o542sub), java.lang.Object(o542sub), NULL)
f1632_0_reverse_Load(EOS(STATIC_1632), java.lang.Object(o542sub), java.lang.Object(o542sub), NULL) → f1636_0_reverse_Store(EOS(STATIC_1636), java.lang.Object(o542sub), NULL, java.lang.Object(o542sub))
f1636_0_reverse_Store(EOS(STATIC_1636), java.lang.Object(o542sub), NULL, java.lang.Object(o542sub)) → f1643_0_reverse_Load(EOS(STATIC_1643), java.lang.Object(o542sub), NULL, java.lang.Object(o542sub))
f1643_0_reverse_Load(EOS(STATIC_1643), java.lang.Object(o542sub), NULL, java.lang.Object(o542sub)) → f1784_0_reverse_Load(EOS(STATIC_1784), java.lang.Object(o542sub), NULL, java.lang.Object(o542sub))
f1784_0_reverse_Load(EOS(STATIC_1784), java.lang.Object(o596sub), o597, o598) → f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(o596sub), o597, o598, o598)
f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(o608sub)) → f1792_0_reverse_NULL(EOS(STATIC_1792), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(o608sub))
f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(o596sub), o597, NULL, NULL) → f1793_0_reverse_NULL(EOS(STATIC_1793), java.lang.Object(o596sub), o597, NULL, NULL)
f1792_0_reverse_NULL(EOS(STATIC_1792), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(o608sub)) → f1802_0_reverse_New(EOS(STATIC_1802), java.lang.Object(o596sub), o597, java.lang.Object(o608sub))
f1793_0_reverse_NULL(EOS(STATIC_1793), java.lang.Object(o596sub), o597, NULL, NULL) → f1817_0_reverse_Load(EOS(STATIC_1817), java.lang.Object(o596sub), o597)
f1802_0_reverse_New(EOS(STATIC_1802), java.lang.Object(o596sub), o597, java.lang.Object(o608sub)) → f1824_0_reverse_Duplicate(EOS(STATIC_1824), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, 0, NULL)))
f1817_0_reverse_Load(EOS(STATIC_1817), java.lang.Object(o596sub), o597) → f1830_0_reverse_Return(EOS(STATIC_1830), java.lang.Object(o596sub), o597)
f1824_0_reverse_Duplicate(EOS(STATIC_1824), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, matching1, NULL))) → f1836_0_reverse_Load(EOS(STATIC_1836), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL))) | =(matching1, 0)
f1836_0_reverse_Load(EOS(STATIC_1836), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL))) → f1844_0_reverse_FieldAccess(EOS(STATIC_1844), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o608sub)) | &&(=(matching1, 0), =(matching2, 0))
f1844_0_reverse_FieldAccess(EOS(STATIC_1844), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(o608sub)) → f1857_0_reverse_FieldAccess(EOS(STATIC_1857), java.lang.Object(o596sub), o597, java.lang.Object(o608sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o608sub)) | &&(=(matching1, 0), =(matching2, 0))
f1844_0_reverse_FieldAccess(EOS(STATIC_1844), java.lang.Object(o632sub), o597, java.lang.Object(o632sub), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(o632sub)) → f1858_0_reverse_FieldAccess(EOS(STATIC_1858), java.lang.Object(o632sub), o597, java.lang.Object(o632sub), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(o632sub)) | &&(=(matching1, 0), =(matching2, 0))
f1857_0_reverse_FieldAccess(EOS(STATIC_1857), java.lang.Object(o596sub), o597, java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i342, o635))) → f1863_0_reverse_FieldAccess(EOS(STATIC_1863), java.lang.Object(o596sub), o597, java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i342, o635))) | &&(=(matching1, 0), =(matching2, 0))
f1858_0_reverse_FieldAccess(EOS(STATIC_1858), java.lang.Object(IntList(EOC, i343, o638)), o597, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i343, o638))) → f1869_0_reverse_FieldAccess(EOS(STATIC_1869), java.lang.Object(IntList(EOC, i343, o638)), o597, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, i343, o638))) | &&(=(matching1, 0), =(matching2, 0))
f1863_0_reverse_FieldAccess(EOS(STATIC_1863), java.lang.Object(o596sub), o597, java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i342, o635))) → f1875_0_reverse_Load(EOS(STATIC_1875), java.lang.Object(o596sub), o597, java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342) | &&(=(matching1, 0), =(matching2, 0))
f1869_0_reverse_FieldAccess(EOS(STATIC_1869), java.lang.Object(IntList(EOC, i343, o638)), o597, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), java.lang.Object(IntList(EOC, i343, o638))) → f1880_0_reverse_Load(EOS(STATIC_1880), java.lang.Object(IntList(EOC, i343, o638)), o597, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343) | &&(=(matching1, 0), =(matching2, 0))
f1875_0_reverse_Load(EOS(STATIC_1875), java.lang.Object(o596sub), o597, java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342) → f1886_0_reverse_InvokeMethod(EOS(STATIC_1886), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597) | &&(=(matching1, 0), =(matching2, 0))
f1880_0_reverse_Load(EOS(STATIC_1880), java.lang.Object(IntList(EOC, i343, o638)), o597, java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343) → f1890_0_reverse_InvokeMethod(EOS(STATIC_1890), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597) | &&(=(matching1, 0), =(matching2, 0))
f1886_0_reverse_InvokeMethod(EOS(STATIC_1886), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597) → f1896_0__init__Load(EOS(STATIC_1896), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL)), i342, o597) | &&(=(matching1, 0), =(matching2, 0))
f1890_0_reverse_InvokeMethod(EOS(STATIC_1890), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597) → f1902_0__init__Load(EOS(STATIC_1902), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL)), i343, o597) | &&(=(matching1, 0), =(matching2, 0))
f1896_0__init__Load(EOS(STATIC_1896), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i342, o597) → f1917_0__init__InvokeMethod(EOS(STATIC_1917), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
f1902_0__init__Load(EOS(STATIC_1902), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i343, o597) → f1919_0__init__InvokeMethod(EOS(STATIC_1919), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
f1917_0__init__InvokeMethod(EOS(STATIC_1917), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching4, NULL))) → f1924_0__init__Load(EOS(STATIC_1924), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL)), i342, o597) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1919_0__init__InvokeMethod(EOS(STATIC_1919), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching4, NULL))) → f1930_0__init__Load(EOS(STATIC_1930), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL)), i343, o597) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1924_0__init__Load(EOS(STATIC_1924), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i342, o597) → f1936_0__init__Load(EOS(STATIC_1936), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
f1930_0__init__Load(EOS(STATIC_1930), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i343, o597) → f1941_0__init__Load(EOS(STATIC_1941), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
f1936_0__init__Load(EOS(STATIC_1936), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching4, NULL))) → f1945_0__init__FieldAccess(EOS(STATIC_1945), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i342, o597, java.lang.Object(IntList(EOC, 0, NULL)), o597, java.lang.Object(IntList(EOC, 0, NULL)), i342) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1941_0__init__Load(EOS(STATIC_1941), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching3, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching4, NULL))) → f1950_0__init__FieldAccess(EOS(STATIC_1950), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, 0, NULL)), java.lang.Object(IntList(EOC, 0, NULL)), i343, o597, java.lang.Object(IntList(EOC, 0, NULL)), o597, java.lang.Object(IntList(EOC, 0, NULL)), i343) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1945_0__init__FieldAccess(EOS(STATIC_1945), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i342, o597, java.lang.Object(IntList(EOC, matching3, NULL)), o597, java.lang.Object(IntList(EOC, matching4, NULL)), i342) → f1959_0__init__Load(EOS(STATIC_1959), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, java.lang.Object(IntList(EOC, i342, NULL)), o597) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1950_0__init__FieldAccess(EOS(STATIC_1950), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, matching1, NULL)), java.lang.Object(IntList(EOC, matching2, NULL)), i343, o597, java.lang.Object(IntList(EOC, matching3, NULL)), o597, java.lang.Object(IntList(EOC, matching4, NULL)), i343) → f1963_0__init__Load(EOS(STATIC_1963), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, java.lang.Object(IntList(EOC, i343, NULL)), o597) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
f1959_0__init__Load(EOS(STATIC_1959), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, java.lang.Object(IntList(EOC, i342, NULL)), o597) → f1965_0__init__Load(EOS(STATIC_1965), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, o597, java.lang.Object(IntList(EOC, i342, NULL)))
f1963_0__init__Load(EOS(STATIC_1963), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, java.lang.Object(IntList(EOC, i343, NULL)), o597) → f1972_0__init__Load(EOS(STATIC_1972), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, o597, java.lang.Object(IntList(EOC, i343, NULL)))
f1965_0__init__Load(EOS(STATIC_1965), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, o597, java.lang.Object(IntList(EOC, i342, NULL))) → f1978_0__init__FieldAccess(EOS(STATIC_1978), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, java.lang.Object(IntList(EOC, i342, NULL)), o597)
f1972_0__init__Load(EOS(STATIC_1972), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, o597, java.lang.Object(IntList(EOC, i343, NULL))) → f1984_0__init__FieldAccess(EOS(STATIC_1984), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, java.lang.Object(IntList(EOC, i343, NULL)), o597)
f1978_0__init__FieldAccess(EOS(STATIC_1978), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, NULL)), java.lang.Object(IntList(EOC, i342, NULL)), i342, o597, java.lang.Object(IntList(EOC, i342, NULL)), o597) → f1990_0__init__Return(EOS(STATIC_1990), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o597)), i342, o597)
f1984_0__init__FieldAccess(EOS(STATIC_1984), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, NULL)), java.lang.Object(IntList(EOC, i343, NULL)), i343, o597, java.lang.Object(IntList(EOC, i343, NULL)), o597) → f2002_0__init__Return(EOS(STATIC_2002), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o597)), i343, o597)
f1990_0__init__Return(EOS(STATIC_1990), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o597)), i342, o597) → f2008_0_reverse_Store(EOS(STATIC_2008), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o597)))
f2002_0__init__Return(EOS(STATIC_2002), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o597)), i343, o597) → f2030_0_reverse_Store(EOS(STATIC_2030), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)))
f2008_0_reverse_Store(EOS(STATIC_2008), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o635)), java.lang.Object(IntList(EOC, i342, o597))) → f2031_0_reverse_Load(EOS(STATIC_2031), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o635)))
f2030_0_reverse_Store(EOS(STATIC_2030), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597))) → f2036_0_reverse_Load(EOS(STATIC_2036), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o638)))
f2031_0_reverse_Load(EOS(STATIC_2031), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o635))) → f2045_0_reverse_FieldAccess(EOS(STATIC_2045), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o635)))
f2036_0_reverse_Load(EOS(STATIC_2036), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o638))) → f2056_0_reverse_FieldAccess(EOS(STATIC_2056), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o638)))
f2045_0_reverse_FieldAccess(EOS(STATIC_2045), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), java.lang.Object(IntList(EOC, i342, o635))) → f2063_0_reverse_Store(EOS(STATIC_2063), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635)
f2056_0_reverse_FieldAccess(EOS(STATIC_2056), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), java.lang.Object(IntList(EOC, i343, o638))) → f2071_0_reverse_Store(EOS(STATIC_2071), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638)
f2063_0_reverse_Store(EOS(STATIC_2063), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635) → f2077_0_reverse_JMP(EOS(STATIC_2077), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635)
f2071_0_reverse_Store(EOS(STATIC_2071), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638) → f2088_0_reverse_JMP(EOS(STATIC_2088), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638)
f2077_0_reverse_JMP(EOS(STATIC_2077), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635) → f2097_0_reverse_Load(EOS(STATIC_2097), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635)
f2088_0_reverse_JMP(EOS(STATIC_2088), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638) → f2104_0_reverse_Load(EOS(STATIC_2104), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638)
f2097_0_reverse_Load(EOS(STATIC_2097), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635) → f1784_0_reverse_Load(EOS(STATIC_1784), java.lang.Object(o596sub), java.lang.Object(IntList(EOC, i342, o597)), o635)
f2104_0_reverse_Load(EOS(STATIC_2104), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638) → f1784_0_reverse_Load(EOS(STATIC_1784), java.lang.Object(IntList(EOC, i343, o638)), java.lang.Object(IntList(EOC, i343, o597)), o638)

Combined rules. Obtained 3 conditional rules for P and 4 conditional rules for R.


P rules:
f2034_0_main_NULL(EOS(STATIC_2034), java.lang.Object(IntList(EOC, x0, java.lang.Object(x1))), java.lang.Object(IntList(EOC, x0, java.lang.Object(x1)))) → f2202_1_main_InvokeMethod(f2209_0_reverse_ConstantStackPush(EOS(STATIC_2209), java.lang.Object(x1), java.lang.Object(x1)), java.lang.Object(x1))
f2034_0_main_NULL(EOS(STATIC_2034), java.lang.Object(IntList(EOC, x0, NULL)), java.lang.Object(IntList(EOC, x0, NULL))) → f2034_0_main_NULL(EOS(STATIC_2034), NULL, NULL)
f2202_1_main_InvokeMethod(f1830_0_reverse_Return(EOS(STATIC_1830), java.lang.Object(x0), x1), java.lang.Object(x0)) → f2034_0_main_NULL(EOS(STATIC_2034), x1, x1)
R rules:
f2209_0_reverse_ConstantStackPush(EOS(STATIC_2209), java.lang.Object(x0), java.lang.Object(x0)) → f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(EOS(STATIC_1830), java.lang.Object(x0), x1)
f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(x0), x1, java.lang.Object(IntList(EOC, x2, x3)), java.lang.Object(IntList(EOC, x2, x3))) → f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(x0), java.lang.Object(IntList(EOC, x2, x1)), x3, x3)
f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(IntList(EOC, x0, x1)), x2, java.lang.Object(IntList(EOC, x0, x1)), java.lang.Object(IntList(EOC, x0, x1))) → f1790_0_reverse_NULL(EOS(STATIC_1790), java.lang.Object(IntList(EOC, x0, x1)), java.lang.Object(IntList(EOC, x0, x2)), x1, x1)

Filtered ground terms:



f2034_0_main_NULL(x1, x2, x3) → f2034_0_main_NULL(x2, x3)
IntList(x1, x2, x3) → IntList(x2, x3)
f2209_0_reverse_ConstantStackPush(x1, x2, x3) → f2209_0_reverse_ConstantStackPush(x2, x3)
f1830_0_reverse_Return(x1, x2, x3) → f1830_0_reverse_Return(x2, x3)
f1790_0_reverse_NULL(x1, x2, x3, x4, x5) → f1790_0_reverse_NULL(x2, x3, x4, x5)

Filtered unneeded arguments:



IntList(x1, x2) → IntList(x2)
f2202_1_main_InvokeMethod(x1, x2) → f2202_1_main_InvokeMethod(x1)
f1830_0_reverse_Return(x1, x2) → f1830_0_reverse_Return(x2)

Filtered duplicate args:



f2034_0_main_NULL(x1, x2) → f2034_0_main_NULL(x2)
f2209_0_reverse_ConstantStackPush(x1, x2) → f2209_0_reverse_ConstantStackPush(x2)

Combined rules. Obtained 3 conditional rules for P and 4 conditional rules for R.


P rules:
F2034_0_MAIN_NULL(java.lang.Object(IntList(java.lang.Object(x1)))) → F2202_1_MAIN_INVOKEMETHOD(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1)))
F2034_0_MAIN_NULL(java.lang.Object(IntList(NULL))) → F2034_0_MAIN_NULL(NULL)
F2202_1_MAIN_INVOKEMETHOD(f1830_0_reverse_Return(x1)) → F2034_0_MAIN_NULL(x1)
R rules:
f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

Finished conversion. Obtained 3 rules for P and 4 rules for R. System has no predefined symbols.


P rules:
F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1)))) → F2202_1_MAIN_INVOKEMETHOD'(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1)))
F2034_0_MAIN_NULL'(java.lang.Object(IntList(NULL))) → F2034_0_MAIN_NULL'(NULL)
F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1)) → F2034_0_MAIN_NULL'(x1)
R rules:
f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

(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


The ITRS R consists of the following rules:
f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

The integer pair graph contains the following rules and edges:
(0): F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1[0])))
(1): F2034_0_MAIN_NULL'(java.lang.Object(IntList(NULL))) → F2034_0_MAIN_NULL'(NULL)
(2): F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])

(0) -> (2), if (f2209_0_reverse_ConstantStackPush(java.lang.Object(x1[0])) →* f1830_0_reverse_Return(x1[2]))


(1) -> (0), if (NULL* java.lang.Object(IntList(java.lang.Object(x1[0]))))


(1) -> (1), if (NULL* java.lang.Object(IntList(NULL)))


(2) -> (0), if (x1[2]* java.lang.Object(IntList(java.lang.Object(x1[0]))))


(2) -> (1), if (x1[2]* java.lang.Object(IntList(NULL)))



The set Q consists of the following terms:
f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

(18) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(19) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1[0])))
F2034_0_MAIN_NULL'(java.lang.Object(IntList(NULL))) → F2034_0_MAIN_NULL'(NULL)
F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])

The TRS R consists of the following rules:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

The set Q consists of the following terms:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

(20) DependencyGraphProof (EQUIVALENT transformation)

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

(21) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])
F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1[0])))

The TRS R consists of the following rules:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

The set Q consists of the following terms:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

(22) Rewriting (EQUIVALENT transformation)

By rewriting [LPAR04] the rule F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f2209_0_reverse_ConstantStackPush(java.lang.Object(x1[0]))) at position [0] we obtained the following new rules [LPAR04]:

F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f1790_0_reverse_NULL(java.lang.Object(x1[0]), NULL, java.lang.Object(x1[0]), java.lang.Object(x1[0])))

(23) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])
F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f1790_0_reverse_NULL(java.lang.Object(x1[0]), NULL, java.lang.Object(x1[0]), java.lang.Object(x1[0])))

The TRS R consists of the following rules:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0)) → f1790_0_reverse_NULL(java.lang.Object(x0), NULL, java.lang.Object(x0), java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)

The set Q consists of the following terms:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

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

(25) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])
F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f1790_0_reverse_NULL(java.lang.Object(x1[0]), NULL, java.lang.Object(x1[0]), java.lang.Object(x1[0])))

The TRS R consists of the following rules:

f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)

The set Q consists of the following terms:

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

(26) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

f2209_0_reverse_ConstantStackPush(java.lang.Object(x0))

(27) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])
F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f1790_0_reverse_NULL(java.lang.Object(x1[0]), NULL, java.lang.Object(x1[0]), java.lang.Object(x1[0])))

The TRS R consists of the following rules:

f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)

The set Q consists of the following terms:

f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

(28) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


F2034_0_MAIN_NULL'(java.lang.Object(IntList(java.lang.Object(x1[0])))) → F2202_1_MAIN_INVOKEMETHOD'(f1790_0_reverse_NULL(java.lang.Object(x1[0]), NULL, java.lang.Object(x1[0]), java.lang.Object(x1[0])))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(F2034_0_MAIN_NULL'(x1)) = x1   
POL(F2202_1_MAIN_INVOKEMETHOD'(x1)) = x1   
POL(IntList(x1)) = 1 + x1   
POL(NULL) = 0   
POL(f1790_0_reverse_NULL(x1, x2, x3, x4)) = x2 + x4   
POL(f1830_0_reverse_Return(x1)) = x1   
POL(java.lang.Object(x1)) = x1   

The following usable rules [FROCOS05] were oriented:

f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)

(29) Obligation:

Q DP problem:
The TRS P consists of the following rules:

F2202_1_MAIN_INVOKEMETHOD'(f1830_0_reverse_Return(x1[2])) → F2034_0_MAIN_NULL'(x1[2])

The TRS R consists of the following rules:

f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), x2, java.lang.Object(IntList(x1)), java.lang.Object(IntList(x1))) → f1790_0_reverse_NULL(java.lang.Object(IntList(x1)), java.lang.Object(IntList(x2)), x1, x1)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x3)), java.lang.Object(IntList(x3))) → f1790_0_reverse_NULL(java.lang.Object(x0), java.lang.Object(IntList(x1)), x3, x3)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL) → f1830_0_reverse_Return(x1)

The set Q consists of the following terms:

f1790_0_reverse_NULL(java.lang.Object(x0), x1, NULL, NULL)
f1790_0_reverse_NULL(java.lang.Object(x0), x1, java.lang.Object(IntList(x2)), java.lang.Object(IntList(x2)))

We have to consider all minimal (P,Q,R)-chains.

(30) DependencyGraphProof (EQUIVALENT transformation)

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

(31) TRUE