(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_20 (Apple Inc.) Main-Class: Test7
public class Test7 {
public static void main(String[] args) {
List[] ls = { List.mk(args.length), List.mk(args.length), List.mk(args.length) };

for (int k = 0; k < ls.length; k++) {
int len = length(ls[0]);
for (int i = 0; i < len; i++)
bubble(ls[0]);
}
}

private static void bubble(List l) {
for (List cursor = l; cursor != null && cursor.getTail() != null; cursor = cursor.getTail())
if (cursor.head > cursor.getTail().head) {
int temp = cursor.head;
cursor.head = cursor.getTail().head;
cursor.getTail().head = temp;
}
}

private static int length(List list) {
int len = 0;

while (list != null) {
list = list.getTail();
len++;
}

return len;
}
}

public class List {
public int head;
private List tail;

public List(int head, List tail) {
this.head = head;
this.tail = tail;
}

public List getTail() {
return tail;
}

public static List mk(int len) {
List result = null;

while (len-- > 0)
result = new List(len, result);

return result;
}
}

(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

List.mk(I)LList;: Graph of 31 nodes with 1 SCC.

Test7.length(LList;)I: Graph of 31 nodes with 1 SCC.

Test7.bubble(LList;)V: Graph of 138 nodes with 1 SCC.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 4 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test7.bubble(LList;)V
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 131 rules for P and 0 rules for R.


P rules:
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1573_0_bubble_NULL(EOS(STATIC_1573), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1573_0_bubble_NULL(EOS(STATIC_1573), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1576_0_bubble_Load(EOS(STATIC_1576), java.lang.Object(o1109sub))
1576_0_bubble_Load(EOS(STATIC_1576), java.lang.Object(o1109sub)) → 1578_0_bubble_InvokeMethod(EOS(STATIC_1578), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1578_0_bubble_InvokeMethod(EOS(STATIC_1578), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1580_0_getTail_Load(EOS(STATIC_1580), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1580_0_getTail_Load(EOS(STATIC_1580), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1590_0_getTail_FieldAccess(EOS(STATIC_1590), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1591_0_getTail_FieldAccess(EOS(STATIC_1591), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1590_0_getTail_FieldAccess(EOS(STATIC_1590), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313))) → 1592_0_getTail_FieldAccess(EOS(STATIC_1592), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)))
1592_0_getTail_FieldAccess(EOS(STATIC_1592), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313))) → 1596_0_getTail_Return(EOS(STATIC_1596), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)), o1116)
1596_0_getTail_Return(EOS(STATIC_1596), java.lang.Object(List(EOC, o1116, i313)), java.lang.Object(List(EOC, o1116, i313)), o1116) → 1599_0_bubble_NULL(EOS(STATIC_1599), java.lang.Object(List(EOC, o1116, i313)), o1116)
1599_0_bubble_NULL(EOS(STATIC_1599), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(o1126sub)) → 1603_0_bubble_NULL(EOS(STATIC_1603), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(o1126sub))
1603_0_bubble_NULL(EOS(STATIC_1603), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(o1126sub)) → 1609_0_bubble_Load(EOS(STATIC_1609), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)))
1609_0_bubble_Load(EOS(STATIC_1609), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313))) → 1616_0_bubble_FieldAccess(EOS(STATIC_1616), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)))
1616_0_bubble_FieldAccess(EOS(STATIC_1616), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313))) → 1623_0_bubble_Load(EOS(STATIC_1623), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313)
1623_0_bubble_Load(EOS(STATIC_1623), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313) → 1632_0_bubble_InvokeMethod(EOS(STATIC_1632), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)))
1632_0_bubble_InvokeMethod(EOS(STATIC_1632), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313))) → 1644_0_getTail_Load(EOS(STATIC_1644), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)))
1644_0_getTail_Load(EOS(STATIC_1644), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313))) → 1648_0_getTail_FieldAccess(EOS(STATIC_1648), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)))
1648_0_getTail_FieldAccess(EOS(STATIC_1648), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313))) → 1652_0_getTail_Return(EOS(STATIC_1652), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(o1126sub))
1652_0_getTail_Return(EOS(STATIC_1652), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), java.lang.Object(o1126sub)) → 1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(o1126sub))
1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(o1126sub)) → 1662_0_bubble_FieldAccess(EOS(STATIC_1662), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(o1126sub))
1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(o1126sub)) → 1663_0_bubble_FieldAccess(EOS(STATIC_1663), java.lang.Object(List(EOC, java.lang.Object(o1126sub), i313)), i313, java.lang.Object(o1126sub))
1662_0_bubble_FieldAccess(EOS(STATIC_1662), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, o1168, i318))) → 1667_0_bubble_FieldAccess(EOS(STATIC_1667), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, o1168, i318)))
1667_0_bubble_FieldAccess(EOS(STATIC_1667), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, o1168, i318))) → 1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318)
1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318) → 1681_0_bubble_LE(EOS(STATIC_1681), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318)
1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318) → 1682_0_bubble_LE(EOS(STATIC_1682), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318)
1681_0_bubble_LE(EOS(STATIC_1681), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318) → 1688_0_bubble_Load(EOS(STATIC_1688), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) | <=(i313, i318)
1688_0_bubble_Load(EOS(STATIC_1688), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318))) → 1855_0_bubble_InvokeMethod(EOS(STATIC_1855), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)))
1855_0_bubble_InvokeMethod(EOS(STATIC_1855), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318))) → 1859_0_getTail_Load(EOS(STATIC_1859), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)))
1859_0_getTail_Load(EOS(STATIC_1859), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318))) → 1868_0_getTail_FieldAccess(EOS(STATIC_1868), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)))
1868_0_getTail_FieldAccess(EOS(STATIC_1868), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318))) → 1881_0_getTail_Return(EOS(STATIC_1881), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, o1168, i313)))
1881_0_getTail_Return(EOS(STATIC_1881), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)), java.lang.Object(List(EOC, o1168, i313))) → 1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC, o1168, i313)))
1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC, o1168, i313))) → 1892_0_bubble_JMP(EOS(STATIC_1892), java.lang.Object(List(EOC, o1168, i313)))
1892_0_bubble_JMP(EOS(STATIC_1892), java.lang.Object(List(EOC, o1168, i313))) → 1896_0_bubble_Load(EOS(STATIC_1896), java.lang.Object(List(EOC, o1168, i313)))
1896_0_bubble_Load(EOS(STATIC_1896), java.lang.Object(List(EOC, o1168, i313))) → 1568_0_bubble_Load(EOS(STATIC_1568), java.lang.Object(List(EOC, o1168, i313)))
1568_0_bubble_Load(EOS(STATIC_1568), o1104) → 1572_0_bubble_NULL(EOS(STATIC_1572), o1104, o1104)
1682_0_bubble_LE(EOS(STATIC_1682), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, i318) → 1690_0_bubble_Load(EOS(STATIC_1690), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) | >(i313, i318)
1690_0_bubble_Load(EOS(STATIC_1690), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1699_0_bubble_FieldAccess(EOS(STATIC_1699), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1699_0_bubble_FieldAccess(EOS(STATIC_1699), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1707_0_bubble_Store(EOS(STATIC_1707), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313)
1707_0_bubble_Store(EOS(STATIC_1707), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313) → 1714_0_bubble_Load(EOS(STATIC_1714), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313)
1714_0_bubble_Load(EOS(STATIC_1714), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313) → 1724_0_bubble_Load(EOS(STATIC_1724), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1724_0_bubble_Load(EOS(STATIC_1724), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1737_0_bubble_InvokeMethod(EOS(STATIC_1737), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1737_0_bubble_InvokeMethod(EOS(STATIC_1737), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1749_0_getTail_Load(EOS(STATIC_1749), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1749_0_getTail_Load(EOS(STATIC_1749), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1763_0_getTail_FieldAccess(EOS(STATIC_1763), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)))
1763_0_getTail_FieldAccess(EOS(STATIC_1763), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313))) → 1777_0_getTail_Return(EOS(STATIC_1777), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, o1168, i318)))
1777_0_getTail_Return(EOS(STATIC_1777), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, o1168, i318))) → 1783_0_bubble_FieldAccess(EOS(STATIC_1783), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, o1168, i318)))
1783_0_bubble_FieldAccess(EOS(STATIC_1783), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), java.lang.Object(List(EOC, o1168, i318))) → 1788_0_bubble_FieldAccess(EOS(STATIC_1788), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i318)
1788_0_bubble_FieldAccess(EOS(STATIC_1788), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i313)), i318) → 1794_0_bubble_Load(EOS(STATIC_1794), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313)
1794_0_bubble_Load(EOS(STATIC_1794), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313) → 1799_0_bubble_InvokeMethod(EOS(STATIC_1799), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)))
1799_0_bubble_InvokeMethod(EOS(STATIC_1799), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318))) → 1804_0_getTail_Load(EOS(STATIC_1804), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)))
1804_0_getTail_Load(EOS(STATIC_1804), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318))) → 1814_0_getTail_FieldAccess(EOS(STATIC_1814), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)))
1814_0_getTail_FieldAccess(EOS(STATIC_1814), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318))) → 1826_0_getTail_Return(EOS(STATIC_1826), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, o1168, i318)))
1826_0_getTail_Return(EOS(STATIC_1826), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, o1168, i318))) → 1835_0_bubble_Load(EOS(STATIC_1835), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, o1168, i318)))
1835_0_bubble_Load(EOS(STATIC_1835), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), i313, java.lang.Object(List(EOC, o1168, i318))) → 1839_0_bubble_FieldAccess(EOS(STATIC_1839), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, o1168, i318)), i313)
1839_0_bubble_FieldAccess(EOS(STATIC_1839), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i318)), i318)), java.lang.Object(List(EOC, o1168, i318)), i313) → 1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1168, i313)), i318)))
1663_0_bubble_FieldAccess(EOS(STATIC_1663), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, o1170, i319))) → 1668_0_bubble_FieldAccess(EOS(STATIC_1668), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, o1170, i319)))
1668_0_bubble_FieldAccess(EOS(STATIC_1668), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, o1170, i319))) → 1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319)
1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319) → 1683_0_bubble_LE(EOS(STATIC_1683), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319)
1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319) → 1684_0_bubble_LE(EOS(STATIC_1684), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319)
1683_0_bubble_LE(EOS(STATIC_1683), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319) → 1691_0_bubble_Load(EOS(STATIC_1691), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) | <=(i313, i319)
1691_0_bubble_Load(EOS(STATIC_1691), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319))) → 1856_0_bubble_InvokeMethod(EOS(STATIC_1856), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)))
1856_0_bubble_InvokeMethod(EOS(STATIC_1856), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319))) → 1860_0_getTail_Load(EOS(STATIC_1860), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)))
1860_0_getTail_Load(EOS(STATIC_1860), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319))) → 1873_0_getTail_FieldAccess(EOS(STATIC_1873), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)))
1873_0_getTail_FieldAccess(EOS(STATIC_1873), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319))) → 1885_0_getTail_Return(EOS(STATIC_1885), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, o1170, i313)))
1885_0_getTail_Return(EOS(STATIC_1885), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)), java.lang.Object(List(EOC, o1170, i313))) → 1890_0_bubble_Store(EOS(STATIC_1890), java.lang.Object(List(EOC, o1170, i313)))
1890_0_bubble_Store(EOS(STATIC_1890), java.lang.Object(List(EOC, o1170, i313))) → 1893_0_bubble_JMP(EOS(STATIC_1893), java.lang.Object(List(EOC, o1170, i313)))
1893_0_bubble_JMP(EOS(STATIC_1893), java.lang.Object(List(EOC, o1170, i313))) → 1898_0_bubble_Load(EOS(STATIC_1898), java.lang.Object(List(EOC, o1170, i313)))
1898_0_bubble_Load(EOS(STATIC_1898), java.lang.Object(List(EOC, o1170, i313))) → 1568_0_bubble_Load(EOS(STATIC_1568), java.lang.Object(List(EOC, o1170, i313)))
1684_0_bubble_LE(EOS(STATIC_1684), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, i319) → 1692_0_bubble_Load(EOS(STATIC_1692), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) | >(i313, i319)
1692_0_bubble_Load(EOS(STATIC_1692), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1703_0_bubble_FieldAccess(EOS(STATIC_1703), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1703_0_bubble_FieldAccess(EOS(STATIC_1703), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1711_0_bubble_Store(EOS(STATIC_1711), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313)
1711_0_bubble_Store(EOS(STATIC_1711), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313) → 1716_0_bubble_Load(EOS(STATIC_1716), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313)
1716_0_bubble_Load(EOS(STATIC_1716), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313) → 1728_0_bubble_Load(EOS(STATIC_1728), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1728_0_bubble_Load(EOS(STATIC_1728), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1741_0_bubble_InvokeMethod(EOS(STATIC_1741), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1741_0_bubble_InvokeMethod(EOS(STATIC_1741), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1751_0_getTail_Load(EOS(STATIC_1751), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1751_0_getTail_Load(EOS(STATIC_1751), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1769_0_getTail_FieldAccess(EOS(STATIC_1769), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)))
1769_0_getTail_FieldAccess(EOS(STATIC_1769), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313))) → 1780_0_getTail_Return(EOS(STATIC_1780), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, o1170, i319)))
1780_0_getTail_Return(EOS(STATIC_1780), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, o1170, i319))) → 1785_0_bubble_FieldAccess(EOS(STATIC_1785), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, o1170, i319)))
1785_0_bubble_FieldAccess(EOS(STATIC_1785), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), java.lang.Object(List(EOC, o1170, i319))) → 1790_0_bubble_FieldAccess(EOS(STATIC_1790), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i319)
1790_0_bubble_FieldAccess(EOS(STATIC_1790), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i313)), i319) → 1796_0_bubble_Load(EOS(STATIC_1796), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313)
1796_0_bubble_Load(EOS(STATIC_1796), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313) → 1801_0_bubble_InvokeMethod(EOS(STATIC_1801), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)))
1801_0_bubble_InvokeMethod(EOS(STATIC_1801), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319))) → 1806_0_getTail_Load(EOS(STATIC_1806), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)))
1806_0_getTail_Load(EOS(STATIC_1806), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319))) → 1819_0_getTail_FieldAccess(EOS(STATIC_1819), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)))
1819_0_getTail_FieldAccess(EOS(STATIC_1819), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319))) → 1831_0_getTail_Return(EOS(STATIC_1831), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, o1170, i319)))
1831_0_getTail_Return(EOS(STATIC_1831), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, o1170, i319))) → 1836_0_bubble_Load(EOS(STATIC_1836), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, o1170, i319)))
1836_0_bubble_Load(EOS(STATIC_1836), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), i313, java.lang.Object(List(EOC, o1170, i319))) → 1841_0_bubble_FieldAccess(EOS(STATIC_1841), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, o1170, i319)), i313)
1841_0_bubble_FieldAccess(EOS(STATIC_1841), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i319)), i319)), java.lang.Object(List(EOC, o1170, i319)), i313) → 1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1170, i313)), i319)))
1591_0_getTail_FieldAccess(EOS(STATIC_1591), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314))) → 1594_0_getTail_FieldAccess(EOS(STATIC_1594), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)))
1594_0_getTail_FieldAccess(EOS(STATIC_1594), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314))) → 1597_0_getTail_Return(EOS(STATIC_1597), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)), o1118)
1597_0_getTail_Return(EOS(STATIC_1597), java.lang.Object(List(EOC, o1118, i314)), java.lang.Object(List(EOC, o1118, i314)), o1118) → 1601_0_bubble_NULL(EOS(STATIC_1601), java.lang.Object(List(EOC, o1118, i314)), o1118)
1601_0_bubble_NULL(EOS(STATIC_1601), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(o1127sub)) → 1606_0_bubble_NULL(EOS(STATIC_1606), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(o1127sub))
1606_0_bubble_NULL(EOS(STATIC_1606), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(o1127sub)) → 1612_0_bubble_Load(EOS(STATIC_1612), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)))
1612_0_bubble_Load(EOS(STATIC_1612), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314))) → 1619_0_bubble_FieldAccess(EOS(STATIC_1619), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)))
1619_0_bubble_FieldAccess(EOS(STATIC_1619), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314))) → 1627_0_bubble_Load(EOS(STATIC_1627), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314)
1627_0_bubble_Load(EOS(STATIC_1627), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314) → 1638_0_bubble_InvokeMethod(EOS(STATIC_1638), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)))
1638_0_bubble_InvokeMethod(EOS(STATIC_1638), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314))) → 1645_0_getTail_Load(EOS(STATIC_1645), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)))
1645_0_getTail_Load(EOS(STATIC_1645), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314))) → 1649_0_getTail_FieldAccess(EOS(STATIC_1649), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)))
1649_0_getTail_FieldAccess(EOS(STATIC_1649), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314))) → 1654_0_getTail_Return(EOS(STATIC_1654), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(o1127sub))
1654_0_getTail_Return(EOS(STATIC_1654), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), java.lang.Object(o1127sub)) → 1660_0_bubble_FieldAccess(EOS(STATIC_1660), java.lang.Object(List(EOC, java.lang.Object(o1127sub), i314)), i314, java.lang.Object(o1127sub))
1660_0_bubble_FieldAccess(EOS(STATIC_1660), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, o1166, i317))) → 1665_0_bubble_FieldAccess(EOS(STATIC_1665), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, o1166, i317)))
1665_0_bubble_FieldAccess(EOS(STATIC_1665), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, o1166, i317))) → 1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317)
1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317) → 1678_0_bubble_LE(EOS(STATIC_1678), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317)
1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317) → 1680_0_bubble_LE(EOS(STATIC_1680), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317)
1678_0_bubble_LE(EOS(STATIC_1678), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317) → 1685_0_bubble_Load(EOS(STATIC_1685), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) | <=(i314, i317)
1685_0_bubble_Load(EOS(STATIC_1685), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317))) → 1853_0_bubble_InvokeMethod(EOS(STATIC_1853), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)))
1853_0_bubble_InvokeMethod(EOS(STATIC_1853), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317))) → 1857_0_getTail_Load(EOS(STATIC_1857), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)))
1857_0_getTail_Load(EOS(STATIC_1857), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317))) → 1863_0_getTail_FieldAccess(EOS(STATIC_1863), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)))
1863_0_getTail_FieldAccess(EOS(STATIC_1863), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317))) → 1876_0_getTail_Return(EOS(STATIC_1876), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, o1166, i314)))
1876_0_getTail_Return(EOS(STATIC_1876), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)), java.lang.Object(List(EOC, o1166, i314))) → 1886_0_bubble_Store(EOS(STATIC_1886), java.lang.Object(List(EOC, o1166, i314)))
1886_0_bubble_Store(EOS(STATIC_1886), java.lang.Object(List(EOC, o1166, i314))) → 1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC, o1166, i314)))
1680_0_bubble_LE(EOS(STATIC_1680), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, i317) → 1686_0_bubble_Load(EOS(STATIC_1686), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) | >(i314, i317)
1686_0_bubble_Load(EOS(STATIC_1686), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1695_0_bubble_FieldAccess(EOS(STATIC_1695), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1695_0_bubble_FieldAccess(EOS(STATIC_1695), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1705_0_bubble_Store(EOS(STATIC_1705), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314)
1705_0_bubble_Store(EOS(STATIC_1705), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314) → 1713_0_bubble_Load(EOS(STATIC_1713), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314)
1713_0_bubble_Load(EOS(STATIC_1713), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314) → 1720_0_bubble_Load(EOS(STATIC_1720), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1720_0_bubble_Load(EOS(STATIC_1720), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1732_0_bubble_InvokeMethod(EOS(STATIC_1732), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1732_0_bubble_InvokeMethod(EOS(STATIC_1732), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1744_0_getTail_Load(EOS(STATIC_1744), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1744_0_getTail_Load(EOS(STATIC_1744), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1757_0_getTail_FieldAccess(EOS(STATIC_1757), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)))
1757_0_getTail_FieldAccess(EOS(STATIC_1757), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314))) → 1773_0_getTail_Return(EOS(STATIC_1773), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, o1166, i317)))
1773_0_getTail_Return(EOS(STATIC_1773), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, o1166, i317))) → 1782_0_bubble_FieldAccess(EOS(STATIC_1782), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, o1166, i317)))
1782_0_bubble_FieldAccess(EOS(STATIC_1782), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), java.lang.Object(List(EOC, o1166, i317))) → 1786_0_bubble_FieldAccess(EOS(STATIC_1786), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i317)
1786_0_bubble_FieldAccess(EOS(STATIC_1786), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i314)), i317) → 1791_0_bubble_Load(EOS(STATIC_1791), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314)
1791_0_bubble_Load(EOS(STATIC_1791), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314) → 1797_0_bubble_InvokeMethod(EOS(STATIC_1797), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)))
1797_0_bubble_InvokeMethod(EOS(STATIC_1797), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317))) → 1803_0_getTail_Load(EOS(STATIC_1803), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)))
1803_0_getTail_Load(EOS(STATIC_1803), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317))) → 1809_0_getTail_FieldAccess(EOS(STATIC_1809), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)))
1809_0_getTail_FieldAccess(EOS(STATIC_1809), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317))) → 1823_0_getTail_Return(EOS(STATIC_1823), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, o1166, i317)))
1823_0_getTail_Return(EOS(STATIC_1823), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, o1166, i317))) → 1832_0_bubble_Load(EOS(STATIC_1832), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, o1166, i317)))
1832_0_bubble_Load(EOS(STATIC_1832), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), i314, java.lang.Object(List(EOC, o1166, i317))) → 1838_0_bubble_FieldAccess(EOS(STATIC_1838), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, o1166, i317)), i314)
1838_0_bubble_FieldAccess(EOS(STATIC_1838), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i317)), i317)), java.lang.Object(List(EOC, o1166, i317)), i314) → 1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o1166, i314)), i317)))
R rules:

Combined rules. Obtained 2 conditional rules for P and 0 conditional rules for R.


P rules:
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2))) → 1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC, x0, x1)), java.lang.Object(List(EOC, x0, x1))) | <=(x2, x1)
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, x0, x1)), x2))) → 1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC, x0, x2)), java.lang.Object(List(EOC, x0, x2))) | >(x2, x1)
R rules:

Filtered ground terms:



1572_0_bubble_NULL(x1, x2, x3) → 1572_0_bubble_NULL(x2, x3)
List(x1, x2, x3) → List(x2, x3)
EOS(x1) → EOS
Cond_1572_0_bubble_NULL1(x1, x2, x3, x4) → Cond_1572_0_bubble_NULL1(x1, x3, x4)
Cond_1572_0_bubble_NULL(x1, x2, x3, x4) → Cond_1572_0_bubble_NULL(x1, x3, x4)

Filtered duplicate args:



1572_0_bubble_NULL(x1, x2) → 1572_0_bubble_NULL(x2)
Cond_1572_0_bubble_NULL(x1, x2, x3) → Cond_1572_0_bubble_NULL(x1, x3)
Cond_1572_0_bubble_NULL1(x1, x2, x3) → Cond_1572_0_bubble_NULL1(x1, x3)

Combined rules. Obtained 2 conditional rules for P and 0 conditional rules for R.


P rules:
1572_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_bubble_NULL(java.lang.Object(List(x0, x1))) | <=(x2, x1)
1572_0_bubble_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_bubble_NULL(java.lang.Object(List(x0, x2))) | >(x2, x1)
R rules:

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


P rules:
1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL(<=(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2)))
COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x1)))
1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL1(>(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2)))
COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x2)))
R rules:

(7) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(x2[0] <= x1[0], java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))
(1): COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))
(2): 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(x2[2] > x1[2], java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))
(3): COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))

(0) -> (1), if (x2[0] <= x1[0]java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])) →* java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])))


(1) -> (0), if (java.lang.Object(List(x0[1], x1[1])) →* java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))


(1) -> (2), if (java.lang.Object(List(x0[1], x1[1])) →* java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))


(2) -> (3), if (x2[2] > x1[2]java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])) →* java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])))


(3) -> (0), if (java.lang.Object(List(x0[3], x2[3])) →* java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))


(3) -> (2), if (java.lang.Object(List(x0[3], x2[3])) →* java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))



The set Q is empty.

(8) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: true Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@62f3782 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

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


For Pair 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL(<=(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) the following chains were created:
  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))), COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1]))) which results in the following constraint:

    (1)    (<=(x2[0], x1[0])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))=java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])) ⇒ 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))≥NonInfC∧1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))≥COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))∧(UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥))



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

    (2)    (<=(x2[0], x1[0])=TRUE1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))≥NonInfC∧1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))≥COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))∧(UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥))



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

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥)∧[(43)bni_14 + (-1)Bound*bni_14] + [(12)bni_14]x2[0] + [(72)bni_14]x1[0] + [(72)bni_14]x0[0] ≥ 0∧[(-1)bso_15] ≥ 0)



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

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥)∧[(43)bni_14 + (-1)Bound*bni_14] + [(12)bni_14]x2[0] + [(72)bni_14]x1[0] + [(72)bni_14]x0[0] ≥ 0∧[(-1)bso_15] ≥ 0)



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

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥)∧[(43)bni_14 + (-1)Bound*bni_14] + [(12)bni_14]x2[0] + [(72)bni_14]x1[0] + [(72)bni_14]x0[0] ≥ 0∧[(-1)bso_15] ≥ 0)



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

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥)∧[(12)bni_14] ≥ 0∧[(72)bni_14] ≥ 0∧[(72)bni_14] ≥ 0∧[(43)bni_14 + (-1)Bound*bni_14] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_15] ≥ 0)







For Pair COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x1))) the following chains were created:
  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))), COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1]))), 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) which results in the following constraint:

    (7)    (<=(x2[0], x1[0])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))=java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))∧java.lang.Object(List(x0[1], x1[1]))=java.lang.Object(List(java.lang.Object(List(x0[0]1, x1[0]1)), x2[0]1)) ⇒ COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])))≥NonInfC∧COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥))



    We simplified constraint (7) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (8)    (<=(x2[0], x1[0])=TRUECOND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[0]1, x1[0]1)), x1[0])), x2[0])))≥NonInfC∧COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[0]1, x1[0]1)), x1[0])), x2[0])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0]1, x1[0]1)), x1[0])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥))



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

    (9)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[0]1 + [(432)bni_16]x0[0]1 ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[0]1 + [360]x0[0]1 ≥ 0)



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

    (10)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[0]1 + [(432)bni_16]x0[0]1 ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[0]1 + [360]x0[0]1 ≥ 0)



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

    (11)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[0]1 + [(432)bni_16]x0[0]1 ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[0]1 + [360]x0[0]1 ≥ 0)



    We simplified constraint (11) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (12)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(12)bni_16] ≥ 0∧[(72)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(259)bni_16 + (-1)Bound*bni_16] ≥ 0∧[216 + (-1)bso_17] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)



  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))), COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1]))), 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) which results in the following constraint:

    (13)    (<=(x2[0], x1[0])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))=java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))∧java.lang.Object(List(x0[1], x1[1]))=java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])) ⇒ COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])))≥NonInfC∧COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥))



    We simplified constraint (13) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (14)    (<=(x2[0], x1[0])=TRUECOND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x1[0])), x2[0])))≥NonInfC∧COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x1[0])), x2[0])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x1[0])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥))



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

    (15)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[2] + [(432)bni_16]x0[2] ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[2] + [360]x0[2] ≥ 0)



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

    (16)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[2] + [(432)bni_16]x0[2] ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[2] + [360]x0[2] ≥ 0)



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

    (17)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(259)bni_16 + (-1)Bound*bni_16] + [(12)bni_16]x2[0] + [(72)bni_16]x1[0] + [(432)bni_16]x1[2] + [(432)bni_16]x0[2] ≥ 0∧[216 + (-1)bso_17] + [12]x2[0] + [60]x1[0] + [360]x1[2] + [360]x0[2] ≥ 0)



    We simplified constraint (17) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (18)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(12)bni_16] ≥ 0∧[(72)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(259)bni_16 + (-1)Bound*bni_16] ≥ 0∧[216 + (-1)bso_17] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)







For Pair 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL1(>(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) the following chains were created:
  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))), COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3]))) which results in the following constraint:

    (19)    (>(x2[2], x1[2])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))=java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])) ⇒ 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))≥NonInfC∧1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))≥COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))∧(UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥))



    We simplified constraint (19) using rules (I), (II), (IV) which results in the following new constraint:

    (20)    (>(x2[2], x1[2])=TRUE1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))≥NonInfC∧1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))≥COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))∧(UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥))



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

    (21)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥)∧[(43)bni_18 + (-1)Bound*bni_18] + [(12)bni_18]x2[2] + [(72)bni_18]x1[2] + [(72)bni_18]x0[2] ≥ 0∧[2 + (-1)bso_19] ≥ 0)



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

    (22)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥)∧[(43)bni_18 + (-1)Bound*bni_18] + [(12)bni_18]x2[2] + [(72)bni_18]x1[2] + [(72)bni_18]x0[2] ≥ 0∧[2 + (-1)bso_19] ≥ 0)



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

    (23)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥)∧[(43)bni_18 + (-1)Bound*bni_18] + [(12)bni_18]x2[2] + [(72)bni_18]x1[2] + [(72)bni_18]x0[2] ≥ 0∧[2 + (-1)bso_19] ≥ 0)



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

    (24)    (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥)∧[(12)bni_18] ≥ 0∧[(72)bni_18] ≥ 0∧[(72)bni_18] ≥ 0∧[(43)bni_18 + (-1)Bound*bni_18] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[2 + (-1)bso_19] ≥ 0)







For Pair COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x2))) the following chains were created:
  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))), COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3]))), 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) which results in the following constraint:

    (25)    (>(x2[2], x1[2])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))=java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))∧java.lang.Object(List(x0[3], x2[3]))=java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])) ⇒ COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])))≥NonInfC∧COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥))



    We simplified constraint (25) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (26)    (>(x2[2], x1[2])=TRUECOND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x1[2])), x2[2])))≥NonInfC∧COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x1[2])), x2[2])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[2])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥))



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

    (27)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[0] + [(432)bni_20]x0[0] ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[0] + [360]x0[0] ≥ 0)



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

    (28)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[0] + [(432)bni_20]x0[0] ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[0] + [360]x0[0] ≥ 0)



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

    (29)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[0] + [(432)bni_20]x0[0] ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[0] + [360]x0[0] ≥ 0)



    We simplified constraint (29) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (30)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(12)bni_20] ≥ 0∧[(72)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(257)bni_20 + (-1)Bound*bni_20] ≥ 0∧0 ≥ 0∧[214 + (-1)bso_21] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)



  • We consider the chain 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))), COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3]))), 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) which results in the following constraint:

    (31)    (>(x2[2], x1[2])=TRUEjava.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))=java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))∧java.lang.Object(List(x0[3], x2[3]))=java.lang.Object(List(java.lang.Object(List(x0[2]1, x1[2]1)), x2[2]1)) ⇒ COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])))≥NonInfC∧COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥))



    We simplified constraint (31) using rules (I), (II), (III), (IV) which results in the following new constraint:

    (32)    (>(x2[2], x1[2])=TRUECOND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[2]1, x1[2]1)), x1[2])), x2[2])))≥NonInfC∧COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(java.lang.Object(List(x0[2]1, x1[2]1)), x1[2])), x2[2])))≥1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2]1, x1[2]1)), x2[2])))∧(UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥))



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

    (33)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[2]1 + [(432)bni_20]x0[2]1 ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[2]1 + [360]x0[2]1 ≥ 0)



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

    (34)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[2]1 + [(432)bni_20]x0[2]1 ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[2]1 + [360]x0[2]1 ≥ 0)



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

    (35)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(257)bni_20 + (-1)Bound*bni_20] + [(12)bni_20]x2[2] + [(72)bni_20]x1[2] + [(432)bni_20]x1[2]1 + [(432)bni_20]x0[2]1 ≥ 0∧[214 + (-1)bso_21] + [72]x1[2] + [360]x1[2]1 + [360]x0[2]1 ≥ 0)



    We simplified constraint (35) using rules (IDP_UNRESTRICTED_VARS), (IDP_POLY_GCD) which results in the following new constraint:

    (36)    (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(12)bni_20] ≥ 0∧[(72)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(257)bni_20 + (-1)Bound*bni_20] ≥ 0∧0 ≥ 0∧[214 + (-1)bso_21] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL(<=(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2)))
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))), ≥)∧[(12)bni_14] ≥ 0∧[(72)bni_14] ≥ 0∧[(72)bni_14] ≥ 0∧[(43)bni_14 + (-1)Bound*bni_14] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_15] ≥ 0)

  • COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x1)))
    • (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(12)bni_16] ≥ 0∧[(72)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(259)bni_16 + (-1)Bound*bni_16] ≥ 0∧[216 + (-1)bso_17] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))), ≥)∧[(12)bni_16] ≥ 0∧[(72)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(432)bni_16] ≥ 0∧[(259)bni_16 + (-1)Bound*bni_16] ≥ 0∧[216 + (-1)bso_17] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)

  • 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → COND_1572_0_BUBBLE_NULL1(>(x2, x1), java.lang.Object(List(java.lang.Object(List(x0, x1)), x2)))
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))), ≥)∧[(12)bni_18] ≥ 0∧[(72)bni_18] ≥ 0∧[(72)bni_18] ≥ 0∧[(43)bni_18 + (-1)Bound*bni_18] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[2 + (-1)bso_19] ≥ 0)

  • COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0, x1)), x2))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0, x2)))
    • (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(12)bni_20] ≥ 0∧[(72)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(257)bni_20 + (-1)Bound*bni_20] ≥ 0∧0 ≥ 0∧[214 + (-1)bso_21] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))), ≥)∧[(12)bni_20] ≥ 0∧[(72)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(432)bni_20] ≥ 0∧[(257)bni_20 + (-1)Bound*bni_20] ≥ 0∧0 ≥ 0∧[214 + (-1)bso_21] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1572_0_BUBBLE_NULL(x1)) = [1] + [2]x1   
POL(java.lang.Object(x1)) = [3] + [3]x1   
POL(List(x1, x2)) = [2]x2 + [2]x1   
POL(COND_1572_0_BUBBLE_NULL(x1, x2)) = [1] + [2]x2   
POL(<=(x1, x2)) = 0   
POL(COND_1572_0_BUBBLE_NULL1(x1, x2)) = [-1] + [2]x2   
POL(>(x1, x2)) = 0   

The following pairs are in P>:

COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))
1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))
COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))

The following pairs are in Pbound:

1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))
COND_1572_0_BUBBLE_NULL(TRUE, java.lang.Object(List(java.lang.Object(List(x0[1], x1[1])), x2[1]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[1], x1[1])))
1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2]))) → COND_1572_0_BUBBLE_NULL1(>(x2[2], x1[2]), java.lang.Object(List(java.lang.Object(List(x0[2], x1[2])), x2[2])))
COND_1572_0_BUBBLE_NULL1(TRUE, java.lang.Object(List(java.lang.Object(List(x0[3], x1[3])), x2[3]))) → 1572_0_BUBBLE_NULL(java.lang.Object(List(x0[3], x2[3])))

The following pairs are in P:

1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(<=(x2[0], x1[0]), java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))

There are no usable rules.

(9) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 1572_0_BUBBLE_NULL(java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0]))) → COND_1572_0_BUBBLE_NULL(x2[0] <= x1[0], java.lang.Object(List(java.lang.Object(List(x0[0], x1[0])), x2[0])))


The set Q is empty.

(10) IDependencyGraphProof (EQUIVALENT transformation)

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

(11) TRUE

(12) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test7.length(LList;)I
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(13) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 22 rules for P and 0 rules for R.


P rules:
810_0_length_NULL(EOS(STATIC_810), java.lang.Object(o195sub), java.lang.Object(o195sub)) → 812_0_length_NULL(EOS(STATIC_812), java.lang.Object(o195sub), java.lang.Object(o195sub))
812_0_length_NULL(EOS(STATIC_812), java.lang.Object(o195sub), java.lang.Object(o195sub)) → 815_0_length_Load(EOS(STATIC_815), java.lang.Object(o195sub))
815_0_length_Load(EOS(STATIC_815), java.lang.Object(o195sub)) → 818_0_length_InvokeMethod(EOS(STATIC_818), java.lang.Object(o195sub))
818_0_length_InvokeMethod(EOS(STATIC_818), java.lang.Object(o195sub)) → 821_0_getTail_Load(EOS(STATIC_821), java.lang.Object(o195sub), java.lang.Object(o195sub))
821_0_getTail_Load(EOS(STATIC_821), java.lang.Object(o195sub), java.lang.Object(o195sub)) → 828_0_getTail_FieldAccess(EOS(STATIC_828), java.lang.Object(o195sub), java.lang.Object(o195sub))
828_0_getTail_FieldAccess(EOS(STATIC_828), java.lang.Object(o195sub), java.lang.Object(o195sub)) → 832_0_getTail_FieldAccess(EOS(STATIC_832), java.lang.Object(o195sub), java.lang.Object(o195sub))
828_0_getTail_FieldAccess(EOS(STATIC_828), java.lang.Object(o195sub), java.lang.Object(o195sub)) → 833_0_getTail_FieldAccess(EOS(STATIC_833), java.lang.Object(o195sub), java.lang.Object(o195sub))
832_0_getTail_FieldAccess(EOS(STATIC_832), java.lang.Object(List(EOC, o199)), java.lang.Object(List(EOC, o199))) → 836_0_getTail_FieldAccess(EOS(STATIC_836), java.lang.Object(List(EOC, o199)), java.lang.Object(List(EOC, o199)))
836_0_getTail_FieldAccess(EOS(STATIC_836), java.lang.Object(List(EOC, o199)), java.lang.Object(List(EOC, o199))) → 841_0_getTail_Return(EOS(STATIC_841), java.lang.Object(List(EOC, o199)), o199)
841_0_getTail_Return(EOS(STATIC_841), java.lang.Object(List(EOC, o199)), o199) → 846_0_length_Store(EOS(STATIC_846), o199)
846_0_length_Store(EOS(STATIC_846), o199) → 850_0_length_Inc(EOS(STATIC_850), o199)
850_0_length_Inc(EOS(STATIC_850), o199) → 855_0_length_JMP(EOS(STATIC_855), o199)
855_0_length_JMP(EOS(STATIC_855), o199) → 861_0_length_Load(EOS(STATIC_861), o199)
861_0_length_Load(EOS(STATIC_861), o199) → 808_0_length_Load(EOS(STATIC_808), o199)
808_0_length_Load(EOS(STATIC_808), o185) → 810_0_length_NULL(EOS(STATIC_810), o185, o185)
833_0_getTail_FieldAccess(EOS(STATIC_833), java.lang.Object(List(EOC, o201)), java.lang.Object(List(EOC, o201))) → 838_0_getTail_FieldAccess(EOS(STATIC_838), java.lang.Object(List(EOC, o201)), java.lang.Object(List(EOC, o201)))
838_0_getTail_FieldAccess(EOS(STATIC_838), java.lang.Object(List(EOC, o201)), java.lang.Object(List(EOC, o201))) → 843_0_getTail_Return(EOS(STATIC_843), java.lang.Object(List(EOC, o201)), o201)
843_0_getTail_Return(EOS(STATIC_843), java.lang.Object(List(EOC, o201)), o201) → 848_0_length_Store(EOS(STATIC_848), o201)
848_0_length_Store(EOS(STATIC_848), o201) → 851_0_length_Inc(EOS(STATIC_851), o201)
851_0_length_Inc(EOS(STATIC_851), o201) → 857_0_length_JMP(EOS(STATIC_857), o201)
857_0_length_JMP(EOS(STATIC_857), o201) → 865_0_length_Load(EOS(STATIC_865), o201)
865_0_length_Load(EOS(STATIC_865), o201) → 808_0_length_Load(EOS(STATIC_808), o201)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
810_0_length_NULL(EOS(STATIC_810), java.lang.Object(List(EOC, x0)), java.lang.Object(List(EOC, x0))) → 810_0_length_NULL(EOS(STATIC_810), x0, x0)
R rules:

Filtered ground terms:



810_0_length_NULL(x1, x2, x3) → 810_0_length_NULL(x2, x3)
EOS(x1) → EOS
List(x1, x2) → List(x2)

Filtered duplicate args:



810_0_length_NULL(x1, x2) → 810_0_length_NULL(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
810_0_length_NULL(java.lang.Object(List(x0))) → 810_0_length_NULL(x0)
R rules:

Finished conversion. Obtained 1 rules for P and 0 rules for R. System has no predefined symbols.


P rules:
810_0_LENGTH_NULL(java.lang.Object(List(x0))) → 810_0_LENGTH_NULL(x0)
R rules:

(14) Obligation:

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


The following domains are used:
none


R is empty.

The integer pair graph contains the following rules and edges:
(0): 810_0_LENGTH_NULL(java.lang.Object(List(x0[0]))) → 810_0_LENGTH_NULL(x0[0])

(0) -> (0), if (x0[0]* java.lang.Object(List(x0[0]')))



The set Q is empty.

(15) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(16) Obligation:

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

810_0_LENGTH_NULL(java.lang.Object(List(x0[0]))) → 810_0_LENGTH_NULL(x0[0])

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

(17) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • 810_0_LENGTH_NULL(java.lang.Object(List(x0[0]))) → 810_0_LENGTH_NULL(x0[0])
    The graph contains the following edges 1 > 1

(18) YES

(19) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: List.mk(I)LList;
SCC calls the following helper methods:
Performed SCC analyses: UsedFieldsAnalysis

(20) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 21 rules for P and 0 rules for R.


P rules:
542_0_mk_Inc(EOS(STATIC_542), i67, o83, i67) → 549_0_mk_LE(EOS(STATIC_549), +(i67, -1), o83, i67)
549_0_mk_LE(EOS(STATIC_549), i77, o83, i81) → 555_0_mk_LE(EOS(STATIC_555), i77, o83, i81)
555_0_mk_LE(EOS(STATIC_555), i77, o83, i81) → 560_0_mk_New(EOS(STATIC_560), i77, o83) | >(i81, 0)
560_0_mk_New(EOS(STATIC_560), i77, o83) → 570_0_mk_Duplicate(EOS(STATIC_570), i77, o83, java.lang.Object(List(EOC)))
570_0_mk_Duplicate(EOS(STATIC_570), i77, o83, java.lang.Object(List(EOC))) → 580_0_mk_Load(EOS(STATIC_580), i77, o83, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
580_0_mk_Load(EOS(STATIC_580), i77, o83, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 592_0_mk_Load(EOS(STATIC_592), i77, o83, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77)
592_0_mk_Load(EOS(STATIC_592), i77, o83, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77) → 618_0_mk_InvokeMethod(EOS(STATIC_618), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83)
618_0_mk_InvokeMethod(EOS(STATIC_618), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83) → 625_0_<init>_Load(EOS(STATIC_625), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83)
625_0_<init>_Load(EOS(STATIC_625), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83) → 637_0_<init>_InvokeMethod(EOS(STATIC_637), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)))
637_0_<init>_InvokeMethod(EOS(STATIC_637), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC))) → 649_0_<init>_Load(EOS(STATIC_649), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83)
649_0_<init>_Load(EOS(STATIC_649), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83) → 653_0_<init>_Load(EOS(STATIC_653), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)))
653_0_<init>_Load(EOS(STATIC_653), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC))) → 658_0_<init>_FieldAccess(EOS(STATIC_658), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83, java.lang.Object(List(EOC)), i77)
658_0_<init>_FieldAccess(EOS(STATIC_658), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83, java.lang.Object(List(EOC)), i77) → 664_0_<init>_Load(EOS(STATIC_664), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83)
664_0_<init>_Load(EOS(STATIC_664), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83) → 669_0_<init>_Load(EOS(STATIC_669), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, o83, java.lang.Object(List(EOC)))
669_0_<init>_Load(EOS(STATIC_669), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, o83, java.lang.Object(List(EOC))) → 674_0_<init>_FieldAccess(EOS(STATIC_674), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83)
674_0_<init>_FieldAccess(EOS(STATIC_674), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83, java.lang.Object(List(EOC)), o83) → 681_0_<init>_Return(EOS(STATIC_681), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83)
681_0_<init>_Return(EOS(STATIC_681), i77, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i77, o83) → 687_0_mk_Store(EOS(STATIC_687), i77, java.lang.Object(List(EOC)))
687_0_mk_Store(EOS(STATIC_687), i77, java.lang.Object(List(EOC))) → 692_0_mk_JMP(EOS(STATIC_692), i77, java.lang.Object(List(EOC)))
692_0_mk_JMP(EOS(STATIC_692), i77, java.lang.Object(List(EOC))) → 700_0_mk_Load(EOS(STATIC_700), i77, java.lang.Object(List(EOC)))
700_0_mk_Load(EOS(STATIC_700), i77, java.lang.Object(List(EOC))) → 522_0_mk_Load(EOS(STATIC_522), i77, java.lang.Object(List(EOC)))
522_0_mk_Load(EOS(STATIC_522), i67, o83) → 542_0_mk_Inc(EOS(STATIC_542), i67, o83, i67)
R rules:

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
542_0_mk_Inc(EOS(STATIC_542), x0, x1, x0) → 542_0_mk_Inc(EOS(STATIC_542), +(x0, -1), java.lang.Object(List(EOC)), +(x0, -1)) | >(x0, 0)
R rules:

Filtered ground terms:



542_0_mk_Inc(x1, x2, x3, x4) → 542_0_mk_Inc(x2, x3, x4)
List(x1) → List
java.lang.Object(x1) → java.lang.Object
EOS(x1) → EOS
Cond_542_0_mk_Inc(x1, x2, x3, x4, x5) → Cond_542_0_mk_Inc(x1, x3, x4, x5)

Filtered duplicate args:



542_0_mk_Inc(x1, x2, x3) → 542_0_mk_Inc(x2, x3)
Cond_542_0_mk_Inc(x1, x2, x3, x4) → Cond_542_0_mk_Inc(x1, x3, x4)

Filtered unneeded arguments:



Cond_542_0_mk_Inc(x1, x2, x3) → Cond_542_0_mk_Inc(x1, x3)
542_0_mk_Inc(x1, x2) → 542_0_mk_Inc(x2)

Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.


P rules:
542_0_mk_Inc(x0) → 542_0_mk_Inc(+(x0, -1)) | >(x0, 0)
R rules:

Finished conversion. Obtained 2 rules for P and 0 rules for R. System has predefined symbols.


P rules:
542_0_MK_INC(x0) → COND_542_0_MK_INC(>(x0, 0), x0)
COND_542_0_MK_INC(TRUE, x0) → 542_0_MK_INC(+(x0, -1))
R rules:

(21) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 542_0_MK_INC(x0[0]) → COND_542_0_MK_INC(x0[0] > 0, x0[0])
(1): COND_542_0_MK_INC(TRUE, x0[1]) → 542_0_MK_INC(x0[1] + -1)

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


(1) -> (0), if (x0[1] + -1* x0[0])



The set Q is empty.

(22) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpCand1ShapeHeuristic@d9081e1 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 0 Max Right Steps: 0

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


For Pair 542_0_MK_INC(x0) → COND_542_0_MK_INC(>(x0, 0), x0) the following chains were created:
  • We consider the chain 542_0_MK_INC(x0[0]) → COND_542_0_MK_INC(>(x0[0], 0), x0[0]), COND_542_0_MK_INC(TRUE, x0[1]) → 542_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (1)    (>(x0[0], 0)=TRUEx0[0]=x0[1]542_0_MK_INC(x0[0])≥NonInfC∧542_0_MK_INC(x0[0])≥COND_542_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



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

    (2)    (>(x0[0], 0)=TRUE542_0_MK_INC(x0[0])≥NonInfC∧542_0_MK_INC(x0[0])≥COND_542_0_MK_INC(>(x0[0], 0), x0[0])∧(UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥))



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

    (3)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



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

    (4)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



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

    (5)    (x0[0] + [-1] ≥ 0 ⇒ (UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)



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

    (6)    (x0[0] ≥ 0 ⇒ (UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)







For Pair COND_542_0_MK_INC(TRUE, x0) → 542_0_MK_INC(+(x0, -1)) the following chains were created:
  • We consider the chain COND_542_0_MK_INC(TRUE, x0[1]) → 542_0_MK_INC(+(x0[1], -1)) which results in the following constraint:

    (7)    (COND_542_0_MK_INC(TRUE, x0[1])≥NonInfC∧COND_542_0_MK_INC(TRUE, x0[1])≥542_0_MK_INC(+(x0[1], -1))∧(UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥))



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

    (8)    ((UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



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

    (9)    ((UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



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

    (10)    ((UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧[2 + (-1)bso_11] ≥ 0)



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

    (11)    ((UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 542_0_MK_INC(x0) → COND_542_0_MK_INC(>(x0, 0), x0)
    • (x0[0] ≥ 0 ⇒ (UIncreasing(COND_542_0_MK_INC(>(x0[0], 0), x0[0])), ≥)∧[(-1)Bound*bni_8 + (2)bni_8] + [(2)bni_8]x0[0] ≥ 0∧[(-1)bso_9] ≥ 0)

  • COND_542_0_MK_INC(TRUE, x0) → 542_0_MK_INC(+(x0, -1))
    • ((UIncreasing(542_0_MK_INC(+(x0[1], -1))), ≥)∧[bni_10] = 0∧0 = 0∧[2 + (-1)bso_11] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(542_0_MK_INC(x1)) = [2]x1   
POL(COND_542_0_MK_INC(x1, x2)) = [2]x2   
POL(>(x1, x2)) = [-1]   
POL(0) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-1) = [-1]   

The following pairs are in P>:

COND_542_0_MK_INC(TRUE, x0[1]) → 542_0_MK_INC(+(x0[1], -1))

The following pairs are in Pbound:

542_0_MK_INC(x0[0]) → COND_542_0_MK_INC(>(x0[0], 0), x0[0])

The following pairs are in P:

542_0_MK_INC(x0[0]) → COND_542_0_MK_INC(>(x0[0], 0), x0[0])

There are no usable rules.

(23) Complex Obligation (AND)

(24) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): 542_0_MK_INC(x0[0]) → COND_542_0_MK_INC(x0[0] > 0, x0[0])


The set Q is empty.

(25) IDependencyGraphProof (EQUIVALENT transformation)

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

(26) TRUE

(27) Obligation:

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


The following domains are used:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(1): COND_542_0_MK_INC(TRUE, x0[1]) → 542_0_MK_INC(x0[1] + -1)


The set Q is empty.

(28) IDependencyGraphProof (EQUIVALENT transformation)

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

(29) TRUE

(30) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Test7.main([Ljava/lang/String;)V
SCC calls the following helper methods: Test7.length(LList;)I, Test7.bubble(LList;)V
Performed SCC analyses: UsedFieldsAnalysis

(31) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 41 rules for P and 177 rules for R.


P rules:
891_0_main_Load(EOS(STATIC_891), java.lang.Object(ARRAY(matching1)), i133, i133) → 893_0_main_ArrayLength(EOS(STATIC_893), java.lang.Object(ARRAY(3)), i133, i133, java.lang.Object(ARRAY(3))) | =(matching1, 3)
893_0_main_ArrayLength(EOS(STATIC_893), java.lang.Object(ARRAY(matching1)), i133, i133, java.lang.Object(ARRAY(matching2))) → 895_0_main_GE(EOS(STATIC_895), java.lang.Object(ARRAY(3)), i133, i133, 3) | &&(&&(>=(3, 0), =(matching1, 3)), =(matching2, 3))
895_0_main_GE(EOS(STATIC_895), java.lang.Object(ARRAY(matching1)), i140, i140, matching2) → 897_0_main_GE(EOS(STATIC_897), java.lang.Object(ARRAY(3)), i140, i140, 3) | &&(=(matching1, 3), =(matching2, 3))
897_0_main_GE(EOS(STATIC_897), java.lang.Object(ARRAY(matching1)), i140, i140, matching2) → 900_0_main_Load(EOS(STATIC_900), java.lang.Object(ARRAY(3)), i140) | &&(&&(<(i140, 3), =(matching1, 3)), =(matching2, 3))
900_0_main_Load(EOS(STATIC_900), java.lang.Object(ARRAY(matching1)), i140) → 904_0_main_ConstantStackPush(EOS(STATIC_904), java.lang.Object(ARRAY(3)), i140, java.lang.Object(ARRAY(3))) | =(matching1, 3)
904_0_main_ConstantStackPush(EOS(STATIC_904), java.lang.Object(ARRAY(matching1)), i140, java.lang.Object(ARRAY(matching2))) → 907_0_main_ArrayAccess(EOS(STATIC_907), java.lang.Object(ARRAY(3)), i140, java.lang.Object(ARRAY(3)), 0) | &&(=(matching1, 3), =(matching2, 3))
907_0_main_ArrayAccess(EOS(STATIC_907), java.lang.Object(ARRAY(matching1)), i140, java.lang.Object(ARRAY(matching2)), matching3) → 909_0_main_InvokeMethod(EOS(STATIC_909), java.lang.Object(ARRAY(3)), i140, o213) | &&(&&(&&(<(0, 3), =(matching1, 3)), =(matching2, 3)), =(matching3, 0))
909_0_main_InvokeMethod(EOS(STATIC_909), java.lang.Object(ARRAY(matching1)), i140, o213) → 910_1_main_InvokeMethod(910_0_length_ConstantStackPush(EOS(STATIC_910), o213), java.lang.Object(ARRAY(3)), i140, o213) | =(matching1, 3)
910_1_main_InvokeMethod(820_0_length_Return(EOS(STATIC_820), i117), java.lang.Object(ARRAY(matching1)), i140, o226) → 915_0_length_Return(EOS(STATIC_915), java.lang.Object(ARRAY(3)), i140, o226, i117) | =(matching1, 3)
915_0_length_Return(EOS(STATIC_915), java.lang.Object(ARRAY(matching1)), i140, o226, i117) → 917_0_main_Store(EOS(STATIC_917), java.lang.Object(ARRAY(3)), i140, i117) | =(matching1, 3)
917_0_main_Store(EOS(STATIC_917), java.lang.Object(ARRAY(matching1)), i140, i117) → 919_0_main_ConstantStackPush(EOS(STATIC_919), java.lang.Object(ARRAY(3)), i140, i117) | =(matching1, 3)
919_0_main_ConstantStackPush(EOS(STATIC_919), java.lang.Object(ARRAY(matching1)), i140, i117) → 920_0_main_Store(EOS(STATIC_920), java.lang.Object(ARRAY(3)), i140, i117, 0) | =(matching1, 3)
920_0_main_Store(EOS(STATIC_920), java.lang.Object(ARRAY(matching1)), i140, i117, matching2) → 922_0_main_Load(EOS(STATIC_922), java.lang.Object(ARRAY(3)), i140, i117, 0) | &&(=(matching1, 3), =(matching2, 0))
922_0_main_Load(EOS(STATIC_922), java.lang.Object(ARRAY(matching1)), i140, i117, matching2) → 989_0_main_Load(EOS(STATIC_989), java.lang.Object(ARRAY(3)), i140, i117, 0) | &&(=(matching1, 3), =(matching2, 0))
989_0_main_Load(EOS(STATIC_989), java.lang.Object(ARRAY(matching1)), i140, i147, i148) → 1081_0_main_Load(EOS(STATIC_1081), java.lang.Object(ARRAY(3)), i140, i147, i148) | =(matching1, 3)
1081_0_main_Load(EOS(STATIC_1081), java.lang.Object(ARRAY(matching1)), i140, i147, i160) → 1177_0_main_Load(EOS(STATIC_1177), java.lang.Object(ARRAY(3)), i140, i147, i160) | =(matching1, 3)
1177_0_main_Load(EOS(STATIC_1177), java.lang.Object(ARRAY(matching1)), i140, i147, i167) → 1299_0_main_Load(EOS(STATIC_1299), java.lang.Object(ARRAY(3)), i140, i147, i167) | =(matching1, 3)
1299_0_main_Load(EOS(STATIC_1299), java.lang.Object(ARRAY(matching1)), i140, i147, i189) → 1311_0_main_Load(EOS(STATIC_1311), java.lang.Object(ARRAY(3)), i140, i147, i189, i189) | =(matching1, 3)
1311_0_main_Load(EOS(STATIC_1311), java.lang.Object(ARRAY(matching1)), i140, i147, i189, i189) → 1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), i140, i147, i189, i189, i147) | =(matching1, 3)
1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(matching1)), i140, i147, i189, i189, i147) → 1333_0_main_GE(EOS(STATIC_1333), java.lang.Object(ARRAY(3)), i140, i147, i189, i189, i147) | =(matching1, 3)
1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(matching1)), i140, i147, i189, i189, i147) → 1334_0_main_GE(EOS(STATIC_1334), java.lang.Object(ARRAY(3)), i140, i147, i189, i189, i147) | =(matching1, 3)
1333_0_main_GE(EOS(STATIC_1333), java.lang.Object(ARRAY(matching1)), i140, i147, i189, i189, i147) → 1342_0_main_Inc(EOS(STATIC_1342), java.lang.Object(ARRAY(3)), i140) | &&(>=(i189, i147), =(matching1, 3))
1342_0_main_Inc(EOS(STATIC_1342), java.lang.Object(ARRAY(matching1)), i140) → 1352_0_main_JMP(EOS(STATIC_1352), java.lang.Object(ARRAY(3)), +(i140, 1)) | &&(>=(i140, 0), =(matching1, 3))
1352_0_main_JMP(EOS(STATIC_1352), java.lang.Object(ARRAY(matching1)), i197) → 1370_0_main_Load(EOS(STATIC_1370), java.lang.Object(ARRAY(3)), i197) | =(matching1, 3)
1370_0_main_Load(EOS(STATIC_1370), java.lang.Object(ARRAY(matching1)), i197) → 888_0_main_Load(EOS(STATIC_888), java.lang.Object(ARRAY(3)), i197) | =(matching1, 3)
888_0_main_Load(EOS(STATIC_888), java.lang.Object(ARRAY(matching1)), i133) → 891_0_main_Load(EOS(STATIC_891), java.lang.Object(ARRAY(3)), i133, i133) | =(matching1, 3)
1334_0_main_GE(EOS(STATIC_1334), java.lang.Object(ARRAY(matching1)), i140, i147, i189, i189, i147) → 1344_0_main_Load(EOS(STATIC_1344), java.lang.Object(ARRAY(3)), i140, i147, i189) | &&(<(i189, i147), =(matching1, 3))
1344_0_main_Load(EOS(STATIC_1344), java.lang.Object(ARRAY(matching1)), i140, i147, i189) → 1353_0_main_ConstantStackPush(EOS(STATIC_1353), java.lang.Object(ARRAY(3)), i140, i147, i189, java.lang.Object(ARRAY(3))) | =(matching1, 3)
1353_0_main_ConstantStackPush(EOS(STATIC_1353), java.lang.Object(ARRAY(matching1)), i140, i147, i189, java.lang.Object(ARRAY(matching2))) → 1372_0_main_ArrayAccess(EOS(STATIC_1372), java.lang.Object(ARRAY(3)), i140, i147, i189, java.lang.Object(ARRAY(3)), 0) | &&(=(matching1, 3), =(matching2, 3))
1372_0_main_ArrayAccess(EOS(STATIC_1372), java.lang.Object(ARRAY(matching1)), i140, i147, i189, java.lang.Object(ARRAY(matching2)), matching3) → 1385_0_main_InvokeMethod(EOS(STATIC_1385), java.lang.Object(ARRAY(3)), i140, i147, i189, o416) | &&(&&(&&(<(0, 3), =(matching1, 3)), =(matching2, 3)), =(matching3, 0))
1385_0_main_InvokeMethod(EOS(STATIC_1385), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o416) → 1395_1_main_InvokeMethod(1395_0_bubble_Load(EOS(STATIC_1395), o416), java.lang.Object(ARRAY(3)), i140, i147, i189, o416) | =(matching1, 3)
1395_1_main_InvokeMethod(1577_0_bubble_Return(EOS(STATIC_1577)), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o416) → 1586_0_bubble_Return(EOS(STATIC_1586), java.lang.Object(ARRAY(3)), i140, i147, i189, o1102) | =(matching1, 3)
1395_1_main_InvokeMethod(1611_0_bubble_Return(EOS(STATIC_1611)), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o416) → 1636_0_bubble_Return(EOS(STATIC_1636), java.lang.Object(ARRAY(3)), i140, i147, i189, o1102) | =(matching1, 3)
1395_1_main_InvokeMethod(1614_0_bubble_Return(EOS(STATIC_1614)), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o416) → 1643_0_bubble_Return(EOS(STATIC_1643), java.lang.Object(ARRAY(3)), i140, i147, i189, java.lang.Object(List(EOC))) | =(matching1, 3)
1586_0_bubble_Return(EOS(STATIC_1586), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o1102) → 1445_0_bubble_Return(EOS(STATIC_1445), java.lang.Object(ARRAY(3)), i140, i147, i189, o1102) | =(matching1, 3)
1445_0_bubble_Return(EOS(STATIC_1445), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o683) → 1458_0_main_Inc(EOS(STATIC_1458), java.lang.Object(ARRAY(3)), i140, i147, i189) | =(matching1, 3)
1458_0_main_Inc(EOS(STATIC_1458), java.lang.Object(ARRAY(matching1)), i140, i147, i189) → 1464_0_main_JMP(EOS(STATIC_1464), java.lang.Object(ARRAY(3)), i140, i147, +(i189, 1)) | &&(>=(i189, 0), =(matching1, 3))
1464_0_main_JMP(EOS(STATIC_1464), java.lang.Object(ARRAY(matching1)), i140, i147, i234) → 1471_0_main_Load(EOS(STATIC_1471), java.lang.Object(ARRAY(3)), i140, i147, i234) | =(matching1, 3)
1471_0_main_Load(EOS(STATIC_1471), java.lang.Object(ARRAY(matching1)), i140, i147, i234) → 1299_0_main_Load(EOS(STATIC_1299), java.lang.Object(ARRAY(3)), i140, i147, i234) | =(matching1, 3)
1636_0_bubble_Return(EOS(STATIC_1636), java.lang.Object(ARRAY(matching1)), i140, i147, i189, o1102) → 1445_0_bubble_Return(EOS(STATIC_1445), java.lang.Object(ARRAY(3)), i140, i147, i189, o1102) | =(matching1, 3)
1643_0_bubble_Return(EOS(STATIC_1643), java.lang.Object(ARRAY(matching1)), i140, i147, i189, java.lang.Object(List(EOC))) → 1445_0_bubble_Return(EOS(STATIC_1445), java.lang.Object(ARRAY(3)), i140, i147, i189, java.lang.Object(List(EOC))) | =(matching1, 3)
R rules:
910_0_length_ConstantStackPush(EOS(STATIC_910), o213) → 911_0_length_ConstantStackPush(EOS(STATIC_911), o213)
911_0_length_ConstantStackPush(EOS(STATIC_911), o213) → 380_0_length_ConstantStackPush(EOS(STATIC_380), o213)
1395_0_bubble_Load(EOS(STATIC_1395), o416) → 1404_0_bubble_Load(EOS(STATIC_1404), o416)
1404_0_bubble_Load(EOS(STATIC_1404), o416) → 952_0_bubble_Load(EOS(STATIC_952), o416)
380_0_length_ConstantStackPush(EOS(STATIC_380), o21) → 385_0_length_Store(EOS(STATIC_385), o21, 0)
385_0_length_Store(EOS(STATIC_385), o21, matching1) → 391_0_length_Load(EOS(STATIC_391), o21, 0) | =(matching1, 0)
391_0_length_Load(EOS(STATIC_391), o21, matching1) → 496_0_length_Load(EOS(STATIC_496), o21, 0) | =(matching1, 0)
496_0_length_Load(EOS(STATIC_496), o72, i65) → 645_0_length_Load(EOS(STATIC_645), o72, i65)
645_0_length_Load(EOS(STATIC_645), o125, i95) → 727_0_length_Load(EOS(STATIC_727), o125, i95)
727_0_length_Load(EOS(STATIC_727), o151, i104) → 808_0_length_Load(EOS(STATIC_808), o151, i104)
808_0_length_Load(EOS(STATIC_808), o185, i117) → 810_0_length_NULL(EOS(STATIC_810), o185, i117, o185)
810_0_length_NULL(EOS(STATIC_810), java.lang.Object(o195sub), i117, java.lang.Object(o195sub)) → 812_0_length_NULL(EOS(STATIC_812), java.lang.Object(o195sub), i117, java.lang.Object(o195sub))
810_0_length_NULL(EOS(STATIC_810), NULL, i117, NULL) → 813_0_length_NULL(EOS(STATIC_813), NULL, i117, NULL)
812_0_length_NULL(EOS(STATIC_812), java.lang.Object(o195sub), i117, java.lang.Object(o195sub)) → 815_0_length_Load(EOS(STATIC_815), java.lang.Object(o195sub), i117)
813_0_length_NULL(EOS(STATIC_813), NULL, i117, NULL) → 816_0_length_Load(EOS(STATIC_816), i117)
815_0_length_Load(EOS(STATIC_815), java.lang.Object(o195sub), i117) → 818_0_length_InvokeMethod(EOS(STATIC_818), i117, java.lang.Object(o195sub))
816_0_length_Load(EOS(STATIC_816), i117) → 820_0_length_Return(EOS(STATIC_820), i117)
818_0_length_InvokeMethod(EOS(STATIC_818), i117, java.lang.Object(o195sub)) → 821_0_getTail_Load(EOS(STATIC_821), i117, java.lang.Object(o195sub), java.lang.Object(o195sub))
821_0_getTail_Load(EOS(STATIC_821), i117, java.lang.Object(o195sub), java.lang.Object(o195sub)) → 828_0_getTail_FieldAccess(EOS(STATIC_828), i117, java.lang.Object(o195sub), java.lang.Object(o195sub))
828_0_getTail_FieldAccess(EOS(STATIC_828), i117, java.lang.Object(o195sub), java.lang.Object(o195sub)) → 832_0_getTail_FieldAccess(EOS(STATIC_832), i117, java.lang.Object(o195sub), java.lang.Object(o195sub))
828_0_getTail_FieldAccess(EOS(STATIC_828), i117, java.lang.Object(o195sub), java.lang.Object(o195sub)) → 833_0_getTail_FieldAccess(EOS(STATIC_833), i117, java.lang.Object(o195sub), java.lang.Object(o195sub))
832_0_getTail_FieldAccess(EOS(STATIC_832), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 836_0_getTail_FieldAccess(EOS(STATIC_836), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
833_0_getTail_FieldAccess(EOS(STATIC_833), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 838_0_getTail_FieldAccess(EOS(STATIC_838), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
836_0_getTail_FieldAccess(EOS(STATIC_836), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 841_0_getTail_Return(EOS(STATIC_841), i117, java.lang.Object(List(EOC)), o199)
838_0_getTail_FieldAccess(EOS(STATIC_838), i117, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 843_0_getTail_Return(EOS(STATIC_843), i117, java.lang.Object(List(EOC)), o201)
841_0_getTail_Return(EOS(STATIC_841), i117, java.lang.Object(List(EOC)), o199) → 846_0_length_Store(EOS(STATIC_846), i117, o199)
843_0_getTail_Return(EOS(STATIC_843), i117, java.lang.Object(List(EOC)), o201) → 848_0_length_Store(EOS(STATIC_848), i117, o201)
846_0_length_Store(EOS(STATIC_846), i117, o199) → 850_0_length_Inc(EOS(STATIC_850), o199, i117)
848_0_length_Store(EOS(STATIC_848), i117, o201) → 851_0_length_Inc(EOS(STATIC_851), o201, i117)
850_0_length_Inc(EOS(STATIC_850), o199, i117) → 855_0_length_JMP(EOS(STATIC_855), o199, +(i117, 1)) | >=(i117, 0)
851_0_length_Inc(EOS(STATIC_851), o201, i117) → 857_0_length_JMP(EOS(STATIC_857), o201, +(i117, 1)) | >=(i117, 0)
855_0_length_JMP(EOS(STATIC_855), o199, i121) → 861_0_length_Load(EOS(STATIC_861), o199, i121)
857_0_length_JMP(EOS(STATIC_857), o201, i122) → 865_0_length_Load(EOS(STATIC_865), o201, i122)
861_0_length_Load(EOS(STATIC_861), o199, i121) → 808_0_length_Load(EOS(STATIC_808), o199, i121)
865_0_length_Load(EOS(STATIC_865), o201, i122) → 808_0_length_Load(EOS(STATIC_808), o201, i122)
952_0_bubble_Load(EOS(STATIC_952), o226) → 954_0_bubble_Store(EOS(STATIC_954), o226)
954_0_bubble_Store(EOS(STATIC_954), o226) → 956_0_bubble_Load(EOS(STATIC_956), o226)
956_0_bubble_Load(EOS(STATIC_956), o226) → 1135_0_bubble_Load(EOS(STATIC_1135), o226)
1135_0_bubble_Load(EOS(STATIC_1135), o303) → 1568_0_bubble_Load(EOS(STATIC_1568), o303)
1568_0_bubble_Load(EOS(STATIC_1568), o1104) → 1572_0_bubble_NULL(EOS(STATIC_1572), o1104, o1104)
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1573_0_bubble_NULL(EOS(STATIC_1573), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1572_0_bubble_NULL(EOS(STATIC_1572), NULL, NULL) → 1574_0_bubble_NULL(EOS(STATIC_1574), NULL, NULL)
1573_0_bubble_NULL(EOS(STATIC_1573), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1576_0_bubble_Load(EOS(STATIC_1576), java.lang.Object(o1109sub))
1574_0_bubble_NULL(EOS(STATIC_1574), NULL, NULL) → 1577_0_bubble_Return(EOS(STATIC_1577))
1576_0_bubble_Load(EOS(STATIC_1576), java.lang.Object(o1109sub)) → 1578_0_bubble_InvokeMethod(EOS(STATIC_1578), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1577_0_bubble_Return(EOS(STATIC_1577)) → 1611_0_bubble_Return(EOS(STATIC_1611))
1578_0_bubble_InvokeMethod(EOS(STATIC_1578), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1580_0_getTail_Load(EOS(STATIC_1580), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1580_0_getTail_Load(EOS(STATIC_1580), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1590_0_getTail_FieldAccess(EOS(STATIC_1590), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1588_0_getTail_FieldAccess(EOS(STATIC_1588), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub)) → 1591_0_getTail_FieldAccess(EOS(STATIC_1591), java.lang.Object(o1109sub), java.lang.Object(o1109sub), java.lang.Object(o1109sub))
1590_0_getTail_FieldAccess(EOS(STATIC_1590), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1592_0_getTail_FieldAccess(EOS(STATIC_1592), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1591_0_getTail_FieldAccess(EOS(STATIC_1591), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1594_0_getTail_FieldAccess(EOS(STATIC_1594), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1592_0_getTail_FieldAccess(EOS(STATIC_1592), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1596_0_getTail_Return(EOS(STATIC_1596), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o1116)
1594_0_getTail_FieldAccess(EOS(STATIC_1594), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1597_0_getTail_Return(EOS(STATIC_1597), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o1118)
1596_0_getTail_Return(EOS(STATIC_1596), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o1116) → 1599_0_bubble_NULL(EOS(STATIC_1599), java.lang.Object(List(EOC)), o1116)
1597_0_getTail_Return(EOS(STATIC_1597), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), o1118) → 1601_0_bubble_NULL(EOS(STATIC_1601), java.lang.Object(List(EOC)), o1118)
1599_0_bubble_NULL(EOS(STATIC_1599), java.lang.Object(List(EOC)), java.lang.Object(o1126sub)) → 1603_0_bubble_NULL(EOS(STATIC_1603), java.lang.Object(List(EOC)), java.lang.Object(o1126sub))
1599_0_bubble_NULL(EOS(STATIC_1599), java.lang.Object(List(EOC)), NULL) → 1604_0_bubble_NULL(EOS(STATIC_1604), java.lang.Object(List(EOC)), NULL)
1601_0_bubble_NULL(EOS(STATIC_1601), java.lang.Object(List(EOC)), java.lang.Object(o1127sub)) → 1606_0_bubble_NULL(EOS(STATIC_1606), java.lang.Object(List(EOC)), java.lang.Object(o1127sub))
1601_0_bubble_NULL(EOS(STATIC_1601), java.lang.Object(List(EOC)), NULL) → 1607_0_bubble_NULL(EOS(STATIC_1607), java.lang.Object(List(EOC)), NULL)
1603_0_bubble_NULL(EOS(STATIC_1603), java.lang.Object(List(EOC)), java.lang.Object(o1126sub)) → 1609_0_bubble_Load(EOS(STATIC_1609), java.lang.Object(List(EOC)))
1604_0_bubble_NULL(EOS(STATIC_1604), java.lang.Object(List(EOC)), NULL) → 1611_0_bubble_Return(EOS(STATIC_1611))
1606_0_bubble_NULL(EOS(STATIC_1606), java.lang.Object(List(EOC)), java.lang.Object(o1127sub)) → 1612_0_bubble_Load(EOS(STATIC_1612), java.lang.Object(List(EOC)))
1607_0_bubble_NULL(EOS(STATIC_1607), java.lang.Object(List(EOC)), NULL) → 1614_0_bubble_Return(EOS(STATIC_1614))
1609_0_bubble_Load(EOS(STATIC_1609), java.lang.Object(List(EOC))) → 1616_0_bubble_FieldAccess(EOS(STATIC_1616), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1612_0_bubble_Load(EOS(STATIC_1612), java.lang.Object(List(EOC))) → 1619_0_bubble_FieldAccess(EOS(STATIC_1619), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1616_0_bubble_FieldAccess(EOS(STATIC_1616), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1623_0_bubble_Load(EOS(STATIC_1623), java.lang.Object(List(EOC)), i313)
1619_0_bubble_FieldAccess(EOS(STATIC_1619), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1627_0_bubble_Load(EOS(STATIC_1627), java.lang.Object(List(EOC)), i314)
1623_0_bubble_Load(EOS(STATIC_1623), java.lang.Object(List(EOC)), i313) → 1632_0_bubble_InvokeMethod(EOS(STATIC_1632), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1627_0_bubble_Load(EOS(STATIC_1627), java.lang.Object(List(EOC)), i314) → 1638_0_bubble_InvokeMethod(EOS(STATIC_1638), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)))
1632_0_bubble_InvokeMethod(EOS(STATIC_1632), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1644_0_getTail_Load(EOS(STATIC_1644), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1638_0_bubble_InvokeMethod(EOS(STATIC_1638), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1645_0_getTail_Load(EOS(STATIC_1645), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1644_0_getTail_Load(EOS(STATIC_1644), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1648_0_getTail_FieldAccess(EOS(STATIC_1648), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1645_0_getTail_Load(EOS(STATIC_1645), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1649_0_getTail_FieldAccess(EOS(STATIC_1649), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1648_0_getTail_FieldAccess(EOS(STATIC_1648), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1652_0_getTail_Return(EOS(STATIC_1652), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(o1126sub))
1649_0_getTail_FieldAccess(EOS(STATIC_1649), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1654_0_getTail_Return(EOS(STATIC_1654), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(o1127sub))
1652_0_getTail_Return(EOS(STATIC_1652), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(o1126sub)) → 1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC)), i313, java.lang.Object(o1126sub))
1654_0_getTail_Return(EOS(STATIC_1654), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(o1127sub)) → 1660_0_bubble_FieldAccess(EOS(STATIC_1660), java.lang.Object(List(EOC)), i314, java.lang.Object(o1127sub))
1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC)), i313, java.lang.Object(o1126sub)) → 1662_0_bubble_FieldAccess(EOS(STATIC_1662), java.lang.Object(List(EOC)), i313, java.lang.Object(o1126sub))
1657_0_bubble_FieldAccess(EOS(STATIC_1657), java.lang.Object(List(EOC)), i313, java.lang.Object(o1126sub)) → 1663_0_bubble_FieldAccess(EOS(STATIC_1663), java.lang.Object(List(EOC)), i313, java.lang.Object(o1126sub))
1660_0_bubble_FieldAccess(EOS(STATIC_1660), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1665_0_bubble_FieldAccess(EOS(STATIC_1665), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)))
1662_0_bubble_FieldAccess(EOS(STATIC_1662), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1667_0_bubble_FieldAccess(EOS(STATIC_1667), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1663_0_bubble_FieldAccess(EOS(STATIC_1663), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1668_0_bubble_FieldAccess(EOS(STATIC_1668), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1665_0_bubble_FieldAccess(EOS(STATIC_1665), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC)), i314, i317)
1667_0_bubble_FieldAccess(EOS(STATIC_1667), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC)), i313, i318)
1668_0_bubble_FieldAccess(EOS(STATIC_1668), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC)), i313, i319)
1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC)), i314, i317) → 1678_0_bubble_LE(EOS(STATIC_1678), java.lang.Object(List(EOC)), i314, i317)
1671_0_bubble_LE(EOS(STATIC_1671), java.lang.Object(List(EOC)), i314, i317) → 1680_0_bubble_LE(EOS(STATIC_1680), java.lang.Object(List(EOC)), i314, i317)
1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC)), i313, i318) → 1681_0_bubble_LE(EOS(STATIC_1681), java.lang.Object(List(EOC)), i313, i318)
1673_0_bubble_LE(EOS(STATIC_1673), java.lang.Object(List(EOC)), i313, i318) → 1682_0_bubble_LE(EOS(STATIC_1682), java.lang.Object(List(EOC)), i313, i318)
1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC)), i313, i319) → 1683_0_bubble_LE(EOS(STATIC_1683), java.lang.Object(List(EOC)), i313, i319)
1677_0_bubble_LE(EOS(STATIC_1677), java.lang.Object(List(EOC)), i313, i319) → 1684_0_bubble_LE(EOS(STATIC_1684), java.lang.Object(List(EOC)), i313, i319)
1678_0_bubble_LE(EOS(STATIC_1678), java.lang.Object(List(EOC)), i314, i317) → 1685_0_bubble_Load(EOS(STATIC_1685), java.lang.Object(List(EOC))) | <=(i314, i317)
1680_0_bubble_LE(EOS(STATIC_1680), java.lang.Object(List(EOC)), i314, i317) → 1686_0_bubble_Load(EOS(STATIC_1686), java.lang.Object(List(EOC))) | >(i314, i317)
1681_0_bubble_LE(EOS(STATIC_1681), java.lang.Object(List(EOC)), i313, i318) → 1688_0_bubble_Load(EOS(STATIC_1688), java.lang.Object(List(EOC))) | <=(i313, i318)
1682_0_bubble_LE(EOS(STATIC_1682), java.lang.Object(List(EOC)), i313, i318) → 1690_0_bubble_Load(EOS(STATIC_1690), java.lang.Object(List(EOC))) | >(i313, i318)
1683_0_bubble_LE(EOS(STATIC_1683), java.lang.Object(List(EOC)), i313, i319) → 1691_0_bubble_Load(EOS(STATIC_1691), java.lang.Object(List(EOC))) | <=(i313, i319)
1684_0_bubble_LE(EOS(STATIC_1684), java.lang.Object(List(EOC)), i313, i319) → 1692_0_bubble_Load(EOS(STATIC_1692), java.lang.Object(List(EOC))) | >(i313, i319)
1685_0_bubble_Load(EOS(STATIC_1685), java.lang.Object(List(EOC))) → 1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC)))
1686_0_bubble_Load(EOS(STATIC_1686), java.lang.Object(List(EOC))) → 1695_0_bubble_FieldAccess(EOS(STATIC_1695), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1688_0_bubble_Load(EOS(STATIC_1688), java.lang.Object(List(EOC))) → 1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC)))
1690_0_bubble_Load(EOS(STATIC_1690), java.lang.Object(List(EOC))) → 1699_0_bubble_FieldAccess(EOS(STATIC_1699), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1691_0_bubble_Load(EOS(STATIC_1691), java.lang.Object(List(EOC))) → 1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC)))
1692_0_bubble_Load(EOS(STATIC_1692), java.lang.Object(List(EOC))) → 1703_0_bubble_FieldAccess(EOS(STATIC_1703), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1695_0_bubble_FieldAccess(EOS(STATIC_1695), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1705_0_bubble_Store(EOS(STATIC_1705), java.lang.Object(List(EOC)), i314)
1699_0_bubble_FieldAccess(EOS(STATIC_1699), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1707_0_bubble_Store(EOS(STATIC_1707), java.lang.Object(List(EOC)), i313)
1703_0_bubble_FieldAccess(EOS(STATIC_1703), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1711_0_bubble_Store(EOS(STATIC_1711), java.lang.Object(List(EOC)), i313)
1705_0_bubble_Store(EOS(STATIC_1705), java.lang.Object(List(EOC)), i314) → 1713_0_bubble_Load(EOS(STATIC_1713), java.lang.Object(List(EOC)), i314)
1707_0_bubble_Store(EOS(STATIC_1707), java.lang.Object(List(EOC)), i313) → 1714_0_bubble_Load(EOS(STATIC_1714), java.lang.Object(List(EOC)), i313)
1711_0_bubble_Store(EOS(STATIC_1711), java.lang.Object(List(EOC)), i313) → 1716_0_bubble_Load(EOS(STATIC_1716), java.lang.Object(List(EOC)), i313)
1713_0_bubble_Load(EOS(STATIC_1713), java.lang.Object(List(EOC)), i314) → 1720_0_bubble_Load(EOS(STATIC_1720), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)))
1714_0_bubble_Load(EOS(STATIC_1714), java.lang.Object(List(EOC)), i313) → 1724_0_bubble_Load(EOS(STATIC_1724), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1716_0_bubble_Load(EOS(STATIC_1716), java.lang.Object(List(EOC)), i313) → 1728_0_bubble_Load(EOS(STATIC_1728), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1720_0_bubble_Load(EOS(STATIC_1720), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1732_0_bubble_InvokeMethod(EOS(STATIC_1732), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1724_0_bubble_Load(EOS(STATIC_1724), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1737_0_bubble_InvokeMethod(EOS(STATIC_1737), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1728_0_bubble_Load(EOS(STATIC_1728), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1741_0_bubble_InvokeMethod(EOS(STATIC_1741), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1732_0_bubble_InvokeMethod(EOS(STATIC_1732), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1744_0_getTail_Load(EOS(STATIC_1744), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1737_0_bubble_InvokeMethod(EOS(STATIC_1737), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1749_0_getTail_Load(EOS(STATIC_1749), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1741_0_bubble_InvokeMethod(EOS(STATIC_1741), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1751_0_getTail_Load(EOS(STATIC_1751), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1744_0_getTail_Load(EOS(STATIC_1744), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1757_0_getTail_FieldAccess(EOS(STATIC_1757), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1749_0_getTail_Load(EOS(STATIC_1749), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1763_0_getTail_FieldAccess(EOS(STATIC_1763), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1751_0_getTail_Load(EOS(STATIC_1751), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1769_0_getTail_FieldAccess(EOS(STATIC_1769), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1757_0_getTail_FieldAccess(EOS(STATIC_1757), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1773_0_getTail_Return(EOS(STATIC_1773), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1763_0_getTail_FieldAccess(EOS(STATIC_1763), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1777_0_getTail_Return(EOS(STATIC_1777), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1769_0_getTail_FieldAccess(EOS(STATIC_1769), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1780_0_getTail_Return(EOS(STATIC_1780), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1773_0_getTail_Return(EOS(STATIC_1773), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1782_0_bubble_FieldAccess(EOS(STATIC_1782), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1777_0_getTail_Return(EOS(STATIC_1777), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1783_0_bubble_FieldAccess(EOS(STATIC_1783), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1780_0_getTail_Return(EOS(STATIC_1780), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1785_0_bubble_FieldAccess(EOS(STATIC_1785), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1782_0_bubble_FieldAccess(EOS(STATIC_1782), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1786_0_bubble_FieldAccess(EOS(STATIC_1786), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), i317)
1783_0_bubble_FieldAccess(EOS(STATIC_1783), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1788_0_bubble_FieldAccess(EOS(STATIC_1788), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), i318)
1785_0_bubble_FieldAccess(EOS(STATIC_1785), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1790_0_bubble_FieldAccess(EOS(STATIC_1790), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), i319)
1786_0_bubble_FieldAccess(EOS(STATIC_1786), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), i317) → 1791_0_bubble_Load(EOS(STATIC_1791), java.lang.Object(List(EOC)), i314)
1788_0_bubble_FieldAccess(EOS(STATIC_1788), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), i318) → 1794_0_bubble_Load(EOS(STATIC_1794), java.lang.Object(List(EOC)), i313)
1790_0_bubble_FieldAccess(EOS(STATIC_1790), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), i319) → 1796_0_bubble_Load(EOS(STATIC_1796), java.lang.Object(List(EOC)), i313)
1791_0_bubble_Load(EOS(STATIC_1791), java.lang.Object(List(EOC)), i314) → 1797_0_bubble_InvokeMethod(EOS(STATIC_1797), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)))
1794_0_bubble_Load(EOS(STATIC_1794), java.lang.Object(List(EOC)), i313) → 1799_0_bubble_InvokeMethod(EOS(STATIC_1799), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1796_0_bubble_Load(EOS(STATIC_1796), java.lang.Object(List(EOC)), i313) → 1801_0_bubble_InvokeMethod(EOS(STATIC_1801), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1797_0_bubble_InvokeMethod(EOS(STATIC_1797), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1803_0_getTail_Load(EOS(STATIC_1803), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1799_0_bubble_InvokeMethod(EOS(STATIC_1799), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1804_0_getTail_Load(EOS(STATIC_1804), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1801_0_bubble_InvokeMethod(EOS(STATIC_1801), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1806_0_getTail_Load(EOS(STATIC_1806), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1803_0_getTail_Load(EOS(STATIC_1803), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1809_0_getTail_FieldAccess(EOS(STATIC_1809), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1804_0_getTail_Load(EOS(STATIC_1804), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1814_0_getTail_FieldAccess(EOS(STATIC_1814), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1806_0_getTail_Load(EOS(STATIC_1806), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1819_0_getTail_FieldAccess(EOS(STATIC_1819), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1809_0_getTail_FieldAccess(EOS(STATIC_1809), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1823_0_getTail_Return(EOS(STATIC_1823), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1814_0_getTail_FieldAccess(EOS(STATIC_1814), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1826_0_getTail_Return(EOS(STATIC_1826), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1819_0_getTail_FieldAccess(EOS(STATIC_1819), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1831_0_getTail_Return(EOS(STATIC_1831), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1823_0_getTail_Return(EOS(STATIC_1823), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1832_0_bubble_Load(EOS(STATIC_1832), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC)))
1826_0_getTail_Return(EOS(STATIC_1826), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1835_0_bubble_Load(EOS(STATIC_1835), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1831_0_getTail_Return(EOS(STATIC_1831), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1836_0_bubble_Load(EOS(STATIC_1836), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC)))
1832_0_bubble_Load(EOS(STATIC_1832), java.lang.Object(List(EOC)), i314, java.lang.Object(List(EOC))) → 1838_0_bubble_FieldAccess(EOS(STATIC_1838), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i314)
1835_0_bubble_Load(EOS(STATIC_1835), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1839_0_bubble_FieldAccess(EOS(STATIC_1839), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i313)
1836_0_bubble_Load(EOS(STATIC_1836), java.lang.Object(List(EOC)), i313, java.lang.Object(List(EOC))) → 1841_0_bubble_FieldAccess(EOS(STATIC_1841), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i313)
1838_0_bubble_FieldAccess(EOS(STATIC_1838), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i314) → 1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC)))
1839_0_bubble_FieldAccess(EOS(STATIC_1839), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i313) → 1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC)))
1841_0_bubble_FieldAccess(EOS(STATIC_1841), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)), i313) → 1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC)))
1843_0_bubble_Load(EOS(STATIC_1843), java.lang.Object(List(EOC))) → 1853_0_bubble_InvokeMethod(EOS(STATIC_1853), java.lang.Object(List(EOC)))
1848_0_bubble_Load(EOS(STATIC_1848), java.lang.Object(List(EOC))) → 1855_0_bubble_InvokeMethod(EOS(STATIC_1855), java.lang.Object(List(EOC)))
1851_0_bubble_Load(EOS(STATIC_1851), java.lang.Object(List(EOC))) → 1856_0_bubble_InvokeMethod(EOS(STATIC_1856), java.lang.Object(List(EOC)))
1853_0_bubble_InvokeMethod(EOS(STATIC_1853), java.lang.Object(List(EOC))) → 1857_0_getTail_Load(EOS(STATIC_1857), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1855_0_bubble_InvokeMethod(EOS(STATIC_1855), java.lang.Object(List(EOC))) → 1859_0_getTail_Load(EOS(STATIC_1859), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1856_0_bubble_InvokeMethod(EOS(STATIC_1856), java.lang.Object(List(EOC))) → 1860_0_getTail_Load(EOS(STATIC_1860), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1857_0_getTail_Load(EOS(STATIC_1857), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1863_0_getTail_FieldAccess(EOS(STATIC_1863), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1859_0_getTail_Load(EOS(STATIC_1859), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1868_0_getTail_FieldAccess(EOS(STATIC_1868), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1860_0_getTail_Load(EOS(STATIC_1860), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1873_0_getTail_FieldAccess(EOS(STATIC_1873), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1863_0_getTail_FieldAccess(EOS(STATIC_1863), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1876_0_getTail_Return(EOS(STATIC_1876), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1868_0_getTail_FieldAccess(EOS(STATIC_1868), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1881_0_getTail_Return(EOS(STATIC_1881), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1873_0_getTail_FieldAccess(EOS(STATIC_1873), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1885_0_getTail_Return(EOS(STATIC_1885), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))
1876_0_getTail_Return(EOS(STATIC_1876), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1886_0_bubble_Store(EOS(STATIC_1886), java.lang.Object(List(EOC)))
1881_0_getTail_Return(EOS(STATIC_1881), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC)))
1885_0_getTail_Return(EOS(STATIC_1885), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1890_0_bubble_Store(EOS(STATIC_1890), java.lang.Object(List(EOC)))
1886_0_bubble_Store(EOS(STATIC_1886), java.lang.Object(List(EOC))) → 1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC)))
1889_0_bubble_Store(EOS(STATIC_1889), java.lang.Object(List(EOC))) → 1892_0_bubble_JMP(EOS(STATIC_1892), java.lang.Object(List(EOC)))
1890_0_bubble_Store(EOS(STATIC_1890), java.lang.Object(List(EOC))) → 1893_0_bubble_JMP(EOS(STATIC_1893), java.lang.Object(List(EOC)))
1892_0_bubble_JMP(EOS(STATIC_1892), java.lang.Object(List(EOC))) → 1896_0_bubble_Load(EOS(STATIC_1896), java.lang.Object(List(EOC)))
1893_0_bubble_JMP(EOS(STATIC_1893), java.lang.Object(List(EOC))) → 1898_0_bubble_Load(EOS(STATIC_1898), java.lang.Object(List(EOC)))
1896_0_bubble_Load(EOS(STATIC_1896), java.lang.Object(List(EOC))) → 1568_0_bubble_Load(EOS(STATIC_1568), java.lang.Object(List(EOC)))
1898_0_bubble_Load(EOS(STATIC_1898), java.lang.Object(List(EOC))) → 1568_0_bubble_Load(EOS(STATIC_1568), java.lang.Object(List(EOC)))

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
910_1_main_InvokeMethod(820_0_length_Return(EOS(STATIC_820), x0), java.lang.Object(ARRAY(3)), x2, x3) → 1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x2, x0, 0, 0, x0)
1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x1, x2, x3, x3, x2) → 910_1_main_InvokeMethod(910_0_length_ConstantStackPush(EOS(STATIC_910), x4), java.lang.Object(ARRAY(3)), +(x1, 1), x4) | &&(&&(>=(x3, x2), >(+(x1, 1), 0)), <(x1, 2))
1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x1, x2, x3, x3, x2) → 1395_1_main_InvokeMethod(1395_0_bubble_Load(EOS(STATIC_1395), x4), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) | <(x3, x2)
1395_1_main_InvokeMethod(1577_0_bubble_Return(EOS(STATIC_1577)), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) → 1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2) | >(+(x3, 1), 0)
1395_1_main_InvokeMethod(1611_0_bubble_Return(EOS(STATIC_1611)), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) → 1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2) | >(+(x3, 1), 0)
1395_1_main_InvokeMethod(1614_0_bubble_Return(EOS(STATIC_1614)), java.lang.Object(ARRAY(3)), x1, x2, x3, x4) → 1322_0_main_GE(EOS(STATIC_1322), java.lang.Object(ARRAY(3)), x1, x2, +(x3, 1), +(x3, 1), x2) | >(+(x3, 1), 0)
R rules:
910_0_length_ConstantStackPush(EOS(STATIC_910), x0) → 810_0_length_NULL(EOS(STATIC_810), x0, 0, x0)
810_0_length_NULL(EOS(STATIC_810), NULL, x0, NULL) → 820_0_length_Return(EOS(STATIC_820), x0)
810_0_length_NULL(EOS(STATIC_810), java.lang.Object(List(EOC)), x0, java.lang.Object(List(EOC))) → 810_0_length_NULL(EOS(STATIC_810), x1, +(x0, 1), x1) | >(+(x0, 1), 0)
1395_0_bubble_Load(EOS(STATIC_1395), x0) → 1572_0_bubble_NULL(EOS(STATIC_1572), x0, x0)
1572_0_bubble_NULL(EOS(STATIC_1572), NULL, NULL) → 1611_0_bubble_Return(EOS(STATIC_1611))
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1611_0_bubble_Return(EOS(STATIC_1611))
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1614_0_bubble_Return(EOS(STATIC_1614))
1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC)), java.lang.Object(List(EOC))) → 1572_0_bubble_NULL(EOS(STATIC_1572), java.lang.Object(List(EOC)), java.lang.Object(List(EOC)))

Filtered ground terms:



1322_0_main_GE(x1, x2, x3, x4, x5, x6, x7) → 1322_0_main_GE(x3, x4, x5, x6, x7)
ARRAY(x1) → ARRAY
Cond_1395_1_main_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7) → Cond_1395_1_main_InvokeMethod2(x1, x4, x5, x6, x7)
1614_0_bubble_Return(x1) → 1614_0_bubble_Return
1395_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1395_1_main_InvokeMethod(x1, x3, x4, x5, x6)
Cond_1395_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7) → Cond_1395_1_main_InvokeMethod1(x1, x4, x5, x6, x7)
1611_0_bubble_Return(x1) → 1611_0_bubble_Return
Cond_1395_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) → Cond_1395_1_main_InvokeMethod(x1, x4, x5, x6, x7)
1577_0_bubble_Return(x1) → 1577_0_bubble_Return
1395_0_bubble_Load(x1, x2) → 1395_0_bubble_Load(x2)
Cond_1322_0_main_GE1(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1322_0_main_GE1(x1, x4, x5, x6, x7, x8, x9)
910_1_main_InvokeMethod(x1, x2, x3, x4) → 910_1_main_InvokeMethod(x1, x3, x4)
910_0_length_ConstantStackPush(x1, x2) → 910_0_length_ConstantStackPush(x2)
Cond_1322_0_main_GE(x1, x2, x3, x4, x5, x6, x7, x8, x9) → Cond_1322_0_main_GE(x1, x4, x5, x6, x7, x8, x9)
820_0_length_Return(x1, x2) → 820_0_length_Return(x2)
1572_0_bubble_NULL(x1, x2, x3) → 1572_0_bubble_NULL(x2, x3)
List(x1) → List
810_0_length_NULL(x1, x2, x3, x4) → 810_0_length_NULL(x2, x3, x4)
Cond_810_0_length_NULL(x1, x2, x3, x4, x5, x6) → Cond_810_0_length_NULL(x1, x4, x6)

Filtered duplicate args:



1322_0_main_GE(x1, x2, x3, x4, x5) → 1322_0_main_GE(x1, x4, x5)
Cond_1322_0_main_GE(x1, x2, x3, x4, x5, x6, x7) → Cond_1322_0_main_GE(x1, x2, x5, x6, x7)
Cond_1322_0_main_GE1(x1, x2, x3, x4, x5, x6, x7) → Cond_1322_0_main_GE1(x1, x2, x5, x6, x7)
810_0_length_NULL(x1, x2, x3) → 810_0_length_NULL(x2, x3)
1572_0_bubble_NULL(x1, x2) → 1572_0_bubble_NULL(x2)

Filtered unneeded arguments:



910_1_main_InvokeMethod(x1, x2, x3) → 910_1_main_InvokeMethod(x1, x2)
Cond_1322_0_main_GE(x1, x2, x3, x4, x5) → Cond_1322_0_main_GE(x1, x2, x5)
1395_1_main_InvokeMethod(x1, x2, x3, x4, x5) → 1395_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_1395_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1395_1_main_InvokeMethod(x1, x2, x3, x4)
Cond_1395_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1395_1_main_InvokeMethod1(x1, x2, x3, x4)
Cond_1395_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_1395_1_main_InvokeMethod2(x1, x2, x3, x4)

Combined rules. Obtained 6 conditional rules for P and 8 conditional rules for R.


P rules:
910_1_main_InvokeMethod(820_0_length_Return(x0), x2) → 1322_0_main_GE(x2, 0, x0)
1322_0_main_GE(x1, x3, x2) → 910_1_main_InvokeMethod(910_0_length_ConstantStackPush(x4), +(x1, 1)) | &&(&&(>=(x3, x2), >(x1, -1)), <(x1, 2))
1322_0_main_GE(x1, x3, x2) → 1395_1_main_InvokeMethod(1395_0_bubble_Load(x4), x1, x2, x3) | <(x3, x2)
1395_1_main_InvokeMethod(1577_0_bubble_Return, x1, x2, x3) → 1322_0_main_GE(x1, +(x3, 1), x2) | >(x3, -1)
1395_1_main_InvokeMethod(1611_0_bubble_Return, x1, x2, x3) → 1322_0_main_GE(x1, +(x3, 1), x2) | >(x3, -1)
1395_1_main_InvokeMethod(1614_0_bubble_Return, x1, x2, x3) → 1322_0_main_GE(x1, +(x3, 1), x2) | >(x3, -1)
R rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → 810_0_length_NULL(+(x0, 1), x1) | >(x0, -1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → 1611_0_bubble_Return
1572_0_bubble_NULL(java.lang.Object(List)) → 1611_0_bubble_Return
1572_0_bubble_NULL(java.lang.Object(List)) → 1614_0_bubble_Return
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

Performed bisimulation on rules. Used the following equivalence classes: {[List, 1611_0_bubble_Return, 1614_0_bubble_Return, 1577_0_bubble_Return]=List, [Cond_1395_1_main_InvokeMethod_5, Cond_1395_1_main_InvokeMethod1_5, Cond_1395_1_main_InvokeMethod2_5]=Cond_1395_1_main_InvokeMethod_5}


Finished conversion. Obtained 7 rules for P and 8 rules for R. System has predefined symbols.


P rules:
910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0), x2) → 1322_0_MAIN_GE(x2, 0, x0)
1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE(&&(&&(>=(x3, x2), >(x1, -1)), <(x1, 2)), x1, x3, x2, x4)
COND_1322_0_MAIN_GE(TRUE, x1, x3, x2, x4) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4), +(x1, 1))
1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE1(<(x3, x2), x1, x3, x2, x4)
COND_1322_0_MAIN_GE1(TRUE, x1, x3, x2, x4) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4), x1, x2, x3)
1395_1_MAIN_INVOKEMETHOD(List, x1, x2, x3) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3, -1), List, x1, x2, x3)
COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1, x2, x3) → 1322_0_MAIN_GE(x1, +(x3, 1), x2)
R rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(>(x0, -1), x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(+(x0, 1), x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

(32) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(x0 > -1, x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(x0 + 1, x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(0): 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0])
(1): 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(x3[1] >= x2[1] && x1[1] > -1 && x1[1] < 2, x1[1], x3[1], x2[1], x4[1])
(2): COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), x1[2] + 1)
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])

(0) -> (1), if (x2[0]* x1[1]0* x3[1]x0[0]* x2[1])


(0) -> (3), if (x2[0]* x1[3]0* x3[3]x0[0]* x2[3])


(1) -> (2), if (x3[1] >= x2[1] && x1[1] > -1 && x1[1] < 2x1[1]* x1[2]x3[1]* x3[2]x2[1]* x2[2]x4[1]* x4[2])


(2) -> (0), if (910_0_length_ConstantStackPush(x4[2]) →* 820_0_length_Return(x0[0])∧x1[2] + 1* x2[0])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])


(6) -> (1), if (x1[6]* x1[1]x3[6] + 1* x3[1]x2[6]* x2[1])


(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(33) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54198565 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

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


For Pair 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0), x2) → 1322_0_MAIN_GE(x2, 0, x0) the following chains were created:
  • We consider the chain COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1)), 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0]), 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1]) which results in the following constraint:

    (1)    (910_0_length_ConstantStackPush(x4[2])=820_0_length_Return(x0[0])∧+(x1[2], 1)=x2[0]x2[0]=x1[1]0=x3[1]x0[0]=x2[1]910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0])≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0])≥1322_0_MAIN_GE(x2[0], 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



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

    (2)    (0=x0810_0_length_NULL(x0, x4[2])=820_0_length_Return(x0[0]) ⇒ 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on 810_0_length_NULL(x0, x4[2])=820_0_length_Return(x0[0]) which results in the following new constraints:

    (3)    (820_0_length_Return(x1)=820_0_length_Return(x0[0])∧0=x1910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))


    (4)    (Cond_810_0_length_NULL(>(x2, -1), x2, java.lang.Object(List), x3)=820_0_length_Return(x0[0])∧0=x2910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (3) using rules (I), (II), (III) which results in the following new constraint:

    (5)    (910_1_MAIN_INVOKEMETHOD(820_0_length_Return(0), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(0), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, 0)∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (4) using rules (III), (VII), (IDP_CONSTANT_FOLD) which results in the following new constraint:

    (6)    (Cond_810_0_length_NULL(TRUE, 0, java.lang.Object(List), x3)=820_0_length_Return(x0[0]) ⇒ 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



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

    (7)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (8)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (9)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (10)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (11)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (12)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (13)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (14)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)



  • We consider the chain COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1)), 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) which results in the following constraint:

    (15)    (910_0_length_ConstantStackPush(x4[2])=820_0_length_Return(x0[0])∧+(x1[2], 1)=x2[0]x2[0]=x1[3]0=x3[3]x0[0]=x2[3]910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0])≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0])≥1322_0_MAIN_GE(x2[0], 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (15) using rules (III), (IV), (VII), (REWRITING) which results in the following new constraint:

    (16)    (0=x6810_0_length_NULL(x6, x4[2])=820_0_length_Return(x0[0]) ⇒ 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (16) using rule (V) (with possible (I) afterwards) using induction on 810_0_length_NULL(x6, x4[2])=820_0_length_Return(x0[0]) which results in the following new constraints:

    (17)    (820_0_length_Return(x7)=820_0_length_Return(x0[0])∧0=x7910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))


    (18)    (Cond_810_0_length_NULL(>(x8, -1), x8, java.lang.Object(List), x9)=820_0_length_Return(x0[0])∧0=x8910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (17) using rules (I), (II), (III) which results in the following new constraint:

    (19)    (910_1_MAIN_INVOKEMETHOD(820_0_length_Return(0), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(0), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, 0)∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



    We simplified constraint (18) using rules (III), (VII), (IDP_CONSTANT_FOLD) which results in the following new constraint:

    (20)    (Cond_810_0_length_NULL(TRUE, 0, java.lang.Object(List), x9)=820_0_length_Return(x0[0]) ⇒ 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥NonInfC∧910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), +(x1[2], 1))≥1322_0_MAIN_GE(+(x1[2], 1), 0, x0[0])∧(UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥))



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

    (21)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (22)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (23)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (24)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (25)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (26)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 ≥ 0∧[1 + (-1)bso_58] ≥ 0)



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

    (27)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)



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

    (28)    ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)







For Pair 1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE(&&(&&(>=(x3, x2), >(x1, -1)), <(x1, 2)), x1, x3, x2, x4) the following chains were created:
  • We consider the chain 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0]), 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1]), COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1)) which results in the following constraint:

    (29)    (x2[0]=x1[1]0=x3[1]x0[0]=x2[1]&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2))=TRUEx1[1]=x1[2]x3[1]=x3[2]x2[1]=x2[2]x4[1]=x4[2]1322_0_MAIN_GE(x1[1], x3[1], x2[1])≥NonInfC∧1322_0_MAIN_GE(x1[1], x3[1], x2[1])≥COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])∧(UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥))



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

    (30)    (<(x1[1], 2)=TRUE>=(0, x2[1])=TRUE>(x1[1], -1)=TRUE1322_0_MAIN_GE(x1[1], 0, x2[1])≥NonInfC∧1322_0_MAIN_GE(x1[1], 0, x2[1])≥COND_1322_0_MAIN_GE(&&(&&(>=(0, x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], 0, x2[1], x4[1])∧(UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥))



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

    (31)    ([1] + [-1]x1[1] ≥ 0∧[-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (32)    ([1] + [-1]x1[1] ≥ 0∧[-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (33)    ([1] + [-1]x1[1] ≥ 0∧[-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (34)    ([1] + [-1]x1[1] ≥ 0∧[-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)



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

    (35)    ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)



  • We consider the chain COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1]), COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1)) which results in the following constraint:

    (36)    (x1[6]=x1[1]+(x3[6], 1)=x3[1]x2[6]=x2[1]&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2))=TRUEx1[1]=x1[2]x3[1]=x3[2]x2[1]=x2[2]x4[1]=x4[2]1322_0_MAIN_GE(x1[1], x3[1], x2[1])≥NonInfC∧1322_0_MAIN_GE(x1[1], x3[1], x2[1])≥COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])∧(UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥))



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

    (37)    (<(x1[1], 2)=TRUE>=(+(x3[6], 1), x2[1])=TRUE>(x1[1], -1)=TRUE1322_0_MAIN_GE(x1[1], +(x3[6], 1), x2[1])≥NonInfC∧1322_0_MAIN_GE(x1[1], +(x3[6], 1), x2[1])≥COND_1322_0_MAIN_GE(&&(&&(>=(+(x3[6], 1), x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], +(x3[6], 1), x2[1], x4[1])∧(UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥))



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

    (38)    ([1] + [-1]x1[1] ≥ 0∧x3[6] + [1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (39)    ([1] + [-1]x1[1] ≥ 0∧x3[6] + [1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (40)    ([1] + [-1]x1[1] ≥ 0∧x3[6] + [1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧[(-1)bso_60] ≥ 0)



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

    (41)    ([1] + [-1]x1[1] ≥ 0∧x3[6] + [1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)



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

    (42)    ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)



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

    (43)    ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)


    (44)    ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)







For Pair COND_1322_0_MAIN_GE(TRUE, x1, x3, x2, x4) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4), +(x1, 1)) the following chains were created:
  • We consider the chain 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1]), COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1)), 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0]) which results in the following constraint:

    (45)    (&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2))=TRUEx1[1]=x1[2]x3[1]=x3[2]x2[1]=x2[2]x4[1]=x4[2]910_0_length_ConstantStackPush(x4[2])=820_0_length_Return(x0[0])∧+(x1[2], 1)=x2[0]COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2])≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2])≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))



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

    (46)    (0=x12810_0_length_NULL(x12, x4[2])=820_0_length_Return(x0[0])∧<(x1[1], 2)=TRUE>=(x3[1], x2[1])=TRUE>(x1[1], -1)=TRUECOND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], x4[2])≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], x4[2])≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[1], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))



    We simplified constraint (46) using rule (V) (with possible (I) afterwards) using induction on 810_0_length_NULL(x12, x4[2])=820_0_length_Return(x0[0]) which results in the following new constraints:

    (47)    (820_0_length_Return(x13)=820_0_length_Return(x0[0])∧0=x13<(x1[1], 2)=TRUE>=(x3[1], x2[1])=TRUE>(x1[1], -1)=TRUECOND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], NULL)≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], NULL)≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(NULL), +(x1[1], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))


    (48)    (Cond_810_0_length_NULL(>(x14, -1), x14, java.lang.Object(List), x15)=820_0_length_Return(x0[0])∧0=x14<(x1[1], 2)=TRUE>=(x3[1], x2[1])=TRUE>(x1[1], -1)=TRUECOND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], java.lang.Object(List))≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], java.lang.Object(List))≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(java.lang.Object(List)), +(x1[1], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))



    We simplified constraint (47) using rules (I), (II), (IV) which results in the following new constraint:

    (49)    (<(x1[1], 2)=TRUE>=(x3[1], x2[1])=TRUE>(x1[1], -1)=TRUECOND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], NULL)≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], NULL)≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(NULL), +(x1[1], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))



    We simplified constraint (48) using rules (III), (VII), (IDP_CONSTANT_FOLD) which results in the following new constraint:

    (50)    (<(x1[1], 2)=TRUE>=(x3[1], x2[1])=TRUE>(x1[1], -1)=TRUECond_810_0_length_NULL(TRUE, 0, java.lang.Object(List), x15)=820_0_length_Return(x0[0]) ⇒ COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], java.lang.Object(List))≥NonInfC∧COND_1322_0_MAIN_GE(TRUE, x1[1], x3[1], x2[1], java.lang.Object(List))≥910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(java.lang.Object(List)), +(x1[1], 1))∧(UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥))



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

    (51)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (52)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (53)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (54)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (55)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (56)    ([1] + [-1]x1[1] ≥ 0∧x3[1] + [-1]x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (57)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (58)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (59)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)


    (60)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)



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

    (61)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)


    (62)    ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)







For Pair 1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE1(<(x3, x2), x1, x3, x2, x4) the following chains were created:
  • We consider the chain 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) which results in the following constraint:

    (63)    (x2[0]=x1[3]0=x3[3]x0[0]=x2[3]<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (64)    (<(0, x2[3])=TRUE1322_0_MAIN_GE(x2[0], 0, x2[3])≥NonInfC∧1322_0_MAIN_GE(x2[0], 0, x2[3])≥COND_1322_0_MAIN_GE1(<(0, x2[3]), x2[0], 0, x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (65)    (x2[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x2[0] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (66)    (x2[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x2[0] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (67)    (x2[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x2[0] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (68)    (x2[3] + [-1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)



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

    (69)    (x2[3] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)



  • We consider the chain COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) which results in the following constraint:

    (70)    (x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (71)    (<(+(x3[6], 1), x2[3])=TRUE1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥COND_1322_0_MAIN_GE1(<(+(x3[6], 1), x2[3]), x1[6], +(x3[6], 1), x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (72)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x1[6] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (73)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x1[6] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (74)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63 + (-1)Bound*bni_63] + [(-1)bni_63]x1[6] ≥ 0∧[(-1)bso_64] ≥ 0)



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

    (75)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)



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

    (76)    (x2[3] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)



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

    (77)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)


    (78)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)







For Pair COND_1322_0_MAIN_GE1(TRUE, x1, x3, x2, x4) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4), x1, x2, x3) the following chains were created:
  • We consider the chain 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]), 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]) which results in the following constraint:

    (79)    (<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1395_0_bubble_Load(x4[4])=Listx1[4]=x1[5]x2[4]=x2[5]x3[4]=x3[5]COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (80)    (<(x3[3], x2[3])=TRUE1395_0_bubble_Load(x4[4])=ListCOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



    We simplified constraint (80) using rule (V) (with possible (I) afterwards) using induction on 1395_0_bubble_Load(x4[4])=List which results in the following new constraint:

    (81)    (1572_0_bubble_NULL(x18)=List<(x3[3], x2[3])=TRUECOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x18)≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x18)≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x18), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (82)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [(-1)bni_65]x1[3] ≥ 0∧[(-1)bso_66] ≥ 0)



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

    (83)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [(-1)bni_65]x1[3] ≥ 0∧[(-1)bso_66] ≥ 0)



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

    (84)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)bni_65 + (-1)Bound*bni_65] + [(-1)bni_65]x1[3] ≥ 0∧[(-1)bso_66] ≥ 0)



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

    (85)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)



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

    (86)    (x2[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)



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

    (87)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)


    (88)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)







For Pair 1395_1_MAIN_INVOKEMETHOD(List, x1, x2, x3) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3, -1), List, x1, x2, x3) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]) which results in the following constraint:

    (89)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (90)    (>(x3[5], -1)=TRUE1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (91)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[5] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (92)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[5] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (93)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)bni_67 + (-1)Bound*bni_67] + [(-1)bni_67]x1[5] ≥ 0∧[(-1)bso_68] ≥ 0)



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

    (94)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧0 = 0∧[(-1)bni_67] = 0∧[(-1)bni_67 + (-1)Bound*bni_67] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_68] ≥ 0)







For Pair COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1, x2, x3) → 1322_0_MAIN_GE(x1, +(x3, 1), x2) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1]) which results in the following constraint:

    (95)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]x1[6]=x1[1]+(x3[6], 1)=x3[1]x2[6]=x2[1]COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (96)    (>(x3[5], -1)=TRUECOND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥1322_0_MAIN_GE(x1[5], +(x3[5], 1), x2[5])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (97)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (98)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (99)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (100)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧0 = 0∧[(-1)bni_69] = 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)



  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) which results in the following constraint:

    (101)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (102)    (>(x3[5], -1)=TRUECOND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥1322_0_MAIN_GE(x1[5], +(x3[5], 1), x2[5])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (103)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (104)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (105)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)bni_69 + (-1)Bound*bni_69] + [(-1)bni_69]x1[5] ≥ 0∧[(-1)bso_70] ≥ 0)



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

    (106)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧0 = 0∧[(-1)bni_69] = 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0), x2) → 1322_0_MAIN_GE(x2, 0, x0)
    • ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)
    • ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)
    • ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧[bni_57] = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)
    • ((UIncreasing(1322_0_MAIN_GE(x2[0], 0, x0[0])), ≥)∧0 = 0∧0 = 0∧0 ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_58] ≥ 0)

  • 1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE(&&(&&(>=(x3, x2), >(x1, -1)), <(x1, 2)), x1, x3, x2, x4)
    • ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)
    • ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)
    • ([1] + [-1]x1[1] ≥ 0∧x2[1] ≥ 0∧x1[1] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])), ≥)∧[(-1)bni_59 + (-1)Bound*bni_59] + [(-1)bni_59]x1[1] ≥ 0∧0 = 0∧[(-1)bso_60] ≥ 0)

  • COND_1322_0_MAIN_GE(TRUE, x1, x3, x2, x4) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4), +(x1, 1))
    • ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)
    • ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)
    • ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)
    • ([1] + [-1]x1[1] ≥ 0∧x3[1] ≥ 0∧x1[1] ≥ 0∧x2[1] ≥ 0 ⇒ (UIncreasing(910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))), ≥)∧[(-1)bni_61 + (-1)Bound*bni_61] + [(-1)bni_61]x1[1] ≥ 0∧[(-1)bso_62] ≥ 0)

  • 1322_0_MAIN_GE(x1, x3, x2) → COND_1322_0_MAIN_GE1(<(x3, x2), x1, x3, x2, x4)
    • (x2[3] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_63] = 0∧[(-1)bni_63 + (-1)Bound*bni_63] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_64] ≥ 0)

  • COND_1322_0_MAIN_GE1(TRUE, x1, x3, x2, x4) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4), x1, x2, x3)
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧[(-1)bni_65] = 0∧[(-1)bni_65 + (-1)Bound*bni_65] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_66] ≥ 0)

  • 1395_1_MAIN_INVOKEMETHOD(List, x1, x2, x3) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3, -1), List, x1, x2, x3)
    • (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧0 = 0∧[(-1)bni_67] = 0∧[(-1)bni_67 + (-1)Bound*bni_67] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_68] ≥ 0)

  • COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1, x2, x3) → 1322_0_MAIN_GE(x1, +(x3, 1), x2)
    • (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧0 = 0∧[(-1)bni_69] = 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)
    • (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧0 = 0∧[(-1)bni_69] = 0∧[(-1)bni_69 + (-1)Bound*bni_69] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_70] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(910_0_length_ConstantStackPush(x1)) = [-1]   
POL(810_0_length_NULL(x1, x2)) = [-1]   
POL(0) = 0   
POL(NULL) = [-1]   
POL(820_0_length_Return(x1)) = [-1]   
POL(java.lang.Object(x1)) = [-1] + [-1]x1   
POL(List) = [-1]   
POL(Cond_810_0_length_NULL(x1, x2, x3, x4)) = [-1] + [-1]x3   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(1395_0_bubble_Load(x1)) = [-1]   
POL(1572_0_bubble_NULL(x1)) = [-1]   
POL(910_1_MAIN_INVOKEMETHOD(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(1322_0_MAIN_GE(x1, x2, x3)) = [-1] + [-1]x1   
POL(COND_1322_0_MAIN_GE(x1, x2, x3, x4, x5)) = [-1] + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(2) = [2]   
POL(COND_1322_0_MAIN_GE1(x1, x2, x3, x4, x5)) = [-1] + [-1]x2   
POL(1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1]x2 + x1   
POL(COND_1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x3   

The following pairs are in P>:

910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0])

The following pairs are in Pbound:

1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])
COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))

The following pairs are in P:

1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(&&(&&(>=(x3[1], x2[1]), >(x1[1], -1)), <(x1[1], 2)), x1[1], x3[1], x2[1], x4[1])
COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), +(x1[2], 1))
1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])
COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])
COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])

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

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1
910_0_length_ConstantStackPush(x0)1810_0_length_NULL(0, x0)1
810_0_length_NULL(x0, NULL)1820_0_length_Return(x0)1
810_0_length_NULL(x0, java.lang.Object(List))1Cond_810_0_length_NULL(>(x0, -1), x0, java.lang.Object(List), x1)1
810_0_length_NULL(+(x0, 1), x1)1Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)1
1395_0_bubble_Load(x0)11572_0_bubble_NULL(x0)1
1572_0_bubble_NULL(NULL)1List1
1572_0_bubble_NULL(java.lang.Object(List))1List1
1572_0_bubble_NULL(java.lang.Object(List))11572_0_bubble_NULL(java.lang.Object(List))1

(34) Complex Obligation (AND)

(35) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(x0 > -1, x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(x0 + 1, x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(1): 1322_0_MAIN_GE(x1[1], x3[1], x2[1]) → COND_1322_0_MAIN_GE(x3[1] >= x2[1] && x1[1] > -1 && x1[1] < 2, x1[1], x3[1], x2[1], x4[1])
(2): COND_1322_0_MAIN_GE(TRUE, x1[2], x3[2], x2[2], x4[2]) → 910_1_MAIN_INVOKEMETHOD(910_0_length_ConstantStackPush(x4[2]), x1[2] + 1)
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])

(6) -> (1), if (x1[6]* x1[1]x3[6] + 1* x3[1]x2[6]* x2[1])


(1) -> (2), if (x3[1] >= x2[1] && x1[1] > -1 && x1[1] < 2x1[1]* x1[2]x3[1]* x3[2]x2[1]* x2[2]x4[1]* x4[2])


(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(36) IDependencyGraphProof (EQUIVALENT transformation)

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

(37) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(x0 > -1, x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(x0 + 1, x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

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

(39) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(40) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54198565 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

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


For Pair COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) which results in the following constraint:

    (1)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (2)    (>(x3[5], -1)=TRUECOND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥1322_0_MAIN_GE(x1[5], +(x3[5], 1), x2[5])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (3)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (4)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (5)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (6)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[bni_34] = 0∧0 = 0∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_35] ≥ 0)







For Pair 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]) which results in the following constraint:

    (7)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (8)    (>(x3[5], -1)=TRUE1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (9)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (10)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (11)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (12)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[bni_36] = 0∧0 = 0∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) the following chains were created:
  • We consider the chain 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]), 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]) which results in the following constraint:

    (13)    (<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1395_0_bubble_Load(x4[4])=Listx1[4]=x1[5]x2[4]=x2[5]x3[4]=x3[5]COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (14)    (<(x3[3], x2[3])=TRUE1395_0_bubble_Load(x4[4])=ListCOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



    We simplified constraint (14) using rule (V) (with possible (I) afterwards) using induction on 1395_0_bubble_Load(x4[4])=List which results in the following new constraint:

    (15)    (1572_0_bubble_NULL(x0)=List<(x3[3], x2[3])=TRUECOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x0)≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x0)≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x0), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (16)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (17)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (18)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (19)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)



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

    (20)    (x2[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)



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

    (21)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)


    (22)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)







For Pair 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) the following chains were created:
  • We consider the chain COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) which results in the following constraint:

    (23)    (x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (24)    (<(+(x3[6], 1), x2[3])=TRUE1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥COND_1322_0_MAIN_GE1(<(+(x3[6], 1), x2[3]), x1[6], +(x3[6], 1), x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (25)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (26)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (27)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (28)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)



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

    (29)    (x2[3] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)



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

    (30)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)


    (31)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])
    • (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[bni_34] = 0∧0 = 0∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_35] ≥ 0)

  • 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])
    • (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[bni_36] = 0∧0 = 0∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

  • COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)

  • 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)




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

POL(TRUE) = [3]   
POL(FALSE) = 0   
POL(1395_0_bubble_Load(x1)) = [-1]   
POL(1572_0_bubble_NULL(x1)) = [-1]   
POL(NULL) = [-1]   
POL(List) = [-1]   
POL(java.lang.Object(x1)) = [1] + [2]x1   
POL(COND_1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + x4 + [-1]x2   
POL(1322_0_MAIN_GE(x1, x2, x3)) = x3 + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + x3 + [-1]x1   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(COND_1322_0_MAIN_GE1(x1, x2, x3, x4, x5)) = x4 + [-1]x3   
POL(<(x1, x2)) = [1]   

The following pairs are in P>:

COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])

The following pairs are in Pbound:

COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])

The following pairs are in P:

1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])
COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])

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

1395_0_bubble_Load(x0)11572_0_bubble_NULL(x0)1
1572_0_bubble_NULL(NULL)1List1
1572_0_bubble_NULL(java.lang.Object(List))1List1
1572_0_bubble_NULL(java.lang.Object(List))11572_0_bubble_NULL(java.lang.Object(List))1

(41) Complex Obligation (AND)

(42) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(43) IDependencyGraphProof (EQUIVALENT transformation)

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

(44) TRUE

(45) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])

(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(46) IDependencyGraphProof (EQUIVALENT transformation)

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

(47) TRUE

(48) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(x0 > -1, x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(x0 + 1, x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(0): 910_1_MAIN_INVOKEMETHOD(820_0_length_Return(x0[0]), x2[0]) → 1322_0_MAIN_GE(x2[0], 0, x0[0])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])

(0) -> (3), if (x2[0]* x1[3]0* x3[3]x0[0]* x2[3])


(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(49) IDependencyGraphProof (EQUIVALENT transformation)

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

(50) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
910_0_length_ConstantStackPush(x0) → 810_0_length_NULL(0, x0)
810_0_length_NULL(x0, NULL) → 820_0_length_Return(x0)
810_0_length_NULL(x0, java.lang.Object(List)) → Cond_810_0_length_NULL(x0 > -1, x0, java.lang.Object(List), x1)
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1) → 810_0_length_NULL(x0 + 1, x1)
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(51) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(52) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(6) -> (3), if (x1[6]* x1[3]x3[6] + 1* x3[3]x2[6]* x2[3])


(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])


(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(53) IDPNonInfProof (SOUND transformation)

Used the following options for this NonInfProof:
IDPGPoloSolver: Range: [(-1,2)] IsNat: false Interpretation Shape Heuristic: aprove.DPFramework.IDPProblem.Processors.nonInf.poly.IdpDefaultShapeHeuristic@54198565 Constraint Generator: NonInfConstraintGenerator: PathGenerator: MetricPathGenerator: Max Left Steps: 1 Max Right Steps: 1

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


For Pair COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) which results in the following constraint:

    (1)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6])≥1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (2)    (>(x3[5], -1)=TRUECOND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥NonInfC∧COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[5], x2[5], x3[5])≥1322_0_MAIN_GE(x1[5], +(x3[5], 1), x2[5])∧(UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥))



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

    (3)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (4)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (5)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] + [bni_34]x2[5] ≥ 0∧[1 + (-1)bso_35] ≥ 0)



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

    (6)    (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[bni_34] = 0∧0 = 0∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_35] ≥ 0)







For Pair 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]) the following chains were created:
  • We consider the chain 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]), COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]) which results in the following constraint:

    (7)    (>(x3[5], -1)=TRUEx1[5]=x1[6]x2[5]=x2[6]x3[5]=x3[6]1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (8)    (>(x3[5], -1)=TRUE1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥NonInfC∧1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5])≥COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])∧(UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥))



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

    (9)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (10)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (11)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] + [bni_36]x2[5] ≥ 0∧[(-1)bso_37] ≥ 0)



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

    (12)    (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[bni_36] = 0∧0 = 0∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)







For Pair COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) the following chains were created:
  • We consider the chain 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]), 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5]) which results in the following constraint:

    (13)    (<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1395_0_bubble_Load(x4[4])=Listx1[4]=x1[5]x2[4]=x2[5]x3[4]=x3[5]COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (14)    (<(x3[3], x2[3])=TRUE1395_0_bubble_Load(x4[4])=ListCOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x4[4])≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



    We simplified constraint (14) using rule (V) (with possible (I) afterwards) using induction on 1395_0_bubble_Load(x4[4])=List which results in the following new constraint:

    (15)    (1572_0_bubble_NULL(x0)=List<(x3[3], x2[3])=TRUECOND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x0)≥NonInfC∧COND_1322_0_MAIN_GE1(TRUE, x1[3], x3[3], x2[3], x0)≥1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x0), x1[3], x2[3], x3[3])∧(UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥))



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

    (16)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (17)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (18)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧[(-1)bso_39] ≥ 0)



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

    (19)    (x2[3] + [-1] + [-1]x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38] + [bni_38]x2[3] + [(-1)bni_38]x3[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)



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

    (20)    (x2[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)



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

    (21)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)


    (22)    (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)







For Pair 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]) the following chains were created:
  • We consider the chain COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6]), 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3]), COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4]) which results in the following constraint:

    (23)    (x1[6]=x1[3]+(x3[6], 1)=x3[3]x2[6]=x2[3]<(x3[3], x2[3])=TRUEx1[3]=x1[4]x3[3]=x3[4]x2[3]=x2[4]x4[3]=x4[4]1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[3], x3[3], x2[3])≥COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (24)    (<(+(x3[6], 1), x2[3])=TRUE1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥NonInfC∧1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[3])≥COND_1322_0_MAIN_GE1(<(+(x3[6], 1), x2[3]), x1[6], +(x3[6], 1), x2[3], x4[3])∧(UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥))



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

    (25)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (26)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (27)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧[(-1)bso_41] ≥ 0)



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

    (28)    (x2[3] + [-2] + [-1]x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[(-1)bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] + [(-1)bni_40]x3[6] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)



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

    (29)    (x2[3] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)



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

    (30)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)


    (31)    (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])
    • (x3[5] ≥ 0 ⇒ (UIncreasing(1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])), ≥)∧[bni_34] = 0∧0 = 0∧[(-1)Bound*bni_34] + [(-1)bni_34]x3[5] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_35] ≥ 0)

  • 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])
    • (x3[5] ≥ 0 ⇒ (UIncreasing(COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])), ≥)∧[bni_36] = 0∧0 = 0∧[(-1)Bound*bni_36] + [(-1)bni_36]x3[5] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_37] ≥ 0)

  • COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)
    • (x2[3] ≥ 0∧x3[3] ≥ 0 ⇒ (UIncreasing(1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])), ≥)∧0 = 0∧0 = 0∧[(-1)Bound*bni_38 + bni_38] + [bni_38]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_39] ≥ 0)

  • 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)
    • (x2[3] ≥ 0∧x3[6] ≥ 0 ⇒ (UIncreasing(COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])), ≥)∧0 = 0∧[bni_40 + (-1)Bound*bni_40] + [bni_40]x2[3] ≥ 0∧0 = 0∧0 = 0∧[(-1)bso_41] ≥ 0)




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

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(1395_0_bubble_Load(x1)) = [-1]   
POL(1572_0_bubble_NULL(x1)) = [-1]   
POL(NULL) = [-1]   
POL(List) = [-1]   
POL(java.lang.Object(x1)) = [-1]x1   
POL(COND_1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x5 + x4 + [-1]x2   
POL(1322_0_MAIN_GE(x1, x2, x3)) = x3 + [-1]x2   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(1395_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4)) = [-1] + [-1]x4 + x3 + [-1]x1   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(COND_1322_0_MAIN_GE1(x1, x2, x3, x4, x5)) = x4 + [-1]x3   
POL(<(x1, x2)) = [1]   

The following pairs are in P>:

COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], +(x3[6], 1), x2[6])

The following pairs are in Pbound:

COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])

The following pairs are in P:

1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(>(x3[5], -1), List, x1[5], x2[5], x3[5])
COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(<(x3[3], x2[3]), x1[3], x3[3], x2[3], x4[3])

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

1395_0_bubble_Load(x0)11572_0_bubble_NULL(x0)1
1572_0_bubble_NULL(NULL)1List1
1572_0_bubble_NULL(java.lang.Object(List))1List1
1572_0_bubble_NULL(java.lang.Object(List))11572_0_bubble_NULL(java.lang.Object(List))1

(54) Complex Obligation (AND)

(55) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])
(4): COND_1322_0_MAIN_GE1(TRUE, x1[4], x3[4], x2[4], x4[4]) → 1395_1_MAIN_INVOKEMETHOD(1395_0_bubble_Load(x4[4]), x1[4], x2[4], x3[4])
(3): 1322_0_MAIN_GE(x1[3], x3[3], x2[3]) → COND_1322_0_MAIN_GE1(x3[3] < x2[3], x1[3], x3[3], x2[3], x4[3])

(3) -> (4), if (x3[3] < x2[3]x1[3]* x1[4]x3[3]* x3[4]x2[3]* x2[4]x4[3]* x4[4])


(4) -> (5), if (1395_0_bubble_Load(x4[4]) →* Listx1[4]* x1[5]x2[4]* x2[5]x3[4]* x3[5])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(56) IDependencyGraphProof (EQUIVALENT transformation)

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

(57) TRUE

(58) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
1395_0_bubble_Load(x0) → 1572_0_bubble_NULL(x0)
1572_0_bubble_NULL(NULL) → List
1572_0_bubble_NULL(java.lang.Object(List)) → List
1572_0_bubble_NULL(java.lang.Object(List)) → 1572_0_bubble_NULL(java.lang.Object(List))

The integer pair graph contains the following rules and edges:
(6): COND_1395_1_MAIN_INVOKEMETHOD(TRUE, List, x1[6], x2[6], x3[6]) → 1322_0_MAIN_GE(x1[6], x3[6] + 1, x2[6])
(5): 1395_1_MAIN_INVOKEMETHOD(List, x1[5], x2[5], x3[5]) → COND_1395_1_MAIN_INVOKEMETHOD(x3[5] > -1, List, x1[5], x2[5], x3[5])

(5) -> (6), if (x3[5] > -1x1[5]* x1[6]x2[5]* x2[6]x3[5]* x3[6])



The set Q consists of the following terms:
910_0_length_ConstantStackPush(x0)
810_0_length_NULL(x0, NULL)
810_0_length_NULL(x0, java.lang.Object(List))
Cond_810_0_length_NULL(TRUE, x0, java.lang.Object(List), x1)
1395_0_bubble_Load(x0)
1572_0_bubble_NULL(NULL)
1572_0_bubble_NULL(java.lang.Object(List))

(59) IDependencyGraphProof (EQUIVALENT transformation)

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

(60) TRUE