(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_16 (Sun Microsystems Inc.) Main-Class: LinkedList
public class Entry
{
private String item;
private int count;

public Entry(String itemData, int countData)
{
item = itemData;
count = countData;
}

public String toString( )
{
return (item + " " + count);
}

public boolean equals(Object otherObject)
{
if (otherObject == null)
return false;
else if (getClass( ) != otherObject.getClass( ))
return false;
else
{
Entry otherEntry = (Entry)otherObject;
return (item.equals(otherEntry.item)
&& (count == otherEntry.count));
}
}

// <There should be other constructors and methods, including accessor and
// mutator methods, but we do not use them in this demonstration.>
}



public class LinkedList<T>
{
private class Node<T>
{
private T data;
private Node<T> link;

public Node( )
{
data = null;
link = null;
}

public Node(T newData, Node<T> linkValue)
{
data = newData;
link = linkValue;
}
}//End of Node<T> inner class

private Node<T> head;

public LinkedList( )
{
head = null;
}

/**
Adds a node at the start of the list with the specified data.
The added node will be the first node in the list.
*/
public void addToStart(T itemData)
{
this.head = new Node<T>(itemData, this.head);
}

/**
Removes the head node and returns true if the list contains at least
one node. Returns false if the list is empty.
*/
public boolean deleteHeadNode( )
{
if (head != null)
{
head = head.link;
return true;
}
else
return false;
}

/**
Returns the number of nodes in the list.
*/
public int size( )
{
int count = 0;
Node<T> position = head;
while (position != null)
{
count++;
position = position.link;
}
return count;
}

public boolean contains(T item)
{
return (find(item) != null);
}

/**
Finds the first node containing the target item, and returns a
reference to that node. If target is not in the list, null is returned.
*/
private Node<T> find(T target)
{
Node<T> position = head;
T itemAtPosition;
while (position != null)
{
itemAtPosition = position.data;
if (itemAtPosition.equals(target))
return position;
position = position.link;
}
return null; //target was not found
}

/**
Finds the first node containing the target and returns a reference
to the data in that node. If target is not in the list, null is returned.
*/
public T findData(T target)
{
return find(target).data;
}

public void outputList( )
{
Node<T> position = head;
while (position != null)
{
//System.out.println(position.data);
position = position.link;
}
}

public boolean isEmpty( )
{
return (head == null);
}

public void clear( )
{
head = null;
}

/*
For two lists to be equal they must contain the same data items in
the same order. The equals method of T is used to compare data items.
*/
public boolean equals(Object otherObject)
{
if (!(otherObject instanceof LinkedList))
return false;
else
{
LinkedList<T> otherList = (LinkedList<T>)otherObject;
if (size( ) != otherList.size( ))
return false;
Node<T> position = head;
Node<T> otherPosition = otherList.head;
while (position != null)
{
if (!(position.data.equals(otherPosition.data)))
return false;
position = position.link;
otherPosition = otherPosition.link;
}
return true; //no mismatch was not found
}
}

public static void main(String[] args)
{
LinkedList<Entry> list = new LinkedList<Entry>( );

for (int i = 1; i < args.length; i++) {
Entry entry = new Entry(args[i], i++);
list.addToStart(entry);
entry = new Entry(args[i], i++);
list.addToStart(entry);
entry = new Entry(args[i], i++);
list.addToStart(entry);
}

list.size(); // remove it!
//System.out.println("List has " + list.size( )
// + " nodes.");
list.outputList( );
//System.out.println("End of list.");
}
}



(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Graph of 335 nodes with 3 SCCs.

(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph to ITRS rules

(4) Complex Obligation (AND)

(5) Obligation:

ITRS 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 TRS R consists of the following rules:
Load5091(java.lang.Object(LinkedList$Node(o2896))) → Load5091(o2896)
The set Q consists of the following terms:
Load5091(java.lang.Object(LinkedList$Node(x0)))

(6) ITRStoQTRSProof (EQUIVALENT transformation)

Represented integers and predefined function symbols by Terms

(7) Obligation:

Q restricted rewrite system:
The TRS R consists of the following rules:

Load5091(java.lang.Object(LinkedList$Node(o2896))) → Load5091(o2896)

The set Q consists of the following terms:

Load5091(java.lang.Object(LinkedList$Node(x0)))

(8) RFCMatchBoundsTRSProof (EQUIVALENT transformation)

Termination of the TRS R could be shown with a Match Bound [MATCHBOUNDS1,MATCHBOUNDS2] of 1. This implies Q-termination of R.
The following rules were used to construct the certificate:

Load5091(java.lang.Object(LinkedList$Node(o2896))) → Load5091(o2896)

The certificate found is represented by the following graph.

The certificate consists of the following enumerated nodes:

18948, 18949

Node 18948 is start node and node 18949 is final node.

Those nodes are connect through the following edges:

  • 18948 to 18949 labelled Load5091_1(0), Load5091_1(1)
  • 18949 to 18949 labelled #_1(0)

(9) TRUE

(10) Obligation:

ITRS 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 TRS R consists of the following rules:
Load4490(i16, java.lang.Object(LinkedList$Node(o2681))) → Return5054(i16 + 1, o2681)
Load4490(i16, java.lang.Object(LinkedList$Node(o2690))) → JMP5240(i16 + 1, o2690)
JMP5240(i17, o2681) → Load4490(i17, o2681)
Return5054(i17, o2681) → Load4490(i17, o2681)
Load4490(i16, java.lang.Object(LinkedList$Node(o2681))) → Load4490(i16 + 1, o2681)
The set Q consists of the following terms:
Load4490(x0, java.lang.Object(LinkedList$Node(x1)))
JMP5240(x0, x1)
Return5054(x0, x1)

(11) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(12) 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:
Load4490(i16, java.lang.Object(LinkedList$Node(o2681))) → Return5054(i16 + 1, o2681)
Load4490(i16, java.lang.Object(LinkedList$Node(o2690))) → JMP5240(i16 + 1, o2690)
JMP5240(i17, o2681) → Load4490(i17, o2681)
Return5054(i17, o2681) → Load4490(i17, o2681)
Load4490(i16, java.lang.Object(LinkedList$Node(o2681))) → Load4490(i16 + 1, o2681)

The integer pair graph contains the following rules and edges:
(0): LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(i16[0] + 1, o2681[0])
(1): LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(i16[1] + 1, o2690[1])
(2): JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2])
(3): RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3])
(4): LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(i16[4] + 1, o2681[4])

(0) -> (3), if ((o2681[0]* o2681[3])∧(i16[0] + 1* i17[3]))


(1) -> (2), if ((i16[1] + 1* i17[2])∧(o2690[1]* o2681[2]))


(2) -> (0), if ((o2681[2]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i17[2]* i16[0]))


(2) -> (1), if ((i17[2]* i16[1])∧(o2681[2]* java.lang.Object(LinkedList$Node(o2690[1]))))


(2) -> (4), if ((o2681[2]* java.lang.Object(LinkedList$Node(o2681[4])))∧(i17[2]* i16[4]))


(3) -> (0), if ((o2681[3]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i17[3]* i16[0]))


(3) -> (1), if ((i17[3]* i16[1])∧(o2681[3]* java.lang.Object(LinkedList$Node(o2690[1]))))


(3) -> (4), if ((i17[3]* i16[4])∧(o2681[3]* java.lang.Object(LinkedList$Node(o2681[4]))))


(4) -> (0), if ((o2681[4]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i16[4] + 1* i16[0]))


(4) -> (1), if ((i16[4] + 1* i16[1])∧(o2681[4]* java.lang.Object(LinkedList$Node(o2690[1]))))


(4) -> (4), if ((o2681[4]* java.lang.Object(LinkedList$Node(o2681[4]')))∧(i16[4] + 1* i16[4]'))



The set Q consists of the following terms:
Load4490(x0, java.lang.Object(LinkedList$Node(x1)))
JMP5240(x0, x1)
Return5054(x0, x1)

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

(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:

Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(i16[0] + 1, o2681[0])
(1): LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(i16[1] + 1, o2690[1])
(2): JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2])
(3): RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3])
(4): LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(i16[4] + 1, o2681[4])

(0) -> (3), if ((o2681[0]* o2681[3])∧(i16[0] + 1* i17[3]))


(1) -> (2), if ((i16[1] + 1* i17[2])∧(o2690[1]* o2681[2]))


(2) -> (0), if ((o2681[2]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i17[2]* i16[0]))


(2) -> (1), if ((i17[2]* i16[1])∧(o2681[2]* java.lang.Object(LinkedList$Node(o2690[1]))))


(2) -> (4), if ((o2681[2]* java.lang.Object(LinkedList$Node(o2681[4])))∧(i17[2]* i16[4]))


(3) -> (0), if ((o2681[3]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i17[3]* i16[0]))


(3) -> (1), if ((i17[3]* i16[1])∧(o2681[3]* java.lang.Object(LinkedList$Node(o2690[1]))))


(3) -> (4), if ((i17[3]* i16[4])∧(o2681[3]* java.lang.Object(LinkedList$Node(o2681[4]))))


(4) -> (0), if ((o2681[4]* java.lang.Object(LinkedList$Node(o2681[0])))∧(i16[4] + 1* i16[0]))


(4) -> (1), if ((i16[4] + 1* i16[1])∧(o2681[4]* java.lang.Object(LinkedList$Node(o2690[1]))))


(4) -> (4), if ((o2681[4]* java.lang.Object(LinkedList$Node(o2681[4]')))∧(i16[4] + 1* i16[4]'))



The set Q consists of the following terms:
Load4490(x0, java.lang.Object(LinkedList$Node(x1)))
JMP5240(x0, x1)
Return5054(x0, x1)

(15) IDPNonInfProof (SOUND transformation)

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 LOAD4490(i16, java.lang.Object(LinkedList$Node(o2681))) → RETURN5054(+(i16, 1), o2681) the following chains were created:
  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]), RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]) which results in the following constraint:

    (1)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[0]))∧i17[2]=i16[0]o2681[0]=o2681[3]+(i16[0], 1)=i17[3]LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(i16[0], 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (2)    (LOAD4490(i17[2], java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(i17[2], 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (3)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[2] ≥ 0)



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

    (4)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[2] ≥ 0)



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

    (5)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[2] ≥ 0)



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

    (6)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]), RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]) which results in the following constraint:

    (7)    (o2681[3]=java.lang.Object(LinkedList$Node(o2681[0]))∧i17[3]=i16[0]o2681[0]=o2681[3]1+(i16[0], 1)=i17[3]1LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(i16[0], 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (8)    (LOAD4490(i17[3], java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(i17[3], 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (9)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[3] ≥ 0)



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

    (10)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[3] ≥ 0)



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

    (11)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] + i17[3] ≥ 0)



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

    (12)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)



  • We consider the chain LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]), RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]) which results in the following constraint:

    (13)    (o2681[4]=java.lang.Object(LinkedList$Node(o2681[0]))∧+(i16[4], 1)=i16[0]o2681[0]=o2681[3]+(i16[0], 1)=i17[3]LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(i16[0], 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (14)    (LOAD4490(+(i16[4], 1), java.lang.Object(LinkedList$Node(o2681[0])))≥RETURN5054(+(+(i16[4], 1), 1), o2681[0])∧(UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥))



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

    (15)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] ≥ 0)



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

    (16)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] ≥ 0)



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

    (17)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] + [24]o2681[0] ≥ 0)



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

    (18)    ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)







For Pair LOAD4490(i16, java.lang.Object(LinkedList$Node(o2690))) → JMP5240'(+(i16, 1), o2690) the following chains were created:
  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]), JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]) which results in the following constraint:

    (19)    (i17[2]=i16[1]o2681[2]=java.lang.Object(LinkedList$Node(o2690[1]))∧+(i16[1], 1)=i17[2]1o2690[1]=o2681[2]1LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(i16[1], 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (20)    (LOAD4490(i17[2], java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(i17[2], 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (21)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[2] ≥ 0)



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

    (22)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[2] ≥ 0)



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

    (23)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[2] ≥ 0)



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

    (24)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]), JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]) which results in the following constraint:

    (25)    (i17[3]=i16[1]o2681[3]=java.lang.Object(LinkedList$Node(o2690[1]))∧+(i16[1], 1)=i17[2]o2690[1]=o2681[2]LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(i16[1], 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (26)    (LOAD4490(i17[3], java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(i17[3], 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (27)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[3] ≥ 0)



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

    (28)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[3] ≥ 0)



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

    (29)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] + i17[3] ≥ 0)



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

    (30)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)



  • We consider the chain LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]), JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]) which results in the following constraint:

    (31)    (+(i16[4], 1)=i16[1]o2681[4]=java.lang.Object(LinkedList$Node(o2690[1]))∧+(i16[1], 1)=i17[2]o2690[1]=o2681[2]LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(i16[1], 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (32)    (LOAD4490(+(i16[4], 1), java.lang.Object(LinkedList$Node(o2690[1])))≥JMP5240'(+(+(i16[4], 1), 1), o2690[1])∧(UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥))



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

    (33)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] ≥ 0)



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

    (34)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] ≥ 0)



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

    (35)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] + [24]o2690[1] ≥ 0)



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

    (36)    ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)







For Pair JMP5240'(i17, o2681) → LOAD4490(i17, o2681) the following chains were created:
  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]) which results in the following constraint:

    (37)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[0]))∧i17[2]=i16[0]JMP5240'(i17[2], o2681[2])≥LOAD4490(i17[2], o2681[2])∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (38)    (JMP5240'(i17[2], java.lang.Object(LinkedList$Node(o2681[0])))≥LOAD4490(i17[2], java.lang.Object(LinkedList$Node(o2681[0])))∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (39)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (40)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (41)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (42)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)



  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]) which results in the following constraint:

    (43)    (i17[2]=i16[1]o2681[2]=java.lang.Object(LinkedList$Node(o2690[1])) ⇒ JMP5240'(i17[2], o2681[2])≥LOAD4490(i17[2], o2681[2])∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (44)    (JMP5240'(i17[2], java.lang.Object(LinkedList$Node(o2690[1])))≥LOAD4490(i17[2], java.lang.Object(LinkedList$Node(o2690[1])))∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (45)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (46)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (47)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (48)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)



  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]) which results in the following constraint:

    (49)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[4]))∧i17[2]=i16[4]JMP5240'(i17[2], o2681[2])≥LOAD4490(i17[2], o2681[2])∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (50)    (JMP5240'(i17[2], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(i17[2], java.lang.Object(LinkedList$Node(o2681[4])))∧(UIncreasing(LOAD4490(i17[2], o2681[2])), ≥))



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

    (51)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (52)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (53)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧[(-1)bso_16] + i17[2] ≥ 0)



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

    (54)    ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)







For Pair RETURN5054(i17, o2681) → LOAD4490(i17, o2681) the following chains were created:
  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]) which results in the following constraint:

    (55)    (o2681[3]=java.lang.Object(LinkedList$Node(o2681[0]))∧i17[3]=i16[0]RETURN5054(i17[3], o2681[3])≥LOAD4490(i17[3], o2681[3])∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (56)    (RETURN5054(i17[3], java.lang.Object(LinkedList$Node(o2681[0])))≥LOAD4490(i17[3], java.lang.Object(LinkedList$Node(o2681[0])))∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (57)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (58)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (59)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (60)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]) which results in the following constraint:

    (61)    (i17[3]=i16[1]o2681[3]=java.lang.Object(LinkedList$Node(o2690[1])) ⇒ RETURN5054(i17[3], o2681[3])≥LOAD4490(i17[3], o2681[3])∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (62)    (RETURN5054(i17[3], java.lang.Object(LinkedList$Node(o2690[1])))≥LOAD4490(i17[3], java.lang.Object(LinkedList$Node(o2690[1])))∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (63)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (64)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (65)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (66)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]) which results in the following constraint:

    (67)    (i17[3]=i16[4]o2681[3]=java.lang.Object(LinkedList$Node(o2681[4])) ⇒ RETURN5054(i17[3], o2681[3])≥LOAD4490(i17[3], o2681[3])∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (68)    (RETURN5054(i17[3], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(i17[3], java.lang.Object(LinkedList$Node(o2681[4])))∧(UIncreasing(LOAD4490(i17[3], o2681[3])), ≥))



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

    (69)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (70)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (71)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧[(-1)bso_17] + i17[3] ≥ 0)



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

    (72)    ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)







For Pair LOAD4490(i16, java.lang.Object(LinkedList$Node(o2681))) → LOAD4490(+(i16, 1), o2681) the following chains were created:
  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]) which results in the following constraint:

    (73)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[4]))∧i17[2]=i16[4]o2681[4]=java.lang.Object(LinkedList$Node(o2681[0]))∧+(i16[4], 1)=i16[0]LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (74)    (LOAD4490(i17[2], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[0])))))≥LOAD4490(+(i17[2], 1), java.lang.Object(LinkedList$Node(o2681[0])))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (75)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[2] ≥ 0)



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

    (76)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[2] ≥ 0)



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

    (77)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[2] ≥ 0)



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

    (78)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]) which results in the following constraint:

    (79)    (i17[3]=i16[4]o2681[3]=java.lang.Object(LinkedList$Node(o2681[4]))∧o2681[4]=java.lang.Object(LinkedList$Node(o2681[0]))∧+(i16[4], 1)=i16[0]LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (80)    (LOAD4490(i17[3], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[0])))))≥LOAD4490(+(i17[3], 1), java.lang.Object(LinkedList$Node(o2681[0])))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (81)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[3] ≥ 0)



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

    (82)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[3] ≥ 0)



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

    (83)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] + i17[3] ≥ 0)



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

    (84)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0]) which results in the following constraint:

    (85)    (o2681[4]=java.lang.Object(LinkedList$Node(o2681[4]1))∧+(i16[4], 1)=i16[4]1o2681[4]1=java.lang.Object(LinkedList$Node(o2681[0]))∧+(i16[4]1, 1)=i16[0]LOAD4490(i16[4]1, java.lang.Object(LinkedList$Node(o2681[4]1)))≥LOAD4490(+(i16[4]1, 1), o2681[4]1)∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (86)    (LOAD4490(+(i16[4], 1), java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[0])))))≥LOAD4490(+(+(i16[4], 1), 1), java.lang.Object(LinkedList$Node(o2681[0])))∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (87)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] ≥ 0)



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

    (88)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] ≥ 0)



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

    (89)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[0] ≥ 0)



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

    (90)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]) which results in the following constraint:

    (91)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[4]))∧i17[2]=i16[4]+(i16[4], 1)=i16[1]o2681[4]=java.lang.Object(LinkedList$Node(o2690[1])) ⇒ LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (92)    (LOAD4490(i17[2], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2690[1])))))≥LOAD4490(+(i17[2], 1), java.lang.Object(LinkedList$Node(o2690[1])))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (93)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[2] ≥ 0)



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

    (94)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[2] ≥ 0)



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

    (95)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[2] ≥ 0)



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

    (96)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]) which results in the following constraint:

    (97)    (o2681[2]=java.lang.Object(LinkedList$Node(o2681[4]))∧i17[2]=i16[4]o2681[4]=java.lang.Object(LinkedList$Node(o2681[4]1))∧+(i16[4], 1)=i16[4]1LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (98)    (LOAD4490(i17[2], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[4]1)))))≥LOAD4490(+(i17[2], 1), java.lang.Object(LinkedList$Node(o2681[4]1)))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (99)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[2] ≥ 0)



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

    (100)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[2] ≥ 0)



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

    (101)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[2] ≥ 0)



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

    (102)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]) which results in the following constraint:

    (103)    (i17[3]=i16[4]o2681[3]=java.lang.Object(LinkedList$Node(o2681[4]))∧+(i16[4], 1)=i16[1]o2681[4]=java.lang.Object(LinkedList$Node(o2690[1])) ⇒ LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (104)    (LOAD4490(i17[3], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2690[1])))))≥LOAD4490(+(i17[3], 1), java.lang.Object(LinkedList$Node(o2690[1])))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (105)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[3] ≥ 0)



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

    (106)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[3] ≥ 0)



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

    (107)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] + i17[3] ≥ 0)



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

    (108)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]) which results in the following constraint:

    (109)    (i17[3]=i16[4]o2681[3]=java.lang.Object(LinkedList$Node(o2681[4]))∧o2681[4]=java.lang.Object(LinkedList$Node(o2681[4]1))∧+(i16[4], 1)=i16[4]1LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4])))≥LOAD4490(+(i16[4], 1), o2681[4])∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (110)    (LOAD4490(i17[3], java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[4]1)))))≥LOAD4490(+(i17[3], 1), java.lang.Object(LinkedList$Node(o2681[4]1)))∧(UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥))



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

    (111)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[3] ≥ 0)



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

    (112)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[3] ≥ 0)



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

    (113)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]1 + i17[3] ≥ 0)



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

    (114)    ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1]) which results in the following constraint:

    (115)    (o2681[4]=java.lang.Object(LinkedList$Node(o2681[4]1))∧+(i16[4], 1)=i16[4]1+(i16[4]1, 1)=i16[1]o2681[4]1=java.lang.Object(LinkedList$Node(o2690[1])) ⇒ LOAD4490(i16[4]1, java.lang.Object(LinkedList$Node(o2681[4]1)))≥LOAD4490(+(i16[4]1, 1), o2681[4]1)∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (116)    (LOAD4490(+(i16[4], 1), java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2690[1])))))≥LOAD4490(+(+(i16[4], 1), 1), java.lang.Object(LinkedList$Node(o2690[1])))∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (117)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] ≥ 0)



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

    (118)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] ≥ 0)



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

    (119)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2690[1] ≥ 0)



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

    (120)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)



  • We consider the chain LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]), LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4]) which results in the following constraint:

    (121)    (o2681[4]=java.lang.Object(LinkedList$Node(o2681[4]1))∧+(i16[4], 1)=i16[4]1o2681[4]1=java.lang.Object(LinkedList$Node(o2681[4]2))∧+(i16[4]1, 1)=i16[4]2LOAD4490(i16[4]1, java.lang.Object(LinkedList$Node(o2681[4]1)))≥LOAD4490(+(i16[4]1, 1), o2681[4]1)∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (122)    (LOAD4490(+(i16[4], 1), java.lang.Object(LinkedList$Node(java.lang.Object(LinkedList$Node(o2681[4]2)))))≥LOAD4490(+(+(i16[4], 1), 1), java.lang.Object(LinkedList$Node(o2681[4]2)))∧(UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥))



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

    (123)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]2 ≥ 0)



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

    (124)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]2 ≥ 0)



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

    (125)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] + [216]o2681[4]2 ≥ 0)



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

    (126)    ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD4490(i16, java.lang.Object(LinkedList$Node(o2681))) → RETURN5054(+(i16, 1), o2681)
    • ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(RETURN5054(+(i16[0], 1), o2681[0])), ≥)∧[36 + (-1)bso_14] ≥ 0∧[1] ≥ 0)

  • LOAD4490(i16, java.lang.Object(LinkedList$Node(o2690))) → JMP5240'(+(i16, 1), o2690)
    • ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[1] ≥ 0∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(JMP5240'(+(i16[1], 1), o2690[1])), ≥)∧[36 + (-1)bso_15] ≥ 0∧[1] ≥ 0)

  • JMP5240'(i17, o2681) → LOAD4490(i17, o2681)
    • ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)
    • ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)
    • ((UIncreasing(LOAD4490(i17[2], o2681[2])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_16] ≥ 0)

  • RETURN5054(i17, o2681) → LOAD4490(i17, o2681)
    • ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)
    • ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)
    • ((UIncreasing(LOAD4490(i17[3], o2681[3])), ≥)∧0 ≥ 0∧[1] ≥ 0∧[(-1)bso_17] ≥ 0)

  • LOAD4490(i16, java.lang.Object(LinkedList$Node(o2681))) → LOAD4490(+(i16, 1), o2681)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4], 1), o2681[4])), ≥)∧[1] ≥ 0∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 0∧[1] ≥ 0)
    • ((UIncreasing(LOAD4490(+(i16[4]1, 1), o2681[4]1)), ≥)∧[324 + (-1)bso_18] ≥ 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 all symbols [NONINF][POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(LOAD4490(x1, x2)) = [3]x2 + x1   
POL(java.lang.Object(x1)) = [3] + [3]x1   
POL(LinkedList$Node(x1)) = [3] + [3]x1   
POL(RETURN5054(x1, x2)) = [3]x2 + [2]x1   
POL(+(x1, x2)) = 0   
POL(1) = 0   
POL(JMP5240'(x1, x2)) = [3]x2 + [2]x1   

The following pairs are in P>:

LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0])
LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1])
LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4])

The following pairs are in Pbound:

LOAD4490(i16[0], java.lang.Object(LinkedList$Node(o2681[0]))) → RETURN5054(+(i16[0], 1), o2681[0])
LOAD4490(i16[1], java.lang.Object(LinkedList$Node(o2690[1]))) → JMP5240'(+(i16[1], 1), o2690[1])
JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2])
RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3])
LOAD4490(i16[4], java.lang.Object(LinkedList$Node(o2681[4]))) → LOAD4490(+(i16[4], 1), o2681[4])

The following pairs are in P:

JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2])
RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3])

There are no usable rules.

(16) Complex Obligation (AND)

(17) Obligation:

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


The following domains are used:
none


R is empty.

The integer pair graph contains the following rules and edges:
(2): JMP5240'(i17[2], o2681[2]) → LOAD4490(i17[2], o2681[2])
(3): RETURN5054(i17[3], o2681[3]) → LOAD4490(i17[3], o2681[3])


The set Q consists of the following terms:
Load4490(x0, java.lang.Object(LinkedList$Node(x1)))
JMP5240(x0, x1)
Return5054(x0, x1)

(18) IDependencyGraphProof (EQUIVALENT transformation)

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

(19) TRUE

(20) 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 is empty.

The set Q consists of the following terms:
Load4490(x0, java.lang.Object(LinkedList$Node(x1)))
JMP5240(x0, x1)
Return5054(x0, x1)

(21) IDependencyGraphProof (EQUIVALENT transformation)

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

(22) TRUE

(23) Obligation:

ITRS 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 TRS R consists of the following rules:
Load3021(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(o2107)), i10) → Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(o2107)), i10, o3628, o2867, o2171)
Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10, o3628, o2867, o2171) → Cond_Load3021ARR1(i10 + 1 + 1 > 0 && i10 + 1 + 1 < i11 && i10 + 1 > 0 && i10 + 1 < i11 && i10 > 0 && i10 < i11 && i10 + 1 + 1 + 1 > 0 && i10 + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10, o3628, o2867, o2171)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10, o3628, o2867, o2171) → Load3021(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10 + 1 + 1 + 1 + 1)
The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), java.lang.Object(LinkedList(x2)), x3)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), x2, x3, x4, x5)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), x2, x3, x4, x5)

(24) GroundTermsRemoverProof (EQUIVALENT transformation)

Some arguments are removed because they always contain the same ground term.
We removed the following ground terms:
  • java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node)))

We removed arguments according to the following replacements:

Cond_Load3021ARR1(x1, x2, x3, x4, x5, x6, x7) → Cond_Load3021ARR1(x1, x2, x4, x5, x6, x7)

(25) Obligation:

ITRS 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 TRS R consists of the following rules:
Load3021(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(o2107)), i10) → Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(o2107)), i10, o3628, o2867, o2171)
Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10, o3628, o2867, o2171) → Cond_Load3021ARR1(i10 + 1 + 1 > 0 && i10 + 1 + 1 < i11 && i10 + 1 > 0 && i10 + 1 < i11 && i10 > 0 && i10 < i11 && i10 + 1 + 1 + 1 > 0 && i10 + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11, a962data)), i10, o3628, o2867, o2171)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), i10, o3628, o2867, o2171) → Load3021(java.lang.Object(ARRAY(i11, a962data)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), i10 + 1 + 1 + 1 + 1)
The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), java.lang.Object(LinkedList(x2)), x3)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), java.lang.Object(LinkedList(java.lang.Object(LinkedList$Node))), x2, x3, x4, x5)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2, x3, x4, x5)

(26) ITRSFilterProcessorProof (SOUND transformation)

We filter according the heuristic IdpCand1ShapeHeuristic
We removed arguments according to the following replacements:

Load3021(x1, x2, x3) → Load3021(x1, x3)
LinkedList(x1) → LinkedList
Load3021ARR1(x1, x2, x3, x4, x5, x6) → Load3021ARR1(x1, x3)
Cond_Load3021ARR1(x1, x2, x3, x4, x5, x6) → Cond_Load3021ARR1(x1, x2, x3)

(27) Obligation:

ITRS 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 TRS R consists of the following rules:
Load3021(java.lang.Object(ARRAY(i11, a962data)), i10) → Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10)
Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10) → Cond_Load3021ARR1(i10 + 1 + 1 > 0 && i10 + 1 + 1 < i11 && i10 + 1 > 0 && i10 + 1 < i11 && i10 > 0 && i10 < i11 && i10 + 1 + 1 + 1 > 0 && i10 + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11, a962data)), i10)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), i10) → Load3021(java.lang.Object(ARRAY(i11, a962data)), i10 + 1 + 1 + 1 + 1)
The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

(28) ITRStoIDPProof (EQUIVALENT transformation)

Added dependency pairs

(29) 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:

Boolean, Integer


The ITRS R consists of the following rules:
Load3021(java.lang.Object(ARRAY(i11, a962data)), i10) → Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10)
Load3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10) → Cond_Load3021ARR1(i10 + 1 + 1 > 0 && i10 + 1 + 1 < i11 && i10 + 1 > 0 && i10 + 1 < i11 && i10 > 0 && i10 < i11 && i10 + 1 + 1 + 1 > 0 && i10 + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11, a962data)), i10)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), i10) → Load3021(java.lang.Object(ARRAY(i11, a962data)), i10 + 1 + 1 + 1 + 1)

The integer pair graph contains the following rules and edges:
(0): LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])
(1): LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])
(2): COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2] + 1 + 1 + 1 + 1)

(0) -> (1), if ((i10[0]* i10[1])∧(java.lang.Object(ARRAY(i11[0], a962data[0])) →* java.lang.Object(ARRAY(i11[1], a962data[1]))))


(1) -> (2), if ((i10[1]* i10[2])∧(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i11[1], a962data[1])) →* java.lang.Object(ARRAY(i11[2], a962data[2]))))


(2) -> (0), if ((i10[2] + 1 + 1 + 1 + 1* i10[0])∧(java.lang.Object(ARRAY(i11[2], a962data[2])) →* java.lang.Object(ARRAY(i11[0], a962data[0]))))



The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

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

(31) 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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])
(1): LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])
(2): COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2] + 1 + 1 + 1 + 1)

(0) -> (1), if ((i10[0]* i10[1])∧(java.lang.Object(ARRAY(i11[0], a962data[0])) →* java.lang.Object(ARRAY(i11[1], a962data[1]))))


(1) -> (2), if ((i10[1]* i10[2])∧(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0* TRUE)∧(java.lang.Object(ARRAY(i11[1], a962data[1])) →* java.lang.Object(ARRAY(i11[2], a962data[2]))))


(2) -> (0), if ((i10[2] + 1 + 1 + 1 + 1* i10[0])∧(java.lang.Object(ARRAY(i11[2], a962data[2])) →* java.lang.Object(ARRAY(i11[0], a962data[0]))))



The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

(32) ItpfGraphProof (EQUIVALENT transformation)

Applied rule ItpfICap [ICap]

(33) 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:

Boolean, Integer


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])
(1): LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0, java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])
(2): COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2] + 1 + 1 + 1 + 1)

(0) -> (1), if ((i10[0]* i10[1])∧((i11[0]* i11[1])∧(a962data[0]* a962data[1])))


(1) -> (2), if ((i10[1]* i10[2])∧(i10[1] + 1 + 1 > 0 && i10[1] + 1 + 1 < i11[1] && i10[1] + 1 > 0 && i10[1] + 1 < i11[1] && i10[1] > 0 && i10[1] < i11[1] && i10[1] + 1 + 1 + 1 > 0 && i10[1] + 1 + 1 + 1 + 1 > 0* TRUE)∧((i11[1]* i11[2])∧(a962data[1]* a962data[2])))


(2) -> (0), if ((i10[2] + 1 + 1 + 1 + 1* i10[0])∧((i11[2]* i11[0])∧(a962data[2]* a962data[0])))



The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

(34) IDPNonInfProof (SOUND transformation)

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 LOAD3021(java.lang.Object(ARRAY(i11, a962data)), i10) → LOAD3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10) the following chains were created:
  • We consider the chain LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]), LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) which results in the following constraint:

    (1)    (i10[0]=i10[1]i11[0]=i11[1]a962data[0]=a962data[1]LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])≥NonInfC∧LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])≥LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])∧(UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥))



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

    (2)    (LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])≥NonInfC∧LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])≥LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])∧(UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥))



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

    (3)    ((UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥)∧[1 + (-1)bso_15] ≥ 0)



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

    (4)    ((UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥)∧[1 + (-1)bso_15] ≥ 0)



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

    (5)    ((UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥)∧[1 + (-1)bso_15] ≥ 0)



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

    (6)    ((UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥)∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_15] ≥ 0)







For Pair LOAD3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10, 1), 1), 0), <(+(+(i10, 1), 1), i11)), >(+(i10, 1), 0)), <(+(i10, 1), i11)), >(i10, 0)), <(i10, i11)), >(+(+(+(i10, 1), 1), 1), 0)), >(+(+(+(+(i10, 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11, a962data)), i10) the following chains were created:
  • We consider the chain LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]), COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1)) which results in the following constraint:

    (7)    (i10[1]=i10[2]&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0))=TRUEi11[1]=i11[2]a962data[1]=a962data[2]LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])≥NonInfC∧LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])≥COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])∧(UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥))



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

    (8)    (>(+(+(+(+(i10[1], 1), 1), 1), 1), 0)=TRUE>(+(+(+(i10[1], 1), 1), 1), 0)=TRUE<(i10[1], i11[1])=TRUE>(i10[1], 0)=TRUE<(+(i10[1], 1), i11[1])=TRUE>(+(i10[1], 1), 0)=TRUE>(+(+(i10[1], 1), 1), 0)=TRUE<(+(+(i10[1], 1), 1), i11[1])=TRUELOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])≥NonInfC∧LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])≥COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])∧(UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥))



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

    (9)    (i10[1] + [3] ≥ 0∧i10[1] + [2] ≥ 0∧i11[1] + [-1] + [-1]i10[1] ≥ 0∧i10[1] + [-1] ≥ 0∧i11[1] + [-2] + [-1]i10[1] ≥ 0∧i10[1] ≥ 0∧i10[1] + [1] ≥ 0∧i11[1] + [-3] + [-1]i10[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i10[1] + [bni_16]i11[1] ≥ 0∧[1 + (-1)bso_17] ≥ 0)



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

    (10)    (i10[1] + [3] ≥ 0∧i10[1] + [2] ≥ 0∧i11[1] + [-1] + [-1]i10[1] ≥ 0∧i10[1] + [-1] ≥ 0∧i11[1] + [-2] + [-1]i10[1] ≥ 0∧i10[1] ≥ 0∧i10[1] + [1] ≥ 0∧i11[1] + [-3] + [-1]i10[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i10[1] + [bni_16]i11[1] ≥ 0∧[1 + (-1)bso_17] ≥ 0)



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

    (11)    (i10[1] + [3] ≥ 0∧i10[1] + [2] ≥ 0∧i11[1] + [-1] + [-1]i10[1] ≥ 0∧i10[1] + [-1] ≥ 0∧i11[1] + [-2] + [-1]i10[1] ≥ 0∧i10[1] ≥ 0∧i10[1] + [1] ≥ 0∧i11[1] + [-3] + [-1]i10[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧[bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i10[1] + [bni_16]i11[1] ≥ 0∧[1 + (-1)bso_17] ≥ 0)



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

    (12)    (i10[1] + [3] ≥ 0∧i10[1] + [2] ≥ 0∧i11[1] + [-1] + [-1]i10[1] ≥ 0∧i10[1] + [-1] ≥ 0∧i11[1] + [-2] + [-1]i10[1] ≥ 0∧i10[1] ≥ 0∧i10[1] + [1] ≥ 0∧i11[1] + [-3] + [-1]i10[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[bni_16 + (-1)Bound*bni_16] + [(-1)bni_16]i10[1] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)



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

    (13)    ([4] + i10[1] ≥ 0∧[3] + i10[1] ≥ 0∧i11[1] + [-2] + [-1]i10[1] ≥ 0∧i10[1] ≥ 0∧i11[1] + [-3] + [-1]i10[1] ≥ 0∧[1] + i10[1] ≥ 0∧[2] + i10[1] ≥ 0∧i11[1] + [-4] + [-1]i10[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[(-1)Bound*bni_16] + [(-1)bni_16]i10[1] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)



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

    (14)    ([4] + i10[1] ≥ 0∧[3] + i10[1] ≥ 0∧i11[1] ≥ 0∧i10[1] ≥ 0∧[-1] + i11[1] ≥ 0∧[1] + i10[1] ≥ 0∧[2] + i10[1] ≥ 0∧[-2] + i11[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[(-1)Bound*bni_16 + (2)bni_16] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)



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

    (15)    ([4] + i10[1] ≥ 0∧[3] + i10[1] ≥ 0∧[1] + i11[1] ≥ 0∧i10[1] ≥ 0∧i11[1] ≥ 0∧[1] + i10[1] ≥ 0∧[2] + i10[1] ≥ 0∧[-1] + i11[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[(-1)Bound*bni_16 + (3)bni_16] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)



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

    (16)    ([4] + i10[1] ≥ 0∧[3] + i10[1] ≥ 0∧[2] + i11[1] ≥ 0∧i10[1] ≥ 0∧[1] + i11[1] ≥ 0∧[1] + i10[1] ≥ 0∧[2] + i10[1] ≥ 0∧i11[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[(-1)Bound*bni_16 + (4)bni_16] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)







For Pair COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), i10) → LOAD3021(java.lang.Object(ARRAY(i11, a962data)), +(+(+(+(i10, 1), 1), 1), 1)) the following chains were created:
  • We consider the chain COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1)) which results in the following constraint:

    (17)    (COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2])≥NonInfC∧COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2])≥LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))∧(UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥))



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

    (18)    ((UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



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

    (19)    ((UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



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

    (20)    ((UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥)∧[2 + (-1)bso_19] ≥ 0)



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

    (21)    ((UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • LOAD3021(java.lang.Object(ARRAY(i11, a962data)), i10) → LOAD3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10)
    • ((UIncreasing(LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])), ≥)∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_15] ≥ 0)

  • LOAD3021ARR1(java.lang.Object(ARRAY(i11, a962data)), i10) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10, 1), 1), 0), <(+(+(i10, 1), 1), i11)), >(+(i10, 1), 0)), <(+(i10, 1), i11)), >(i10, 0)), <(i10, i11)), >(+(+(+(i10, 1), 1), 1), 0)), >(+(+(+(+(i10, 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11, a962data)), i10)
    • ([4] + i10[1] ≥ 0∧[3] + i10[1] ≥ 0∧[2] + i11[1] ≥ 0∧i10[1] ≥ 0∧[1] + i11[1] ≥ 0∧[1] + i10[1] ≥ 0∧[2] + i10[1] ≥ 0∧i11[1] ≥ 0 ⇒ (UIncreasing(COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])), ≥)∧0 = 0∧[(-1)Bound*bni_16 + (4)bni_16] + [bni_16]i11[1] ≥ 0∧0 = 0∧[1 + (-1)bso_17] ≥ 0)

  • COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11, a962data)), i10) → LOAD3021(java.lang.Object(ARRAY(i11, a962data)), +(+(+(+(i10, 1), 1), 1), 1))
    • ((UIncreasing(LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧[2 + (-1)bso_19] ≥ 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(LOAD3021(x1, x2)) = [1] + [-1]x2 + [-1]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1] + [-1]x1   
POL(LOAD3021ARR1(x1, x2)) = [-1]x2 + [-1]x1   
POL(COND_LOAD3021ARR1(x1, x2, x3)) = [-1] + [-1]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   
POL(0) = 0   
POL(<(x1, x2)) = [-1]   

The following pairs are in P>:

LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])
LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])
COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), +(+(+(+(i10[2], 1), 1), 1), 1))

The following pairs are in Pbound:

LOAD3021ARR1(java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1]) → COND_LOAD3021ARR1(&&(&&(&&(&&(&&(&&(&&(>(+(+(i10[1], 1), 1), 0), <(+(+(i10[1], 1), 1), i11[1])), >(+(i10[1], 1), 0)), <(+(i10[1], 1), i11[1])), >(i10[1], 0)), <(i10[1], i11[1])), >(+(+(+(i10[1], 1), 1), 1), 0)), >(+(+(+(+(i10[1], 1), 1), 1), 1), 0)), java.lang.Object(ARRAY(i11[1], a962data[1])), i10[1])

The following pairs are in P:
none

There are no usable rules.

(35) Complex Obligation (AND)

(36) 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 is empty.

The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

(37) IDependencyGraphProof (EQUIVALENT transformation)

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

(38) TRUE

(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


R is empty.

The integer pair graph contains the following rules and edges:
(0): LOAD3021(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0]) → LOAD3021ARR1(java.lang.Object(ARRAY(i11[0], a962data[0])), i10[0])
(2): COND_LOAD3021ARR1(TRUE, java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2]) → LOAD3021(java.lang.Object(ARRAY(i11[2], a962data[2])), i10[2] + 1 + 1 + 1 + 1)

(2) -> (0), if ((i10[2] + 1 + 1 + 1 + 1* i10[0])∧((i11[2]* i11[0])∧(a962data[2]* a962data[0])))



The set Q consists of the following terms:
Load3021(java.lang.Object(ARRAY(x0, x1)), x2)
Load3021ARR1(java.lang.Object(ARRAY(x0, x1)), x2)
Cond_Load3021ARR1(TRUE, java.lang.Object(ARRAY(x0, x1)), x2)

(40) IDependencyGraphProof (EQUIVALENT transformation)

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

(41) TRUE