(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_22 (Sun Microsystems Inc.) Main-Class: SearchTreeR/SearchTreeR
package SearchTreeR;
public class Random {
static String[] args;
static int index = 0;

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


package SearchTreeR;


public class SearchTreeR {
public static void main(final String[] args) {
Random.args = args;

final Tree t = new Tree(Random.random());

final int numberOfVals = Random.random();
for (int i = 0; i < numberOfVals; i++) {
t.insert(Random.random());
}
}
}


package SearchTreeR;

public class Tree {
Tree left;
Tree right;
int value;

public Tree(final int val) {
this.value = val;
}

public void insert(final int v) {
if (v <= this.value) {
if (this.left == null) {
this.left = new Tree(v);
} else {
this.left.insert(v);
}
} else {
if (this.right == null) {
this.right = new Tree(v);
} else {
this.right.insert(v);
}
}
}
}


(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

SearchTreeR.Tree.insert(I)V: Graph of 72 nodes with 0 SCCs.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 2 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: SearchTreeR.Tree.insert(I)V
SCC calls the following helper methods: SearchTreeR.Tree.insert(I)V
Performed SCC analyses: UsedFieldsAnalysis

(6) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 28 rules for P and 51 rules for R.


P rules:
1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(o879sub), i744, i744) → 1893_0_insert_FieldAccess(EOS(STATIC_1893), java.lang.Object(o879sub), i744, i744, java.lang.Object(o879sub))
1893_0_insert_FieldAccess(EOS(STATIC_1893), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1901_0_insert_FieldAccess(EOS(STATIC_1901), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1901_0_insert_FieldAccess(EOS(STATIC_1901), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1917_0_insert_GT(EOS(STATIC_1917), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1918_0_insert_GT(EOS(STATIC_1918), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1917_0_insert_GT(EOS(STATIC_1917), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1926_0_insert_Load(EOS(STATIC_1926), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) | >(i744, i759)
1926_0_insert_Load(EOS(STATIC_1926), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) → 1936_0_insert_FieldAccess(EOS(STATIC_1936), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1936_0_insert_FieldAccess(EOS(STATIC_1936), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, o899)
1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)), i744, java.lang.Object(o956sub)) → 1961_0_insert_NONNULL(EOS(STATIC_1961), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)), i744, java.lang.Object(o956sub))
1961_0_insert_NONNULL(EOS(STATIC_1961), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)), i744, java.lang.Object(o956sub)) → 1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)), i744)
1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)), i744) → 1977_0_insert_FieldAccess(EOS(STATIC_1977), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898)))
1977_0_insert_FieldAccess(EOS(STATIC_1977), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o956sub), o898))) → 1985_0_insert_Load(EOS(STATIC_1985), i744, java.lang.Object(o956sub))
1985_0_insert_Load(EOS(STATIC_1985), i744, java.lang.Object(o956sub)) → 1992_0_insert_InvokeMethod(EOS(STATIC_1992), java.lang.Object(o956sub), i744)
1992_0_insert_InvokeMethod(EOS(STATIC_1992), java.lang.Object(o956sub), i744) → 2001_1_insert_InvokeMethod(2001_0_insert_Load(EOS(STATIC_2001), java.lang.Object(o956sub), i744), java.lang.Object(o956sub), i744)
2001_0_insert_Load(EOS(STATIC_2001), java.lang.Object(o956sub), i744) → 2008_0_insert_Load(EOS(STATIC_2008), java.lang.Object(o956sub), i744)
2008_0_insert_Load(EOS(STATIC_2008), java.lang.Object(o956sub), i744) → 1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o956sub), i744)
1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o879sub), i744) → 1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(o879sub), i744, i744)
1918_0_insert_GT(EOS(STATIC_1918), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) | <=(i744, i759)
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) → 1938_0_insert_FieldAccess(EOS(STATIC_1938), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1938_0_insert_FieldAccess(EOS(STATIC_1938), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, o898)
1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))), i744, java.lang.Object(o957sub)) → 1963_0_insert_NONNULL(EOS(STATIC_1963), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))), i744, java.lang.Object(o957sub))
1963_0_insert_NONNULL(EOS(STATIC_1963), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))), i744, java.lang.Object(o957sub)) → 1971_0_insert_Load(EOS(STATIC_1971), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))), i744)
1971_0_insert_Load(EOS(STATIC_1971), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))), i744) → 1979_0_insert_FieldAccess(EOS(STATIC_1979), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub))))
1979_0_insert_FieldAccess(EOS(STATIC_1979), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o957sub)))) → 1987_0_insert_Load(EOS(STATIC_1987), i744, java.lang.Object(o957sub))
1987_0_insert_Load(EOS(STATIC_1987), i744, java.lang.Object(o957sub)) → 1995_0_insert_InvokeMethod(EOS(STATIC_1995), java.lang.Object(o957sub), i744)
1995_0_insert_InvokeMethod(EOS(STATIC_1995), java.lang.Object(o957sub), i744) → 2003_1_insert_InvokeMethod(2003_0_insert_Load(EOS(STATIC_2003), java.lang.Object(o957sub), i744), java.lang.Object(o957sub), i744)
2003_0_insert_Load(EOS(STATIC_2003), java.lang.Object(o957sub), i744) → 2010_0_insert_Load(EOS(STATIC_2010), java.lang.Object(o957sub), i744)
2010_0_insert_Load(EOS(STATIC_2010), java.lang.Object(o957sub), i744) → 1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o957sub), i744)
R rules:
1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL) → 1962_0_insert_NONNULL(EOS(STATIC_1962), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL)
1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL) → 1964_0_insert_NONNULL(EOS(STATIC_1964), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL)
1962_0_insert_NONNULL(EOS(STATIC_1962), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL) → 1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744)
1964_0_insert_NONNULL(EOS(STATIC_1964), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL) → 1973_0_insert_Load(EOS(STATIC_1973), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744)
1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744) → 1978_0_insert_New(EOS(STATIC_1978), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)))
1973_0_insert_Load(EOS(STATIC_1973), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744) → 1980_0_insert_New(EOS(STATIC_1980), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)))
1978_0_insert_New(EOS(STATIC_1978), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898))) → 1986_0_insert_Duplicate(EOS(STATIC_1986), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)))
1980_0_insert_New(EOS(STATIC_1980), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL))) → 1989_0_insert_Duplicate(EOS(STATIC_1989), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)))
1986_0_insert_Duplicate(EOS(STATIC_1986), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL))) → 1993_0_insert_Load(EOS(STATIC_1993), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | =(matching1, 0)
1989_0_insert_Duplicate(EOS(STATIC_1989), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL))) → 1996_0_insert_Load(EOS(STATIC_1996), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | =(matching1, 0)
1993_0_insert_Load(EOS(STATIC_1993), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL))) → 2002_0_insert_InvokeMethod(EOS(STATIC_2002), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(=(matching1, 0), =(matching2, 0))
1996_0_insert_Load(EOS(STATIC_1996), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL))) → 2004_0_insert_InvokeMethod(EOS(STATIC_2004), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(=(matching1, 0), =(matching2, 0))
2001_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(o956sub), i813) → 2063_0_insert_Return(EOS(STATIC_2063), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1002)), i813)
2001_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(o956sub), i830) → 2074_0_insert_Return(EOS(STATIC_2074), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830)
2001_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(o956sub), i878) → 2124_0_insert_Return(EOS(STATIC_2124), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i878)
2001_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(o956sub), i900) → 2149_0_insert_Return(EOS(STATIC_2149), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i900)
2002_0_insert_InvokeMethod(EOS(STATIC_2002), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744) → 2009_0_<init>_Load(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(=(matching1, 0), =(matching2, 0))
2003_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(o957sub), i820) → 2064_0_insert_Return(EOS(STATIC_2064), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820)
2003_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(o957sub), i837) → 2081_0_insert_Return(EOS(STATIC_2081), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1021, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837)
2003_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(o957sub), i882) → 2127_0_insert_Return(EOS(STATIC_2127), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i882)
2003_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(o957sub), i904) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i904)
2004_0_insert_InvokeMethod(EOS(STATIC_2004), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744) → 2012_0_<init>_Load(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(=(matching1, 0), =(matching2, 0))
2009_0_<init>_Load(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2015_0_<init>_InvokeMethod(EOS(STATIC_2015), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2012_0_<init>_Load(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2017_0_<init>_InvokeMethod(EOS(STATIC_2017), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2015_0_<init>_InvokeMethod(EOS(STATIC_2015), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching4, NULL, NULL))) → 2018_0_<init>_Load(EOS(STATIC_2018), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
2017_0_<init>_InvokeMethod(EOS(STATIC_2017), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching4, NULL, NULL))) → 2020_0_<init>_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
2018_0_<init>_Load(EOS(STATIC_2018), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2021_0_<init>_Load(EOS(STATIC_2021), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2020_0_<init>_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2023_0_<init>_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2021_0_<init>_Load(EOS(STATIC_2021), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL))) → 2024_0_<init>_FieldAccess(EOS(STATIC_2024), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2023_0_<init>_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL))) → 2025_0_<init>_FieldAccess(EOS(STATIC_2025), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)), i744) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2024_0_<init>_FieldAccess(EOS(STATIC_2024), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2027_0_<init>_Return(EOS(STATIC_2027), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), i744) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2025_0_<init>_FieldAccess(EOS(STATIC_2025), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching2, NULL, NULL)), i744, java.lang.Object(SearchTreeR.Tree(EOC, matching3, NULL, NULL)), i744) → 2028_0_<init>_Return(EOS(STATIC_2028), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), i744) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2027_0_<init>_Return(EOS(STATIC_2027), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), i744) → 2030_0_insert_FieldAccess(EOS(STATIC_2030), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)))
2028_0_<init>_Return(EOS(STATIC_2028), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)), i744) → 2031_0_insert_FieldAccess(EOS(STATIC_2031), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)))
2030_0_insert_FieldAccess(EOS(STATIC_2030), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL))) → 2033_0_insert_JMP(EOS(STATIC_2033))
2031_0_insert_FieldAccess(EOS(STATIC_2031), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL))) → 2035_0_insert_JMP(EOS(STATIC_2035))
2033_0_insert_JMP(EOS(STATIC_2033)) → 2036_0_insert_Return(EOS(STATIC_2036))
2035_0_insert_JMP(EOS(STATIC_2035)) → 2037_0_insert_Return(EOS(STATIC_2037))
2036_0_insert_Return(EOS(STATIC_2036)) → 2090_0_insert_Return(EOS(STATIC_2090))
2037_0_insert_Return(EOS(STATIC_2037)) → 2099_0_insert_Return(EOS(STATIC_2099))
2063_0_insert_Return(EOS(STATIC_2063), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1002)), i813) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1002)), i813)
2064_0_insert_Return(EOS(STATIC_2064), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820)
2074_0_insert_Return(EOS(STATIC_2074), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830)
2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), i846) → 2090_0_insert_Return(EOS(STATIC_2090))
2081_0_insert_Return(EOS(STATIC_2081), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1021, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1021, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837)
2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)), i854) → 2092_0_insert_JMP(EOS(STATIC_2092))
2092_0_insert_JMP(EOS(STATIC_2092)) → 2099_0_insert_Return(EOS(STATIC_2099))
2124_0_insert_Return(EOS(STATIC_2124), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i878) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i878)
2127_0_insert_Return(EOS(STATIC_2127), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i882) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1036, o1035)), o1033)), i882)
2149_0_insert_Return(EOS(STATIC_2149), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i900) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i900)
2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i904) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1057, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1056, o1055)))), i904)

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


P rules:
1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(SearchTreeR.Tree(EOC, x0, java.lang.Object(x1), x2)), x3, x3) → 2001_1_insert_InvokeMethod(1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(x1), x3, x3), java.lang.Object(x1), x3) | >(x3, x0)
1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(SearchTreeR.Tree(EOC, x0, x1, java.lang.Object(x2))), x3, x3) → 2003_1_insert_InvokeMethod(1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(x2), x3, x3), java.lang.Object(x2), x3) | <=(x3, x0)
R rules:
2001_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2003_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))

Filtered ground terms:



1887_0_insert_Load(x1, x2, x3, x4) → 1887_0_insert_Load(x2, x3, x4)
Cond_1887_0_insert_Load1(x1, x2, x3, x4, x5) → Cond_1887_0_insert_Load1(x1, x3, x4, x5)
SearchTreeR.Tree(x1, x2, x3, x4) → SearchTreeR.Tree(x2, x3, x4)
Cond_1887_0_insert_Load(x1, x2, x3, x4, x5) → Cond_1887_0_insert_Load(x1, x3, x4, x5)
2099_0_insert_Return(x1) → 2099_0_insert_Return
2090_0_insert_Return(x1) → 2090_0_insert_Return
2037_0_insert_Return(x1) → 2037_0_insert_Return
2036_0_insert_Return(x1) → 2036_0_insert_Return

Filtered duplicate args:



1887_0_insert_Load(x1, x2, x3) → 1887_0_insert_Load(x1, x3)
Cond_1887_0_insert_Load(x1, x2, x3, x4) → Cond_1887_0_insert_Load(x1, x2, x4)
Cond_1887_0_insert_Load1(x1, x2, x3, x4) → Cond_1887_0_insert_Load1(x1, x2, x4)

Filtered unneeded arguments:



2001_1_insert_InvokeMethod(x1, x2, x3) → 2001_1_insert_InvokeMethod(x1)
2003_1_insert_InvokeMethod(x1, x2, x3) → 2003_1_insert_InvokeMethod(x1)

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


P rules:
1887_0_insert_Load(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 2001_1_insert_InvokeMethod(1887_0_insert_Load(java.lang.Object(x1), x3)) | >(x3, x0)
1887_0_insert_Load(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 2003_1_insert_InvokeMethod(1887_0_insert_Load(java.lang.Object(x2), x3)) | <=(x3, x0)
R rules:
2001_1_insert_InvokeMethod(2036_0_insert_Return) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2037_0_insert_Return) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2090_0_insert_Return) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2099_0_insert_Return) → 2090_0_insert_Return
2003_1_insert_InvokeMethod(2036_0_insert_Return) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2037_0_insert_Return) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2090_0_insert_Return) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2099_0_insert_Return) → 2099_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2001_1_insert_InvokeMethod_1, 2003_1_insert_InvokeMethod_1]=2001_1_insert_InvokeMethod_1, [2036_0_insert_Return, 2090_0_insert_Return, 2037_0_insert_Return, 2099_0_insert_Return]=2036_0_insert_Return}


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


P rules:
1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1887_0_INSERT_LOAD(>(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3)
COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x1), x3)
1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1887_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3)
COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x2), x3)
R rules:
2001_1_insert_InvokeMethod(2036_0_insert_Return) → 2036_0_insert_Return

(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


The ITRS R consists of the following rules:
2001_1_insert_InvokeMethod(2036_0_insert_Return) → 2036_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(x3[0] > x0[0], java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
(1): COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
(2): 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(x3[2] <= x0[2], java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])
(3): COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

(0) -> (1), if (x3[0] > x0[0]java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])) →* java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]* x3[1])


(1) -> (0), if (java.lang.Object(x1[1]) →* java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))∧x3[1]* x3[0])


(1) -> (2), if (java.lang.Object(x1[1]) →* java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[1]* x3[2])


(2) -> (3), if (x3[2] <= x0[2]java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))) →* java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]* x3[3])


(3) -> (0), if (java.lang.Object(x2[3]) →* java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))∧x3[3]* x3[0])


(3) -> (2), if (java.lang.Object(x2[3]) →* java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[3]* x3[2])



The set Q consists of the following terms:
2001_1_insert_InvokeMethod(2036_0_insert_Return)

(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@287a9b7a 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 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1887_0_INSERT_LOAD(>(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) the following chains were created:
  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]) which results in the following constraint:

    (1)    (>(x3[0], x0[0])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])∧(UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥))



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

    (2)    (>(x3[0], x0[0])=TRUE1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])∧(UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥))



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

    (3)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(2)bni_21]x2[0] + [bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (4)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(2)bni_21]x2[0] + [bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (5)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥)∧[bni_21 + (-1)Bound*bni_21] + [(2)bni_21]x2[0] + [bni_21]x1[0] + [bni_21]x0[0] ≥ 0∧[(-1)bso_22] ≥ 0)



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

    (6)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥)∧0 ≥ 0∧[(2)bni_21] ≥ 0∧[bni_21] ≥ 0∧[bni_21] ≥ 0∧[bni_21 + (-1)Bound*bni_21] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_22] ≥ 0)







For Pair COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x1), x3) the following chains were created:
  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) which results in the following constraint:

    (7)    (>(x3[0], x0[0])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]java.lang.Object(x1[1])=java.lang.Object(SearchTreeR.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1))∧x3[1]=x3[0]1COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥))



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

    (8)    (>(x3[0], x0[0])=TRUECOND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(SearchTreeR.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x2[0])), x3[0])≥NonInfC∧COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(SearchTreeR.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x2[0])), x3[0])≥1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x3[0])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥))



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

    (9)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(2)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[0]1 + [bni_23]x1[0]1 + [bni_23]x0[0]1 + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (10)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(2)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[0]1 + [bni_23]x1[0]1 + [bni_23]x0[0]1 + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (11)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(2)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[0]1 + [bni_23]x1[0]1 + [bni_23]x0[0]1 + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (12)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧0 ≥ 0∧[(2)bni_23] ≥ 0∧[(2)bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[(2)bni_23 + (-1)Bound*bni_23] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1 + (-1)bso_24] ≥ 0∧[1] ≥ 0)



  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) which results in the following constraint:

    (13)    (>(x3[0], x0[0])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]java.lang.Object(x1[1])=java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[1]=x3[2]COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥))



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

    (14)    (>(x3[0], x0[0])=TRUECOND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x2[0])), x3[0])≥NonInfC∧COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x2[0])), x3[0])≥1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[0])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥))



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

    (15)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[2] + [bni_23]x1[2] + [bni_23]x0[2] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (16)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[2] + [bni_23]x1[2] + [bni_23]x0[2] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (17)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧[(3)bni_23 + (-1)Bound*bni_23] + [(2)bni_23]x2[0] + [(2)bni_23]x2[2] + [bni_23]x1[2] + [bni_23]x0[2] + [bni_23]x0[0] ≥ 0∧[1 + (-1)bso_24] + [2]x2[0] + x0[0] ≥ 0)



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

    (18)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧0 ≥ 0∧[(2)bni_23] ≥ 0∧[(2)bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[(3)bni_23 + (-1)Bound*bni_23] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1 + (-1)bso_24] ≥ 0∧[1] ≥ 0)







For Pair 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1887_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) the following chains were created:
  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]) which results in the following constraint:

    (19)    (<=(x3[2], x0[2])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])∧(UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥))



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

    (20)    (<=(x3[2], x0[2])=TRUE1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])∧(UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥))



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

    (21)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥)∧[(2)bni_25 + (-1)Bound*bni_25] + [(2)bni_25]x2[2] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (22)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥)∧[(2)bni_25 + (-1)Bound*bni_25] + [(2)bni_25]x2[2] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (23)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥)∧[(2)bni_25 + (-1)Bound*bni_25] + [(2)bni_25]x2[2] + [bni_25]x1[2] + [bni_25]x0[2] ≥ 0∧[(-1)bso_26] ≥ 0)



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

    (24)    (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥)∧0 ≥ 0∧[(2)bni_25] ≥ 0∧[bni_25] ≥ 0∧[bni_25] ≥ 0∧[(2)bni_25 + (-1)Bound*bni_25] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_26] ≥ 0)







For Pair COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x2), x3) the following chains were created:
  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) which results in the following constraint:

    (25)    (<=(x3[2], x0[2])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]java.lang.Object(x2[3])=java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))∧x3[3]=x3[0]COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥))



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

    (26)    (<=(x3[2], x0[2])=TRUECOND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])))), x3[2])≥NonInfC∧COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])))), x3[2])≥1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[2])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥))



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

    (27)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[0] + [(2)bni_27]x1[0] + [(2)bni_27]x0[0] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[3 + (-1)bso_28] + [2]x2[0] + x1[0] + x0[0] + x1[2] + x0[2] ≥ 0)



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

    (28)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[0] + [(2)bni_27]x1[0] + [(2)bni_27]x0[0] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[3 + (-1)bso_28] + [2]x2[0] + x1[0] + x0[0] + x1[2] + x0[2] ≥ 0)



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

    (29)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(4)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[0] + [(2)bni_27]x1[0] + [(2)bni_27]x0[0] + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[3 + (-1)bso_28] + [2]x2[0] + x1[0] + x0[0] + x1[2] + x0[2] ≥ 0)



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

    (30)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧0 ≥ 0∧[(4)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[bni_27] ≥ 0∧[bni_27] ≥ 0∧[(4)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[3 + (-1)bso_28] ≥ 0∧[1] ≥ 0)



  • We consider the chain 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) which results in the following constraint:

    (31)    (<=(x3[2], x0[2])=TRUEjava.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]java.lang.Object(x2[3])=java.lang.Object(SearchTreeR.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1)))∧x3[3]=x3[2]1COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥))



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

    (32)    (<=(x3[2], x0[2])=TRUECOND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(SearchTreeR.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))))), x3[2])≥NonInfC∧COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(SearchTreeR.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))))), x3[2])≥1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))), x3[2])∧(UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥))



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

    (33)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(6)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[2]1 + [(2)bni_27]x1[2]1 + [(2)bni_27]x0[2]1 + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[4 + (-1)bso_28] + [2]x2[2]1 + x1[2]1 + x0[2]1 + x1[2] + x0[2] ≥ 0)



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

    (34)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(6)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[2]1 + [(2)bni_27]x1[2]1 + [(2)bni_27]x0[2]1 + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[4 + (-1)bso_28] + [2]x2[2]1 + x1[2]1 + x0[2]1 + x1[2] + x0[2] ≥ 0)



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

    (35)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧[(6)bni_27 + (-1)Bound*bni_27] + [(4)bni_27]x2[2]1 + [(2)bni_27]x1[2]1 + [(2)bni_27]x0[2]1 + [bni_27]x1[2] + [bni_27]x0[2] ≥ 0∧[4 + (-1)bso_28] + [2]x2[2]1 + x1[2]1 + x0[2]1 + x1[2] + x0[2] ≥ 0)



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

    (36)    (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧0 ≥ 0∧[(4)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[bni_27] ≥ 0∧[bni_27] ≥ 0∧[(6)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[4 + (-1)bso_28] ≥ 0∧[1] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1887_0_INSERT_LOAD(>(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])), ≥)∧0 ≥ 0∧[(2)bni_21] ≥ 0∧[bni_21] ≥ 0∧[bni_21] ≥ 0∧[bni_21 + (-1)Bound*bni_21] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_22] ≥ 0)

  • COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧0 ≥ 0∧[(2)bni_23] ≥ 0∧[(2)bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[(2)bni_23 + (-1)Bound*bni_23] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1 + (-1)bso_24] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])), ≥)∧0 ≥ 0∧[(2)bni_23] ≥ 0∧[(2)bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[bni_23] ≥ 0∧[(3)bni_23 + (-1)Bound*bni_23] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1 + (-1)bso_24] ≥ 0∧[1] ≥ 0)

  • 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1887_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])), ≥)∧0 ≥ 0∧[(2)bni_25] ≥ 0∧[bni_25] ≥ 0∧[bni_25] ≥ 0∧[(2)bni_25 + (-1)Bound*bni_25] ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧0 ≥ 0∧[(-1)bso_26] ≥ 0)

  • COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1887_0_INSERT_LOAD(java.lang.Object(x2), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧0 ≥ 0∧[(4)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[bni_27] ≥ 0∧[bni_27] ≥ 0∧[(4)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[3 + (-1)bso_28] ≥ 0∧[1] ≥ 0)
    • (0 ≥ 0 ⇒ (UIncreasing(1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])), ≥)∧0 ≥ 0∧[(4)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[(2)bni_27] ≥ 0∧[bni_27] ≥ 0∧[bni_27] ≥ 0∧[(6)bni_27 + (-1)Bound*bni_27] ≥ 0∧0 ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[1] ≥ 0∧[4 + (-1)bso_28] ≥ 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(2001_1_insert_InvokeMethod(x1)) = 0   
POL(2036_0_insert_Return) = 0   
POL(1887_0_INSERT_LOAD(x1, x2)) = [-1] + x1   
POL(java.lang.Object(x1)) = [1] + x1   
POL(SearchTreeR.Tree(x1, x2, x3)) = [2]x3 + x2 + x1   
POL(COND_1887_0_INSERT_LOAD(x1, x2, x3)) = [-1] + x2   
POL(>(x1, x2)) = 0   
POL(COND_1887_0_INSERT_LOAD1(x1, x2, x3)) = [-1] + x2   
POL(<=(x1, x2)) = 0   

The following pairs are in P>:

COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

The following pairs are in Pbound:

1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
COND_1887_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1887_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])
COND_1887_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1887_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

The following pairs are in P:

1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])

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


The ITRS R consists of the following rules:
2001_1_insert_InvokeMethod(2036_0_insert_Return) → 2036_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1887_0_INSERT_LOAD(x3[0] > x0[0], java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
(2): 1887_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1887_0_INSERT_LOAD1(x3[2] <= x0[2], java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])


The set Q consists of the following terms:
2001_1_insert_InvokeMethod(2036_0_insert_Return)

(10) IDependencyGraphProof (EQUIVALENT transformation)

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

(11) TRUE

(12) Obligation:

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

(13) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 37 rules for P and 81 rules for R.


P rules:
1756_0_main_Load(EOS(STATIC_1756), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656) → 1757_0_main_GE(EOS(STATIC_1757), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123)
1757_0_main_GE(EOS(STATIC_1757), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123) → 1760_0_main_GE(EOS(STATIC_1760), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123)
1760_0_main_GE(EOS(STATIC_1760), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123) → 1762_0_main_Load(EOS(STATIC_1762), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) | <(i656, i123)
1762_0_main_Load(EOS(STATIC_1762), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 1764_0_main_InvokeMethod(EOS(STATIC_1764), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)))
1764_0_main_InvokeMethod(EOS(STATIC_1764), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC))) → 1765_0_random_FieldAccess(EOS(STATIC_1765), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)))
1765_0_random_FieldAccess(EOS(STATIC_1765), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC))) → 1767_0_random_FieldAccess(EOS(STATIC_1767), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)))
1767_0_random_FieldAccess(EOS(STATIC_1767), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653))) → 1770_0_random_ArrayAccess(EOS(STATIC_1770), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i654)
1770_0_random_ArrayAccess(EOS(STATIC_1770), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1773_0_random_ArrayAccess(EOS(STATIC_1773), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669)
1773_0_random_ArrayAccess(EOS(STATIC_1773), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1776_0_random_ArrayAccess(EOS(STATIC_1776), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669)
1776_0_random_ArrayAccess(EOS(STATIC_1776), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1779_0_random_Store(EOS(STATIC_1779), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) | <(i669, i653)
1779_0_random_Store(EOS(STATIC_1779), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1784_0_random_FieldAccess(EOS(STATIC_1784), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1784_0_random_FieldAccess(EOS(STATIC_1784), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1787_0_random_ConstantStackPush(EOS(STATIC_1787), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669)
1787_0_random_ConstantStackPush(EOS(STATIC_1787), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669) → 1791_0_random_IntArithmetic(EOS(STATIC_1791), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669, 1)
1791_0_random_IntArithmetic(EOS(STATIC_1791), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669, matching1) → 1796_0_random_FieldAccess(EOS(STATIC_1796), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, +(i669, 1)) | &&(>=(i669, 0), =(matching1, 1))
1796_0_random_FieldAccess(EOS(STATIC_1796), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i678) → 1799_0_random_Load(EOS(STATIC_1799), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1799_0_random_Load(EOS(STATIC_1799), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1806_0_random_InvokeMethod(EOS(STATIC_1806), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1806_0_random_InvokeMethod(EOS(STATIC_1806), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub)) → 1811_0_random_InvokeMethod(EOS(STATIC_1811), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub))
1811_0_random_InvokeMethod(EOS(STATIC_1811), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub)) → 1815_0_length_Load(EOS(STATIC_1815), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub))
1815_0_length_Load(EOS(STATIC_1815), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub)) → 1826_0_length_FieldAccess(EOS(STATIC_1826), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub))
1826_0_length_FieldAccess(EOS(STATIC_1826), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), java.lang.Object(java.lang.String(o849sub, i712))) → 1829_0_length_FieldAccess(EOS(STATIC_1829), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), java.lang.Object(java.lang.String(o849sub, i712))) | &&(>=(i712, 0), >=(i713, 0))
1829_0_length_FieldAccess(EOS(STATIC_1829), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), java.lang.Object(java.lang.String(o849sub, i712))) → 1835_0_length_Return(EOS(STATIC_1835), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), i712)
1835_0_length_Return(EOS(STATIC_1835), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), i712) → 1842_0_random_Return(EOS(STATIC_1842), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1842_0_random_Return(EOS(STATIC_1842), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1846_0_main_InvokeMethod(EOS(STATIC_1846), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1846_0_main_InvokeMethod(EOS(STATIC_1846), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1854_1_main_InvokeMethod(1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), i712), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1854_1_main_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806) → 2062_0_insert_Return(EOS(STATIC_2062), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806)
1854_1_main_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823) → 2068_0_insert_Return(EOS(STATIC_2068), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823)
1854_1_main_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874) → 2121_0_insert_Return(EOS(STATIC_2121), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874)
1854_1_main_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896)
2062_0_insert_Return(EOS(STATIC_2062), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806) → 2069_0_insert_Return(EOS(STATIC_2069), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806)
2069_0_insert_Return(EOS(STATIC_2069), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i842) → 2086_0_main_Inc(EOS(STATIC_2086), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656)
2086_0_main_Inc(EOS(STATIC_2086), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 2094_0_main_JMP(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC)), i123, +(i656, 1)) | >=(i656, 0)
2094_0_main_JMP(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865) → 2102_0_main_Load(EOS(STATIC_2102), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865)
2102_0_main_Load(EOS(STATIC_2102), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865) → 1753_0_main_Load(EOS(STATIC_1753), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865)
1753_0_main_Load(EOS(STATIC_1753), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 1756_0_main_Load(EOS(STATIC_1756), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656)
2068_0_insert_Return(EOS(STATIC_2068), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823) → 2069_0_insert_Return(EOS(STATIC_2069), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823)
2121_0_insert_Return(EOS(STATIC_2121), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874) → 2069_0_insert_Return(EOS(STATIC_2069), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874)
2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896) → 2069_0_insert_Return(EOS(STATIC_2069), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896)
R rules:
1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1862_0_insert_Load(EOS(STATIC_1862), java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1862_0_insert_Load(EOS(STATIC_1862), java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(SearchTreeR.Tree(EOC)), i712)
2008_0_insert_Load(EOS(STATIC_2008), java.lang.Object(o956sub), i744) → 1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o956sub), i744)
2010_0_insert_Load(EOS(STATIC_2010), java.lang.Object(o957sub), i744) → 1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o957sub), i744)
1878_0_insert_Load(EOS(STATIC_1878), java.lang.Object(o879sub), i744) → 1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(o879sub), i744, i744)
1887_0_insert_Load(EOS(STATIC_1887), java.lang.Object(o879sub), i744, i744) → 1893_0_insert_FieldAccess(EOS(STATIC_1893), java.lang.Object(o879sub), i744, i744, java.lang.Object(o879sub))
1893_0_insert_FieldAccess(EOS(STATIC_1893), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1901_0_insert_FieldAccess(EOS(STATIC_1901), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1901_0_insert_FieldAccess(EOS(STATIC_1901), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1917_0_insert_GT(EOS(STATIC_1917), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1918_0_insert_GT(EOS(STATIC_1918), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1917_0_insert_GT(EOS(STATIC_1917), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1926_0_insert_Load(EOS(STATIC_1926), java.lang.Object(SearchTreeR.Tree(EOC)), i744) | >(i744, i759)
1918_0_insert_GT(EOS(STATIC_1918), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC)), i744) | <=(i744, i759)
1926_0_insert_Load(EOS(STATIC_1926), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1936_0_insert_FieldAccess(EOS(STATIC_1936), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1938_0_insert_FieldAccess(EOS(STATIC_1938), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1936_0_insert_FieldAccess(EOS(STATIC_1936), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC)), i744, o899)
1938_0_insert_FieldAccess(EOS(STATIC_1938), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC)), i744, o898)
1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o956sub)) → 1961_0_insert_NONNULL(EOS(STATIC_1961), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o956sub))
1946_0_insert_NONNULL(EOS(STATIC_1946), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 1962_0_insert_NONNULL(EOS(STATIC_1962), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL)
1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o957sub)) → 1963_0_insert_NONNULL(EOS(STATIC_1963), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o957sub))
1947_0_insert_NONNULL(EOS(STATIC_1947), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 1964_0_insert_NONNULL(EOS(STATIC_1964), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL)
1961_0_insert_NONNULL(EOS(STATIC_1961), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o956sub)) → 1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
1962_0_insert_NONNULL(EOS(STATIC_1962), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
1963_0_insert_NONNULL(EOS(STATIC_1963), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o957sub)) → 1971_0_insert_Load(EOS(STATIC_1971), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
1964_0_insert_NONNULL(EOS(STATIC_1964), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 1973_0_insert_Load(EOS(STATIC_1973), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1977_0_insert_FieldAccess(EOS(STATIC_1977), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1978_0_insert_New(EOS(STATIC_1978), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1971_0_insert_Load(EOS(STATIC_1971), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1979_0_insert_FieldAccess(EOS(STATIC_1979), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1973_0_insert_Load(EOS(STATIC_1973), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1980_0_insert_New(EOS(STATIC_1980), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1977_0_insert_FieldAccess(EOS(STATIC_1977), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1985_0_insert_Load(EOS(STATIC_1985), i744, java.lang.Object(o956sub))
1978_0_insert_New(EOS(STATIC_1978), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1986_0_insert_Duplicate(EOS(STATIC_1986), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
1979_0_insert_FieldAccess(EOS(STATIC_1979), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1987_0_insert_Load(EOS(STATIC_1987), i744, java.lang.Object(o957sub))
1980_0_insert_New(EOS(STATIC_1980), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1989_0_insert_Duplicate(EOS(STATIC_1989), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
1985_0_insert_Load(EOS(STATIC_1985), i744, java.lang.Object(o956sub)) → 1992_0_insert_InvokeMethod(EOS(STATIC_1992), java.lang.Object(o956sub), i744)
1986_0_insert_Duplicate(EOS(STATIC_1986), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 1993_0_insert_Load(EOS(STATIC_1993), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
1987_0_insert_Load(EOS(STATIC_1987), i744, java.lang.Object(o957sub)) → 1995_0_insert_InvokeMethod(EOS(STATIC_1995), java.lang.Object(o957sub), i744)
1989_0_insert_Duplicate(EOS(STATIC_1989), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 1996_0_insert_Load(EOS(STATIC_1996), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
1992_0_insert_InvokeMethod(EOS(STATIC_1992), java.lang.Object(o956sub), i744) → 2001_1_insert_InvokeMethod(2001_0_insert_Load(EOS(STATIC_2001), java.lang.Object(o956sub), i744), java.lang.Object(o956sub), i744)
1993_0_insert_Load(EOS(STATIC_1993), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2002_0_insert_InvokeMethod(EOS(STATIC_2002), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
1995_0_insert_InvokeMethod(EOS(STATIC_1995), java.lang.Object(o957sub), i744) → 2003_1_insert_InvokeMethod(2003_0_insert_Load(EOS(STATIC_2003), java.lang.Object(o957sub), i744), java.lang.Object(o957sub), i744)
1996_0_insert_Load(EOS(STATIC_1996), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2004_0_insert_InvokeMethod(EOS(STATIC_2004), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2001_0_insert_Load(EOS(STATIC_2001), java.lang.Object(o956sub), i744) → 2008_0_insert_Load(EOS(STATIC_2008), java.lang.Object(o956sub), i744)
2001_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(o956sub), i813) → 2063_0_insert_Return(EOS(STATIC_2063), java.lang.Object(SearchTreeR.Tree(EOC)), i813)
2001_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(o956sub), i830) → 2074_0_insert_Return(EOS(STATIC_2074), java.lang.Object(SearchTreeR.Tree(EOC)), i830)
2001_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(o956sub), i878) → 2124_0_insert_Return(EOS(STATIC_2124), java.lang.Object(SearchTreeR.Tree(EOC)), i878)
2001_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(o956sub), i900) → 2149_0_insert_Return(EOS(STATIC_2149), java.lang.Object(SearchTreeR.Tree(EOC)), i900)
2002_0_insert_InvokeMethod(EOS(STATIC_2002), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2009_0_<init>_Load(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2003_0_insert_Load(EOS(STATIC_2003), java.lang.Object(o957sub), i744) → 2010_0_insert_Load(EOS(STATIC_2010), java.lang.Object(o957sub), i744)
2003_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(o957sub), i820) → 2064_0_insert_Return(EOS(STATIC_2064), java.lang.Object(SearchTreeR.Tree(EOC)), i820)
2003_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(o957sub), i837) → 2081_0_insert_Return(EOS(STATIC_2081), java.lang.Object(SearchTreeR.Tree(EOC)), i837)
2003_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(o957sub), i882) → 2127_0_insert_Return(EOS(STATIC_2127), java.lang.Object(SearchTreeR.Tree(EOC)), i882)
2003_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(o957sub), i904) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i904)
2004_0_insert_InvokeMethod(EOS(STATIC_2004), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2012_0_<init>_Load(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2009_0_<init>_Load(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2015_0_<init>_InvokeMethod(EOS(STATIC_2015), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2012_0_<init>_Load(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2017_0_<init>_InvokeMethod(EOS(STATIC_2017), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2015_0_<init>_InvokeMethod(EOS(STATIC_2015), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2018_0_<init>_Load(EOS(STATIC_2018), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2017_0_<init>_InvokeMethod(EOS(STATIC_2017), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2020_0_<init>_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2018_0_<init>_Load(EOS(STATIC_2018), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2021_0_<init>_Load(EOS(STATIC_2021), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2020_0_<init>_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2023_0_<init>_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2021_0_<init>_Load(EOS(STATIC_2021), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2024_0_<init>_FieldAccess(EOS(STATIC_2024), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2023_0_<init>_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2025_0_<init>_FieldAccess(EOS(STATIC_2025), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2024_0_<init>_FieldAccess(EOS(STATIC_2024), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2027_0_<init>_Return(EOS(STATIC_2027), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2025_0_<init>_FieldAccess(EOS(STATIC_2025), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2028_0_<init>_Return(EOS(STATIC_2028), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2027_0_<init>_Return(EOS(STATIC_2027), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2030_0_insert_FieldAccess(EOS(STATIC_2030), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2028_0_<init>_Return(EOS(STATIC_2028), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2031_0_insert_FieldAccess(EOS(STATIC_2031), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2030_0_insert_FieldAccess(EOS(STATIC_2030), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2033_0_insert_JMP(EOS(STATIC_2033))
2031_0_insert_FieldAccess(EOS(STATIC_2031), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2035_0_insert_JMP(EOS(STATIC_2035))
2033_0_insert_JMP(EOS(STATIC_2033)) → 2036_0_insert_Return(EOS(STATIC_2036))
2035_0_insert_JMP(EOS(STATIC_2035)) → 2037_0_insert_Return(EOS(STATIC_2037))
2036_0_insert_Return(EOS(STATIC_2036)) → 2090_0_insert_Return(EOS(STATIC_2090))
2037_0_insert_Return(EOS(STATIC_2037)) → 2099_0_insert_Return(EOS(STATIC_2099))
2063_0_insert_Return(EOS(STATIC_2063), java.lang.Object(SearchTreeR.Tree(EOC)), i813) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC)), i813)
2064_0_insert_Return(EOS(STATIC_2064), java.lang.Object(SearchTreeR.Tree(EOC)), i820) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC)), i820)
2074_0_insert_Return(EOS(STATIC_2074), java.lang.Object(SearchTreeR.Tree(EOC)), i830) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC)), i830)
2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC)), i846) → 2090_0_insert_Return(EOS(STATIC_2090))
2081_0_insert_Return(EOS(STATIC_2081), java.lang.Object(SearchTreeR.Tree(EOC)), i837) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC)), i837)
2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC)), i854) → 2092_0_insert_JMP(EOS(STATIC_2092))
2092_0_insert_JMP(EOS(STATIC_2092)) → 2099_0_insert_Return(EOS(STATIC_2099))
2124_0_insert_Return(EOS(STATIC_2124), java.lang.Object(SearchTreeR.Tree(EOC)), i878) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC)), i878)
2127_0_insert_Return(EOS(STATIC_2127), java.lang.Object(SearchTreeR.Tree(EOC)), i882) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC)), i882)
2149_0_insert_Return(EOS(STATIC_2149), java.lang.Object(SearchTreeR.Tree(EOC)), i900) → 2075_0_insert_Return(EOS(STATIC_2075), java.lang.Object(SearchTreeR.Tree(EOC)), i900)
2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i904) → 2082_0_insert_Return(EOS(STATIC_2082), java.lang.Object(SearchTreeR.Tree(EOC)), i904)

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


P rules:
1854_1_main_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1854_1_main_InvokeMethod(1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), x3), java.lang.Object(SearchTreeR.Tree(EOC)), x0, +(x1, 1), java.lang.Object(SearchTreeR.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1854_1_main_InvokeMethod(1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), x3), java.lang.Object(SearchTreeR.Tree(EOC)), x0, +(x1, 1), java.lang.Object(SearchTreeR.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1854_1_main_InvokeMethod(1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), x3), java.lang.Object(SearchTreeR.Tree(EOC)), x0, +(x1, 1), java.lang.Object(SearchTreeR.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1854_1_main_InvokeMethod(1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), x3), java.lang.Object(SearchTreeR.Tree(EOC)), x0, +(x1, 1), java.lang.Object(SearchTreeR.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
R rules:
1854_0_insert_Load(EOS(STATIC_1854), java.lang.Object(SearchTreeR.Tree(EOC)), x0) → 1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x2), java.lang.Object(SearchTreeR.Tree(EOC)), x0) | <(x1, x0)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2003_1_insert_InvokeMethod(1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x2), java.lang.Object(SearchTreeR.Tree(EOC)), x0) | >=(x1, x0)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2090_0_insert_Return(EOS(STATIC_2090)) | <(x1, x0)
1909_0_insert_GT(EOS(STATIC_1909), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2099_0_insert_Return(EOS(STATIC_2099)) | >=(x1, x0)
2001_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2001_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(x0), x1) → 2090_0_insert_Return(EOS(STATIC_2090))
2003_1_insert_InvokeMethod(2036_0_insert_Return(EOS(STATIC_2036)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2037_0_insert_Return(EOS(STATIC_2037)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2090_0_insert_Return(EOS(STATIC_2090)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))
2003_1_insert_InvokeMethod(2099_0_insert_Return(EOS(STATIC_2099)), java.lang.Object(x0), x1) → 2099_0_insert_Return(EOS(STATIC_2099))

Filtered ground terms:



1854_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1854_1_main_InvokeMethod(x1, x3, x4, x6)
SearchTreeR.Tree(x1) → SearchTreeR.Tree
1854_0_insert_Load(x1, x2, x3) → 1854_0_insert_Load(x3)
Cond_1854_1_main_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1854_1_main_InvokeMethod3(x1, x4, x5, x7, x8)
2099_0_insert_Return(x1) → 2099_0_insert_Return
Cond_1854_1_main_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1854_1_main_InvokeMethod2(x1, x4, x5, x7, x8)
2090_0_insert_Return(x1) → 2090_0_insert_Return
Cond_1854_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1854_1_main_InvokeMethod1(x1, x4, x5, x7, x8)
2037_0_insert_Return(x1) → 2037_0_insert_Return
Cond_1854_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1854_1_main_InvokeMethod(x1, x4, x5, x7, x8)
2036_0_insert_Return(x1) → 2036_0_insert_Return
Cond_1909_0_insert_GT3(x1, x2, x3, x4, x5, x6) → Cond_1909_0_insert_GT3(x1, x4, x5, x6)
1909_0_insert_GT(x1, x2, x3, x4, x5) → 1909_0_insert_GT(x3, x4, x5)
Cond_1909_0_insert_GT2(x1, x2, x3, x4, x5, x6) → Cond_1909_0_insert_GT2(x1, x4, x5, x6)
Cond_1909_0_insert_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1909_0_insert_GT1(x1, x4, x5, x6, x7)
Cond_1909_0_insert_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1909_0_insert_GT(x1, x4, x5, x6, x7)

Filtered duplicate args:



1909_0_insert_GT(x1, x2, x3) → 1909_0_insert_GT(x2, x3)
Cond_1909_0_insert_GT(x1, x2, x3, x4, x5) → Cond_1909_0_insert_GT(x1, x3, x4, x5)
Cond_1909_0_insert_GT1(x1, x2, x3, x4, x5) → Cond_1909_0_insert_GT1(x1, x3, x4, x5)
Cond_1909_0_insert_GT2(x1, x2, x3, x4) → Cond_1909_0_insert_GT2(x1, x3, x4)
Cond_1909_0_insert_GT3(x1, x2, x3, x4) → Cond_1909_0_insert_GT3(x1, x3, x4)

Filtered unneeded arguments:



1854_1_main_InvokeMethod(x1, x2, x3, x4) → 1854_1_main_InvokeMethod(x1, x2, x3)
Cond_1854_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1854_1_main_InvokeMethod(x1, x2, x3, x5)
Cond_1854_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1854_1_main_InvokeMethod1(x1, x2, x3, x5)
Cond_1854_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_1854_1_main_InvokeMethod2(x1, x2, x3, x5)
Cond_1854_1_main_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_1854_1_main_InvokeMethod3(x1, x2, x3, x5)
Cond_1909_0_insert_GT(x1, x2, x3, x4) → Cond_1909_0_insert_GT(x1, x2, x4)
2001_1_insert_InvokeMethod(x1, x2, x3) → 2001_1_insert_InvokeMethod(x1, x2)
Cond_1909_0_insert_GT1(x1, x2, x3, x4) → Cond_1909_0_insert_GT1(x1, x2, x4)
2003_1_insert_InvokeMethod(x1, x2, x3) → 2003_1_insert_InvokeMethod(x1, x2)
Cond_1909_0_insert_GT2(x1, x2, x3) → Cond_1909_0_insert_GT2(x1)
Cond_1909_0_insert_GT3(x1, x2, x3) → Cond_1909_0_insert_GT3(x1)

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


P rules:
1854_1_main_InvokeMethod(2036_0_insert_Return, x0, x1) → 1854_1_main_InvokeMethod(1854_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2037_0_insert_Return, x0, x1) → 1854_1_main_InvokeMethod(1854_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2090_0_insert_Return, x0, x1) → 1854_1_main_InvokeMethod(1854_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1854_1_main_InvokeMethod(2099_0_insert_Return, x0, x1) → 1854_1_main_InvokeMethod(1854_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
R rules:
1854_0_insert_Load(x0) → 1909_0_insert_GT(x0, x1)
1909_0_insert_GT(x0, x1) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree)) | <(x1, x0)
1909_0_insert_GT(x0, x1) → 2003_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree)) | >=(x1, x0)
1909_0_insert_GT(x0, x1) → 2090_0_insert_Return | <(x1, x0)
1909_0_insert_GT(x0, x1) → 2099_0_insert_Return | >=(x1, x0)
2001_1_insert_InvokeMethod(2036_0_insert_Return, java.lang.Object(x0)) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2037_0_insert_Return, java.lang.Object(x0)) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2090_0_insert_Return, java.lang.Object(x0)) → 2090_0_insert_Return
2001_1_insert_InvokeMethod(2099_0_insert_Return, java.lang.Object(x0)) → 2090_0_insert_Return
2003_1_insert_InvokeMethod(2036_0_insert_Return, java.lang.Object(x0)) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2037_0_insert_Return, java.lang.Object(x0)) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2090_0_insert_Return, java.lang.Object(x0)) → 2099_0_insert_Return
2003_1_insert_InvokeMethod(2099_0_insert_Return, java.lang.Object(x0)) → 2099_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2001_1_insert_InvokeMethod_2, 2003_1_insert_InvokeMethod_2]=2001_1_insert_InvokeMethod_2, [SearchTreeR.Tree, 2090_0_insert_Return, 2099_0_insert_Return, 2036_0_insert_Return, 2037_0_insert_Return]=SearchTreeR.Tree, [Cond_1854_1_main_InvokeMethod_5, Cond_1854_1_main_InvokeMethod1_5, Cond_1854_1_main_InvokeMethod2_5, Cond_1854_1_main_InvokeMethod3_5]=Cond_1854_1_main_InvokeMethod_5}


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


P rules:
1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), SearchTreeR.Tree, x0, x1, x3)
COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3), x0, +(x1, 1))
R rules:
1854_0_insert_Load(x0) → 1909_0_insert_GT(x0, x1)
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT(<(x1, x0), x0, x1, x2)
Cond_1909_0_insert_GT(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT1(>=(x1, x0), x0, x1, x2)
Cond_1909_0_insert_GT1(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT2(<(x1, x0), x0, x1)
Cond_1909_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT3(>=(x1, x0), x0, x1)
Cond_1909_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2001_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0)) → SearchTreeR.Tree

(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, Boolean


The ITRS R consists of the following rules:
1854_0_insert_Load(x0) → 1909_0_insert_GT(x0, x1)
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_1909_0_insert_GT(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_1909_0_insert_GT1(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT2(x1 < x0, x0, x1)
Cond_1909_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT3(x1 >= x0, x0, x1)
Cond_1909_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2001_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0)) → SearchTreeR.Tree

The integer pair graph contains the following rules and edges:
(0): 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(x3[0] > -1 && x1[0] > -1 && x0[0] > x1[0] + 1, SearchTreeR.Tree, x0[0], x1[0], x3[0])
(1): COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], x1[1] + 1)

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


(1) -> (0), if (1854_0_insert_Load(x3[1]) →* SearchTreeR.Treex0[1]* x0[0]x1[1] + 1* x1[0])



The set Q consists of the following terms:
1854_0_insert_Load(x0)
1909_0_insert_GT(x0, x1)
Cond_1909_0_insert_GT(TRUE, x0, x1, x2)
Cond_1909_0_insert_GT1(TRUE, x0, x1, x2)
Cond_1909_0_insert_GT2(TRUE, x0, x1)
Cond_1909_0_insert_GT3(TRUE, x0, x1)
2001_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0))

(15) 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@62f0926b 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 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), SearchTreeR.Tree, x0, x1, x3) the following chains were created:
  • We consider the chain COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0]), COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)) which results in the following constraint:

    (1)    (1854_0_insert_Load(x3[1])=SearchTreeR.Treex0[1]=x0[0]+(x1[1], 1)=x1[0]&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1)))=TRUEx0[0]=x0[1]1x1[0]=x1[1]1x3[0]=x3[1]11854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0])≥NonInfC∧1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0])≥COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])∧(UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥))



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

    (2)    (1854_0_insert_Load(x3[1])=SearchTreeR.Tree>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥NonInfC∧1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), SearchTreeR.Tree, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥))



    We simplified constraint (2) using rule (V) (with possible (I) afterwards) using induction on 1854_0_insert_Load(x3[1])=SearchTreeR.Tree which results in the following new constraint:

    (3)    (1909_0_insert_GT(x0, x1)=SearchTreeR.Tree>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥NonInfC∧1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), SearchTreeR.Tree, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥))



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

    (4)    (x0[0] + [-3] + [-1]x1[1] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46] + [(-1)bni_46]x1[1] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)



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

    (5)    (x0[0] + [-3] + [-1]x1[1] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46] + [(-1)bni_46]x1[1] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)



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

    (6)    (x0[0] + [-3] + [-1]x1[1] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46] + [(-1)bni_46]x1[1] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)



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

    (7)    (x0[0] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46 + (3)bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)



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

    (8)    (x0[0] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46 + (3)bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)


    (9)    (x0[0] ≥ 0∧x3[0] ≥ 0∧[-1]x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46 + (3)bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)







For Pair COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3), x0, +(x1, 1)) the following chains were created:
  • We consider the chain 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0]), COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0]) which results in the following constraint:

    (10)    (&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1)))=TRUEx0[0]=x0[1]x1[0]=x1[1]x3[0]=x3[1]1854_0_insert_Load(x3[1])=SearchTreeR.Treex0[1]=x0[0]1+(x1[1], 1)=x1[0]1COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1])≥NonInfC∧COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1])≥1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))∧(UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥))



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

    (11)    (1854_0_insert_Load(x3[0])=SearchTreeR.Tree>(x0[0], +(x1[0], 1))=TRUE>(x3[0], -1)=TRUE>(x1[0], -1)=TRUECOND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x3[0])≥NonInfC∧COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x3[0])≥1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[0]), x0[0], +(x1[0], 1))∧(UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥))



    We simplified constraint (11) using rule (V) (with possible (I) afterwards) using induction on 1854_0_insert_Load(x3[0])=SearchTreeR.Tree which results in the following new constraint:

    (12)    (1909_0_insert_GT(x2, x3)=SearchTreeR.Tree>(x0[0], +(x1[0], 1))=TRUE>(x2, -1)=TRUE>(x1[0], -1)=TRUECOND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x2)≥NonInfC∧COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x2)≥1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x2), x0[0], +(x1[0], 1))∧(UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥))



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

    (13)    (x0[0] + [-2] + [-1]x1[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]x1[0] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 0)



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

    (14)    (x0[0] + [-2] + [-1]x1[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]x1[0] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 0)



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

    (15)    (x0[0] + [-2] + [-1]x1[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[bni_48 + (-1)Bound*bni_48] + [(-1)bni_48]x1[0] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 0)



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

    (16)    (x0[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(3)bni_48 + (-1)Bound*bni_48] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), SearchTreeR.Tree, x0, x1, x3)
    • (x0[0] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46 + (3)bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)
    • (x0[0] ≥ 0∧x3[0] ≥ 0∧[-1]x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_46 + (3)bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)

  • COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3), x0, +(x1, 1))
    • (x0[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(3)bni_48 + (-1)Bound*bni_48] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 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(1854_0_insert_Load(x1)) = [-1] + [-1]x1   
POL(1909_0_insert_GT(x1, x2)) = [-1] + [-1]x2 + [-1]x1   
POL(Cond_1909_0_insert_GT(x1, x2, x3, x4)) = [-1] + x3 + [-1]x2 + [-1]x1   
POL(<(x1, x2)) = [-1]   
POL(2001_1_insert_InvokeMethod(x1, x2)) = [2] + x2 + [-1]x1   
POL(java.lang.Object(x1)) = [-1] + [-1]x1   
POL(SearchTreeR.Tree) = [-1]   
POL(Cond_1909_0_insert_GT1(x1, x2, x3, x4)) = [-1] + [2]x4 + [2]x2 + [2]x1   
POL(>=(x1, x2)) = [1]   
POL(Cond_1909_0_insert_GT2(x1, x2, x3)) = [-1] + [2]x3 + [-1]x2 + [-1]x1   
POL(Cond_1909_0_insert_GT3(x1, x2, x3)) = [-1] + x2 + [-1]x1   
POL(1854_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [1] + [-1]x3 + x2   
POL(COND_1854_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [2] + [-1]x4 + x3 + x2   
POL(&&(x1, x2)) = [-1]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   

The following pairs are in P>:

COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in Pbound:

1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])
COND_1854_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1854_1_MAIN_INVOKEMETHOD(1854_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in P:

1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])

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

FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1

(16) 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:
1854_0_insert_Load(x0) → 1909_0_insert_GT(x0, x1)
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_1909_0_insert_GT(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_1909_0_insert_GT1(TRUE, x0, x1, x2) → 2001_1_insert_InvokeMethod(1909_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT2(x1 < x0, x0, x1)
Cond_1909_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1909_0_insert_GT(x0, x1) → Cond_1909_0_insert_GT3(x1 >= x0, x0, x1)
Cond_1909_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2001_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0)) → SearchTreeR.Tree

The integer pair graph contains the following rules and edges:
(0): 1854_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1854_1_MAIN_INVOKEMETHOD(x3[0] > -1 && x1[0] > -1 && x0[0] > x1[0] + 1, SearchTreeR.Tree, x0[0], x1[0], x3[0])


The set Q consists of the following terms:
1854_0_insert_Load(x0)
1909_0_insert_GT(x0, x1)
Cond_1909_0_insert_GT(TRUE, x0, x1, x2)
Cond_1909_0_insert_GT1(TRUE, x0, x1, x2)
Cond_1909_0_insert_GT2(TRUE, x0, x1)
Cond_1909_0_insert_GT3(TRUE, x0, x1)
2001_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0))

(17) IDependencyGraphProof (EQUIVALENT transformation)

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

(18) TRUE