(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:
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(o879sub), i744, i744) → 1933_0_insert_FieldAccess(EOS(STATIC_1933), java.lang.Object(o879sub), i744, i744, java.lang.Object(o879sub))
1933_0_insert_FieldAccess(EOS(STATIC_1933), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1940_0_insert_FieldAccess(EOS(STATIC_1940), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1940_0_insert_FieldAccess(EOS(STATIC_1940), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1958_0_insert_GT(EOS(STATIC_1958), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1959_0_insert_GT(EOS(STATIC_1959), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759)
1958_0_insert_GT(EOS(STATIC_1958), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) | >(i744, i759)
1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) → 1981_0_insert_FieldAccess(EOS(STATIC_1981), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1981_0_insert_FieldAccess(EOS(STATIC_1981), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, o899)
1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)), i744, java.lang.Object(o965sub)) → 2009_0_insert_NONNULL(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)), i744, java.lang.Object(o965sub))
2009_0_insert_NONNULL(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)), i744, java.lang.Object(o965sub)) → 2019_0_insert_Load(EOS(STATIC_2019), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)), i744)
2019_0_insert_Load(EOS(STATIC_2019), java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)), i744) → 2030_0_insert_FieldAccess(EOS(STATIC_2030), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898)))
2030_0_insert_FieldAccess(EOS(STATIC_2030), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, java.lang.Object(o965sub), o898))) → 2039_0_insert_Load(EOS(STATIC_2039), i744, java.lang.Object(o965sub))
2039_0_insert_Load(EOS(STATIC_2039), i744, java.lang.Object(o965sub)) → 2047_0_insert_InvokeMethod(EOS(STATIC_2047), java.lang.Object(o965sub), i744)
2047_0_insert_InvokeMethod(EOS(STATIC_2047), java.lang.Object(o965sub), i744) → 2057_1_insert_InvokeMethod(2057_0_insert_Load(EOS(STATIC_2057), java.lang.Object(o965sub), i744), java.lang.Object(o965sub), i744)
2057_0_insert_Load(EOS(STATIC_2057), java.lang.Object(o965sub), i744) → 2065_0_insert_Load(EOS(STATIC_2065), java.lang.Object(o965sub), i744)
2065_0_insert_Load(EOS(STATIC_2065), java.lang.Object(o965sub), i744) → 1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o965sub), i744)
1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o879sub), i744) → 1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(o879sub), i744, i744)
1959_0_insert_GT(EOS(STATIC_1959), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, i744, i759) → 1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) | <=(i744, i759)
1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744) → 1983_0_insert_FieldAccess(EOS(STATIC_1983), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)))
1983_0_insert_FieldAccess(EOS(STATIC_1983), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898))) → 1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, o898)), i744, o898)
1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))), i744, java.lang.Object(o966sub)) → 2011_0_insert_NONNULL(EOS(STATIC_2011), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))), i744, java.lang.Object(o966sub))
2011_0_insert_NONNULL(EOS(STATIC_2011), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))), i744, java.lang.Object(o966sub)) → 2022_0_insert_Load(EOS(STATIC_2022), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))), i744)
2022_0_insert_Load(EOS(STATIC_2022), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))), i744) → 2033_0_insert_FieldAccess(EOS(STATIC_2033), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub))))
2033_0_insert_FieldAccess(EOS(STATIC_2033), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, java.lang.Object(o966sub)))) → 2042_0_insert_Load(EOS(STATIC_2042), i744, java.lang.Object(o966sub))
2042_0_insert_Load(EOS(STATIC_2042), i744, java.lang.Object(o966sub)) → 2050_0_insert_InvokeMethod(EOS(STATIC_2050), java.lang.Object(o966sub), i744)
2050_0_insert_InvokeMethod(EOS(STATIC_2050), java.lang.Object(o966sub), i744) → 2060_1_insert_InvokeMethod(2060_0_insert_Load(EOS(STATIC_2060), java.lang.Object(o966sub), i744), java.lang.Object(o966sub), i744)
2060_0_insert_Load(EOS(STATIC_2060), java.lang.Object(o966sub), i744) → 2068_0_insert_Load(EOS(STATIC_2068), java.lang.Object(o966sub), i744)
2068_0_insert_Load(EOS(STATIC_2068), java.lang.Object(o966sub), i744) → 1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o966sub), i744)
R rules:
1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL) → 2010_0_insert_NONNULL(EOS(STATIC_2010), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL)
1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL) → 2012_0_insert_NONNULL(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL)
2010_0_insert_NONNULL(EOS(STATIC_2010), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744, NULL) → 2020_0_insert_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744)
2012_0_insert_NONNULL(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744, NULL) → 2023_0_insert_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744)
2020_0_insert_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), i744) → 2031_0_insert_New(EOS(STATIC_2031), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)))
2023_0_insert_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), i744) → 2034_0_insert_New(EOS(STATIC_2034), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)))
2031_0_insert_New(EOS(STATIC_2031), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898))) → 2041_0_insert_Duplicate(EOS(STATIC_2041), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)))
2034_0_insert_New(EOS(STATIC_2034), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL))) → 2044_0_insert_Duplicate(EOS(STATIC_2044), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, 0, NULL, NULL)))
2041_0_insert_Duplicate(EOS(STATIC_2041), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL))) → 2049_0_insert_Load(EOS(STATIC_2049), 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)
2044_0_insert_Duplicate(EOS(STATIC_2044), i744, java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, matching1, NULL, NULL))) → 2052_0_insert_Load(EOS(STATIC_2052), 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)
2049_0_insert_Load(EOS(STATIC_2049), 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))) → 2058_0_insert_InvokeMethod(EOS(STATIC_2058), 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))
2052_0_insert_Load(EOS(STATIC_2052), 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))) → 2062_0_insert_InvokeMethod(EOS(STATIC_2062), 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))
2057_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(o965sub), i813) → 2135_0_insert_Return(EOS(STATIC_2135), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1014)), i813)
2057_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(o965sub), i830) → 2145_0_insert_Return(EOS(STATIC_2145), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830)
2057_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(o965sub), i878) → 2196_0_insert_Return(EOS(STATIC_2196), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i878)
2057_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(o965sub), i900) → 2421_0_insert_Return(EOS(STATIC_2421), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i900)
2058_0_insert_InvokeMethod(EOS(STATIC_2058), 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) → 2067_0_<init>_Load(EOS(STATIC_2067), 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))
2060_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(o966sub), i820) → 2136_0_insert_Return(EOS(STATIC_2136), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820)
2060_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(o966sub), i837) → 2152_0_insert_Return(EOS(STATIC_2152), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1025, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837)
2060_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(o966sub), i882) → 2200_0_insert_Return(EOS(STATIC_2200), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i882)
2060_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(o966sub), i904) → 2424_0_insert_Return(EOS(STATIC_2424), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i904)
2062_0_insert_InvokeMethod(EOS(STATIC_2062), 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) → 2070_0_<init>_Load(EOS(STATIC_2070), 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))
2067_0_<init>_Load(EOS(STATIC_2067), 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) → 2074_0_<init>_InvokeMethod(EOS(STATIC_2074), 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))
2070_0_<init>_Load(EOS(STATIC_2070), 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) → 2077_0_<init>_InvokeMethod(EOS(STATIC_2077), 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))
2074_0_<init>_InvokeMethod(EOS(STATIC_2074), 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))) → 2079_0_<init>_Load(EOS(STATIC_2079), 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))
2077_0_<init>_InvokeMethod(EOS(STATIC_2077), 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))) → 2081_0_<init>_Load(EOS(STATIC_2081), 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))
2079_0_<init>_Load(EOS(STATIC_2079), 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) → 2082_0_<init>_Load(EOS(STATIC_2082), 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))
2081_0_<init>_Load(EOS(STATIC_2081), 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) → 2084_0_<init>_Load(EOS(STATIC_2084), 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))
2082_0_<init>_Load(EOS(STATIC_2082), 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))) → 2085_0_<init>_FieldAccess(EOS(STATIC_2085), 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))
2084_0_<init>_Load(EOS(STATIC_2084), 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))) → 2087_0_<init>_FieldAccess(EOS(STATIC_2087), 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))
2085_0_<init>_FieldAccess(EOS(STATIC_2085), 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) → 2089_0_<init>_Return(EOS(STATIC_2089), 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))
2087_0_<init>_FieldAccess(EOS(STATIC_2087), 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) → 2091_0_<init>_Return(EOS(STATIC_2091), 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))
2089_0_<init>_Return(EOS(STATIC_2089), 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) → 2093_0_insert_FieldAccess(EOS(STATIC_2093), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)))
2091_0_<init>_Return(EOS(STATIC_2091), 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) → 2094_0_insert_FieldAccess(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL)))
2093_0_insert_FieldAccess(EOS(STATIC_2093), java.lang.Object(SearchTreeR.Tree(EOC, i759, NULL, o898)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL))) → 2096_0_insert_JMP(EOS(STATIC_2096))
2094_0_insert_FieldAccess(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC, i759, o899, NULL)), java.lang.Object(SearchTreeR.Tree(EOC, i744, NULL, NULL))) → 2098_0_insert_JMP(EOS(STATIC_2098))
2096_0_insert_JMP(EOS(STATIC_2096)) → 2100_0_insert_Return(EOS(STATIC_2100))
2098_0_insert_JMP(EOS(STATIC_2098)) → 2101_0_insert_Return(EOS(STATIC_2101))
2100_0_insert_Return(EOS(STATIC_2100)) → 2160_0_insert_Return(EOS(STATIC_2160))
2101_0_insert_Return(EOS(STATIC_2101)) → 2168_0_insert_Return(EOS(STATIC_2168))
2135_0_insert_Return(EOS(STATIC_2135), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1014)), i813) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC, i811, java.lang.Object(SearchTreeR.Tree(EOC, i813, NULL, NULL)), o1014)), i813)
2136_0_insert_Return(EOS(STATIC_2136), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i818, java.lang.Object(SearchTreeR.Tree(EOC, i820, NULL, NULL)), o898)), i820)
2145_0_insert_Return(EOS(STATIC_2145), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC, i828, o899, java.lang.Object(SearchTreeR.Tree(EOC, i830, NULL, NULL)))), i830)
2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), i846) → 2160_0_insert_Return(EOS(STATIC_2160))
2152_0_insert_Return(EOS(STATIC_2152), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1025, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i835, o1025, java.lang.Object(SearchTreeR.Tree(EOC, i837, NULL, NULL)))), i837)
2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)), i854) → 2162_0_insert_JMP(EOS(STATIC_2162))
2162_0_insert_JMP(EOS(STATIC_2162)) → 2168_0_insert_Return(EOS(STATIC_2168))
2196_0_insert_Return(EOS(STATIC_2196), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i878) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC, i877, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i878)
2200_0_insert_Return(EOS(STATIC_2200), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i882) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i881, java.lang.Object(SearchTreeR.Tree(EOC, i845, o1039, o1038)), o1036)), i882)
2421_0_insert_Return(EOS(STATIC_2421), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i900) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC, i899, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i900)
2424_0_insert_Return(EOS(STATIC_2424), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i904) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC, i903, o1059, java.lang.Object(SearchTreeR.Tree(EOC, i853, o1058, o1057)))), i904)

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


P rules:
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC, x0, java.lang.Object(x1), x2)), x3, x3) → 2057_1_insert_InvokeMethod(1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(x1), x3, x3), java.lang.Object(x1), x3) | >(x3, x0)
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(SearchTreeR.Tree(EOC, x0, x1, java.lang.Object(x2))), x3, x3) → 2060_1_insert_InvokeMethod(1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(x2), x3, x3), java.lang.Object(x2), x3) | <=(x3, x0)
R rules:
2057_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2060_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))

Filtered ground terms:



1927_0_insert_Load(x1, x2, x3, x4) → 1927_0_insert_Load(x2, x3, x4)
Cond_1927_0_insert_Load1(x1, x2, x3, x4, x5) → Cond_1927_0_insert_Load1(x1, x3, x4, x5)
SearchTreeR.Tree(x1, x2, x3, x4) → SearchTreeR.Tree(x2, x3, x4)
Cond_1927_0_insert_Load(x1, x2, x3, x4, x5) → Cond_1927_0_insert_Load(x1, x3, x4, x5)
2168_0_insert_Return(x1) → 2168_0_insert_Return
2160_0_insert_Return(x1) → 2160_0_insert_Return
2101_0_insert_Return(x1) → 2101_0_insert_Return
2100_0_insert_Return(x1) → 2100_0_insert_Return

Filtered duplicate args:



1927_0_insert_Load(x1, x2, x3) → 1927_0_insert_Load(x1, x3)
Cond_1927_0_insert_Load(x1, x2, x3, x4) → Cond_1927_0_insert_Load(x1, x2, x4)
Cond_1927_0_insert_Load1(x1, x2, x3, x4) → Cond_1927_0_insert_Load1(x1, x2, x4)

Filtered unneeded arguments:



2057_1_insert_InvokeMethod(x1, x2, x3) → 2057_1_insert_InvokeMethod(x1)
2060_1_insert_InvokeMethod(x1, x2, x3) → 2060_1_insert_InvokeMethod(x1)

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


P rules:
1927_0_insert_Load(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 2057_1_insert_InvokeMethod(1927_0_insert_Load(java.lang.Object(x1), x3)) | >(x3, x0)
1927_0_insert_Load(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 2060_1_insert_InvokeMethod(1927_0_insert_Load(java.lang.Object(x2), x3)) | <=(x3, x0)
R rules:
2057_1_insert_InvokeMethod(2100_0_insert_Return) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2101_0_insert_Return) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2160_0_insert_Return) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2168_0_insert_Return) → 2160_0_insert_Return
2060_1_insert_InvokeMethod(2100_0_insert_Return) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2101_0_insert_Return) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2160_0_insert_Return) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2168_0_insert_Return) → 2168_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2057_1_insert_InvokeMethod_1, 2060_1_insert_InvokeMethod_1]=2057_1_insert_InvokeMethod_1, [2100_0_insert_Return, 2160_0_insert_Return, 2101_0_insert_Return, 2168_0_insert_Return]=2100_0_insert_Return}


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


P rules:
1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1927_0_INSERT_LOAD(>(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3)
COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x1), x3)
1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1927_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3)
COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x2), x3)
R rules:
2057_1_insert_InvokeMethod(2100_0_insert_Return) → 2100_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:
2057_1_insert_InvokeMethod(2100_0_insert_Return) → 2100_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_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_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
(2): 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_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_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1927_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:
2057_1_insert_InvokeMethod(2100_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@776a6b20 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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1927_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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1927_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]1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_1927_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_1927_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])=TRUE1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_1927_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_1927_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_1927_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_1927_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_1927_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_1927_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_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x1), x3) the following chains were created:
  • We consider the chain 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_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_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(1927_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_1927_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_1927_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])≥1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x3[0])∧(UIncreasing(1927_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(1927_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(1927_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(1927_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(1927_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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_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_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(1927_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_1927_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_1927_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])≥1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[0])∧(UIncreasing(1927_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(1927_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(1927_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(1927_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(1927_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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1927_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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1927_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]1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_1927_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_1927_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])=TRUE1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_1927_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_1927_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_1927_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_1927_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_1927_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_1927_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_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x2), x3) the following chains were created:
  • We consider the chain 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1927_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_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_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥1927_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(1927_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_1927_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_1927_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])≥1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[2])∧(UIncreasing(1927_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(1927_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(1927_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(1927_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(1927_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 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1927_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_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_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥1927_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(1927_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_1927_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_1927_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])≥1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))), x3[2])∧(UIncreasing(1927_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(1927_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(1927_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(1927_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(1927_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.
  • 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_1927_0_INSERT_LOAD(>(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1927_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_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0, java.lang.Object(x1), x2)), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(1927_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(1927_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)

  • 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_1927_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_1927_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_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0, x1, java.lang.Object(x2))), x3) → 1927_0_INSERT_LOAD(java.lang.Object(x2), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(1927_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(1927_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(2057_1_insert_InvokeMethod(x1)) = 0   
POL(2100_0_insert_Return) = 0   
POL(1927_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_1927_0_INSERT_LOAD(x1, x2, x3)) = [-1] + x2   
POL(>(x1, x2)) = 0   
POL(COND_1927_0_INSERT_LOAD1(x1, x2, x3)) = [-1] + x2   
POL(<=(x1, x2)) = 0   

The following pairs are in P>:

COND_1927_0_INSERT_LOAD(TRUE, java.lang.Object(SearchTreeR.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 1927_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
COND_1927_0_INSERT_LOAD1(TRUE, java.lang.Object(SearchTreeR.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 1927_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

The following pairs are in Pbound:

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

The following pairs are in P:

1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_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:
2057_1_insert_InvokeMethod(2100_0_insert_Return) → 2100_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_1927_0_INSERT_LOAD(x3[0] > x0[0], java.lang.Object(SearchTreeR.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
(2): 1927_0_INSERT_LOAD(java.lang.Object(SearchTreeR.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_1927_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:
2057_1_insert_InvokeMethod(2100_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:
1787_0_main_Load(EOS(STATIC_1787), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656) → 1789_0_main_GE(EOS(STATIC_1789), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123)
1789_0_main_GE(EOS(STATIC_1789), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123) → 1791_0_main_GE(EOS(STATIC_1791), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123)
1791_0_main_GE(EOS(STATIC_1791), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656, i123) → 1794_0_main_Load(EOS(STATIC_1794), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) | <(i656, i123)
1794_0_main_Load(EOS(STATIC_1794), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 1797_0_main_InvokeMethod(EOS(STATIC_1797), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)))
1797_0_main_InvokeMethod(EOS(STATIC_1797), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC))) → 1798_0_random_FieldAccess(EOS(STATIC_1798), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)))
1798_0_random_FieldAccess(EOS(STATIC_1798), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC))) → 1800_0_random_FieldAccess(EOS(STATIC_1800), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)))
1800_0_random_FieldAccess(EOS(STATIC_1800), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653))) → 1804_0_random_ArrayAccess(EOS(STATIC_1804), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i654)
1804_0_random_ArrayAccess(EOS(STATIC_1804), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1806_0_random_ArrayAccess(EOS(STATIC_1806), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669)
1806_0_random_ArrayAccess(EOS(STATIC_1806), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1809_0_random_ArrayAccess(EOS(STATIC_1809), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669)
1809_0_random_ArrayAccess(EOS(STATIC_1809), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(ARRAY(i653)), i669) → 1812_0_random_Store(EOS(STATIC_1812), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) | <(i669, i653)
1812_0_random_Store(EOS(STATIC_1812), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1818_0_random_FieldAccess(EOS(STATIC_1818), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1818_0_random_FieldAccess(EOS(STATIC_1818), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1821_0_random_ConstantStackPush(EOS(STATIC_1821), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669)
1821_0_random_ConstantStackPush(EOS(STATIC_1821), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669) → 1825_0_random_IntArithmetic(EOS(STATIC_1825), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669, 1)
1825_0_random_IntArithmetic(EOS(STATIC_1825), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i669, matching1) → 1830_0_random_FieldAccess(EOS(STATIC_1830), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, +(i669, 1)) | &&(>=(i669, 0), =(matching1, 1))
1830_0_random_FieldAccess(EOS(STATIC_1830), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809, i678) → 1833_0_random_Load(EOS(STATIC_1833), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1833_0_random_Load(EOS(STATIC_1833), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809) → 1840_0_random_InvokeMethod(EOS(STATIC_1840), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), o809)
1840_0_random_InvokeMethod(EOS(STATIC_1840), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub)) → 1845_0_random_InvokeMethod(EOS(STATIC_1845), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub))
1845_0_random_InvokeMethod(EOS(STATIC_1845), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub)) → 1849_0_length_Load(EOS(STATIC_1849), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub))
1849_0_length_Load(EOS(STATIC_1849), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub)) → 1862_0_length_FieldAccess(EOS(STATIC_1862), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(o838sub), java.lang.Object(o838sub))
1862_0_length_FieldAccess(EOS(STATIC_1862), 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))) → 1865_0_length_FieldAccess(EOS(STATIC_1865), 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))
1865_0_length_FieldAccess(EOS(STATIC_1865), 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))) → 1873_0_length_Return(EOS(STATIC_1873), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), i712)
1873_0_length_Return(EOS(STATIC_1873), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(java.lang.String(o849sub, i712)), i712) → 1880_0_random_Return(EOS(STATIC_1880), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1880_0_random_Return(EOS(STATIC_1880), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1885_0_main_InvokeMethod(EOS(STATIC_1885), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1885_0_main_InvokeMethod(EOS(STATIC_1885), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1895_1_main_InvokeMethod(1895_0_insert_Load(EOS(STATIC_1895), java.lang.Object(SearchTreeR.Tree(EOC)), i712), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1895_1_main_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806) → 2133_0_insert_Return(EOS(STATIC_2133), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806)
1895_1_main_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823) → 2140_0_insert_Return(EOS(STATIC_2140), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823)
1895_1_main_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874) → 2193_0_insert_Return(EOS(STATIC_2193), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874)
1895_1_main_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896) → 2417_0_insert_Return(EOS(STATIC_2417), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896)
2133_0_insert_Return(EOS(STATIC_2133), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806) → 2141_0_insert_Return(EOS(STATIC_2141), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i806)
2141_0_insert_Return(EOS(STATIC_2141), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i842) → 2156_0_main_Inc(EOS(STATIC_2156), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656)
2156_0_main_Inc(EOS(STATIC_2156), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 2163_0_main_JMP(EOS(STATIC_2163), java.lang.Object(SearchTreeR.Tree(EOC)), i123, +(i656, 1)) | >=(i656, 0)
2163_0_main_JMP(EOS(STATIC_2163), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865) → 2171_0_main_Load(EOS(STATIC_2171), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865)
2171_0_main_Load(EOS(STATIC_2171), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865) → 1785_0_main_Load(EOS(STATIC_1785), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i865)
1785_0_main_Load(EOS(STATIC_1785), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656) → 1787_0_main_Load(EOS(STATIC_1787), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, i656)
2140_0_insert_Return(EOS(STATIC_2140), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823) → 2141_0_insert_Return(EOS(STATIC_2141), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i823)
2193_0_insert_Return(EOS(STATIC_2193), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874) → 2141_0_insert_Return(EOS(STATIC_2141), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i874)
2417_0_insert_Return(EOS(STATIC_2417), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896) → 2141_0_insert_Return(EOS(STATIC_2141), java.lang.Object(SearchTreeR.Tree(EOC)), i123, i656, java.lang.Object(SearchTreeR.Tree(EOC)), i896)
R rules:
1895_0_insert_Load(EOS(STATIC_1895), java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1905_0_insert_Load(EOS(STATIC_1905), java.lang.Object(SearchTreeR.Tree(EOC)), i712)
1905_0_insert_Load(EOS(STATIC_1905), java.lang.Object(SearchTreeR.Tree(EOC)), i712) → 1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(SearchTreeR.Tree(EOC)), i712)
2065_0_insert_Load(EOS(STATIC_2065), java.lang.Object(o965sub), i744) → 1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o965sub), i744)
2068_0_insert_Load(EOS(STATIC_2068), java.lang.Object(o966sub), i744) → 1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o966sub), i744)
1920_0_insert_Load(EOS(STATIC_1920), java.lang.Object(o879sub), i744) → 1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(o879sub), i744, i744)
1927_0_insert_Load(EOS(STATIC_1927), java.lang.Object(o879sub), i744, i744) → 1933_0_insert_FieldAccess(EOS(STATIC_1933), java.lang.Object(o879sub), i744, i744, java.lang.Object(o879sub))
1933_0_insert_FieldAccess(EOS(STATIC_1933), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1940_0_insert_FieldAccess(EOS(STATIC_1940), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1940_0_insert_FieldAccess(EOS(STATIC_1940), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1958_0_insert_GT(EOS(STATIC_1958), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1959_0_insert_GT(EOS(STATIC_1959), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759)
1958_0_insert_GT(EOS(STATIC_1958), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC)), i744) | >(i744, i759)
1959_0_insert_GT(EOS(STATIC_1959), java.lang.Object(SearchTreeR.Tree(EOC)), i744, i744, i759) → 1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC)), i744) | <=(i744, i759)
1969_0_insert_Load(EOS(STATIC_1969), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1981_0_insert_FieldAccess(EOS(STATIC_1981), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1970_0_insert_Load(EOS(STATIC_1970), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 1983_0_insert_FieldAccess(EOS(STATIC_1983), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
1981_0_insert_FieldAccess(EOS(STATIC_1981), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC)), i744, o899)
1983_0_insert_FieldAccess(EOS(STATIC_1983), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC)), i744, o898)
1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o965sub)) → 2009_0_insert_NONNULL(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o965sub))
1992_0_insert_NONNULL(EOS(STATIC_1992), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 2010_0_insert_NONNULL(EOS(STATIC_2010), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL)
1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o966sub)) → 2011_0_insert_NONNULL(EOS(STATIC_2011), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o966sub))
1994_0_insert_NONNULL(EOS(STATIC_1994), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 2012_0_insert_NONNULL(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL)
2009_0_insert_NONNULL(EOS(STATIC_2009), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o965sub)) → 2019_0_insert_Load(EOS(STATIC_2019), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2010_0_insert_NONNULL(EOS(STATIC_2010), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 2020_0_insert_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2011_0_insert_NONNULL(EOS(STATIC_2011), java.lang.Object(SearchTreeR.Tree(EOC)), i744, java.lang.Object(o966sub)) → 2022_0_insert_Load(EOS(STATIC_2022), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2012_0_insert_NONNULL(EOS(STATIC_2012), java.lang.Object(SearchTreeR.Tree(EOC)), i744, NULL) → 2023_0_insert_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2019_0_insert_Load(EOS(STATIC_2019), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2030_0_insert_FieldAccess(EOS(STATIC_2030), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2020_0_insert_Load(EOS(STATIC_2020), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2031_0_insert_New(EOS(STATIC_2031), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2022_0_insert_Load(EOS(STATIC_2022), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2033_0_insert_FieldAccess(EOS(STATIC_2033), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2023_0_insert_Load(EOS(STATIC_2023), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2034_0_insert_New(EOS(STATIC_2034), i744, java.lang.Object(SearchTreeR.Tree(EOC)))
2030_0_insert_FieldAccess(EOS(STATIC_2030), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2039_0_insert_Load(EOS(STATIC_2039), i744, java.lang.Object(o965sub))
2031_0_insert_New(EOS(STATIC_2031), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2041_0_insert_Duplicate(EOS(STATIC_2041), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2033_0_insert_FieldAccess(EOS(STATIC_2033), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2042_0_insert_Load(EOS(STATIC_2042), i744, java.lang.Object(o966sub))
2034_0_insert_New(EOS(STATIC_2034), i744, java.lang.Object(SearchTreeR.Tree(EOC))) → 2044_0_insert_Duplicate(EOS(STATIC_2044), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2039_0_insert_Load(EOS(STATIC_2039), i744, java.lang.Object(o965sub)) → 2047_0_insert_InvokeMethod(EOS(STATIC_2047), java.lang.Object(o965sub), i744)
2041_0_insert_Duplicate(EOS(STATIC_2041), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2049_0_insert_Load(EOS(STATIC_2049), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2042_0_insert_Load(EOS(STATIC_2042), i744, java.lang.Object(o966sub)) → 2050_0_insert_InvokeMethod(EOS(STATIC_2050), java.lang.Object(o966sub), i744)
2044_0_insert_Duplicate(EOS(STATIC_2044), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2052_0_insert_Load(EOS(STATIC_2052), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2047_0_insert_InvokeMethod(EOS(STATIC_2047), java.lang.Object(o965sub), i744) → 2057_1_insert_InvokeMethod(2057_0_insert_Load(EOS(STATIC_2057), java.lang.Object(o965sub), i744), java.lang.Object(o965sub), i744)
2049_0_insert_Load(EOS(STATIC_2049), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2058_0_insert_InvokeMethod(EOS(STATIC_2058), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2050_0_insert_InvokeMethod(EOS(STATIC_2050), java.lang.Object(o966sub), i744) → 2060_1_insert_InvokeMethod(2060_0_insert_Load(EOS(STATIC_2060), java.lang.Object(o966sub), i744), java.lang.Object(o966sub), i744)
2052_0_insert_Load(EOS(STATIC_2052), i744, java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2062_0_insert_InvokeMethod(EOS(STATIC_2062), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2057_0_insert_Load(EOS(STATIC_2057), java.lang.Object(o965sub), i744) → 2065_0_insert_Load(EOS(STATIC_2065), java.lang.Object(o965sub), i744)
2057_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(o965sub), i813) → 2135_0_insert_Return(EOS(STATIC_2135), java.lang.Object(SearchTreeR.Tree(EOC)), i813)
2057_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(o965sub), i830) → 2145_0_insert_Return(EOS(STATIC_2145), java.lang.Object(SearchTreeR.Tree(EOC)), i830)
2057_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(o965sub), i878) → 2196_0_insert_Return(EOS(STATIC_2196), java.lang.Object(SearchTreeR.Tree(EOC)), i878)
2057_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(o965sub), i900) → 2421_0_insert_Return(EOS(STATIC_2421), java.lang.Object(SearchTreeR.Tree(EOC)), i900)
2058_0_insert_InvokeMethod(EOS(STATIC_2058), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2067_0_<init>_Load(EOS(STATIC_2067), 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)
2060_0_insert_Load(EOS(STATIC_2060), java.lang.Object(o966sub), i744) → 2068_0_insert_Load(EOS(STATIC_2068), java.lang.Object(o966sub), i744)
2060_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(o966sub), i820) → 2136_0_insert_Return(EOS(STATIC_2136), java.lang.Object(SearchTreeR.Tree(EOC)), i820)
2060_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(o966sub), i837) → 2152_0_insert_Return(EOS(STATIC_2152), java.lang.Object(SearchTreeR.Tree(EOC)), i837)
2060_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(o966sub), i882) → 2200_0_insert_Return(EOS(STATIC_2200), java.lang.Object(SearchTreeR.Tree(EOC)), i882)
2060_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(o966sub), i904) → 2424_0_insert_Return(EOS(STATIC_2424), java.lang.Object(SearchTreeR.Tree(EOC)), i904)
2062_0_insert_InvokeMethod(EOS(STATIC_2062), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2070_0_<init>_Load(EOS(STATIC_2070), 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)
2067_0_<init>_Load(EOS(STATIC_2067), 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) → 2074_0_<init>_InvokeMethod(EOS(STATIC_2074), 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)))
2070_0_<init>_Load(EOS(STATIC_2070), 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) → 2077_0_<init>_InvokeMethod(EOS(STATIC_2077), 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)))
2074_0_<init>_InvokeMethod(EOS(STATIC_2074), 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))) → 2079_0_<init>_Load(EOS(STATIC_2079), 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)
2077_0_<init>_InvokeMethod(EOS(STATIC_2077), 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))) → 2081_0_<init>_Load(EOS(STATIC_2081), 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)
2079_0_<init>_Load(EOS(STATIC_2079), 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) → 2082_0_<init>_Load(EOS(STATIC_2082), 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)))
2081_0_<init>_Load(EOS(STATIC_2081), 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) → 2084_0_<init>_Load(EOS(STATIC_2084), 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)))
2082_0_<init>_Load(EOS(STATIC_2082), 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))) → 2085_0_<init>_FieldAccess(EOS(STATIC_2085), 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)
2084_0_<init>_Load(EOS(STATIC_2084), 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))) → 2087_0_<init>_FieldAccess(EOS(STATIC_2087), 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)
2085_0_<init>_FieldAccess(EOS(STATIC_2085), 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) → 2089_0_<init>_Return(EOS(STATIC_2089), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2087_0_<init>_FieldAccess(EOS(STATIC_2087), 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) → 2091_0_<init>_Return(EOS(STATIC_2091), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744)
2089_0_<init>_Return(EOS(STATIC_2089), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2093_0_insert_FieldAccess(EOS(STATIC_2093), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2091_0_<init>_Return(EOS(STATIC_2091), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)), i744) → 2094_0_insert_FieldAccess(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC)))
2093_0_insert_FieldAccess(EOS(STATIC_2093), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2096_0_insert_JMP(EOS(STATIC_2096))
2094_0_insert_FieldAccess(EOS(STATIC_2094), java.lang.Object(SearchTreeR.Tree(EOC)), java.lang.Object(SearchTreeR.Tree(EOC))) → 2098_0_insert_JMP(EOS(STATIC_2098))
2096_0_insert_JMP(EOS(STATIC_2096)) → 2100_0_insert_Return(EOS(STATIC_2100))
2098_0_insert_JMP(EOS(STATIC_2098)) → 2101_0_insert_Return(EOS(STATIC_2101))
2100_0_insert_Return(EOS(STATIC_2100)) → 2160_0_insert_Return(EOS(STATIC_2160))
2101_0_insert_Return(EOS(STATIC_2101)) → 2168_0_insert_Return(EOS(STATIC_2168))
2135_0_insert_Return(EOS(STATIC_2135), java.lang.Object(SearchTreeR.Tree(EOC)), i813) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i813)
2136_0_insert_Return(EOS(STATIC_2136), java.lang.Object(SearchTreeR.Tree(EOC)), i820) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i820)
2145_0_insert_Return(EOS(STATIC_2145), java.lang.Object(SearchTreeR.Tree(EOC)), i830) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i830)
2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i846) → 2160_0_insert_Return(EOS(STATIC_2160))
2152_0_insert_Return(EOS(STATIC_2152), java.lang.Object(SearchTreeR.Tree(EOC)), i837) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i837)
2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i854) → 2162_0_insert_JMP(EOS(STATIC_2162))
2162_0_insert_JMP(EOS(STATIC_2162)) → 2168_0_insert_Return(EOS(STATIC_2168))
2196_0_insert_Return(EOS(STATIC_2196), java.lang.Object(SearchTreeR.Tree(EOC)), i878) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i878)
2200_0_insert_Return(EOS(STATIC_2200), java.lang.Object(SearchTreeR.Tree(EOC)), i882) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i882)
2421_0_insert_Return(EOS(STATIC_2421), java.lang.Object(SearchTreeR.Tree(EOC)), i900) → 2146_0_insert_Return(EOS(STATIC_2146), java.lang.Object(SearchTreeR.Tree(EOC)), i900)
2424_0_insert_Return(EOS(STATIC_2424), java.lang.Object(SearchTreeR.Tree(EOC)), i904) → 2153_0_insert_Return(EOS(STATIC_2153), java.lang.Object(SearchTreeR.Tree(EOC)), i904)

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


P rules:
1895_1_main_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1895_1_main_InvokeMethod(1895_0_insert_Load(EOS(STATIC_1895), 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)))
1895_1_main_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1895_1_main_InvokeMethod(1895_0_insert_Load(EOS(STATIC_1895), 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)))
1895_1_main_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1895_1_main_InvokeMethod(1895_0_insert_Load(EOS(STATIC_1895), 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)))
1895_1_main_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x1, java.lang.Object(SearchTreeR.Tree(EOC)), x2) → 1895_1_main_InvokeMethod(1895_0_insert_Load(EOS(STATIC_1895), 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:
1895_0_insert_Load(EOS(STATIC_1895), java.lang.Object(SearchTreeR.Tree(EOC)), x0) → 1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x2), java.lang.Object(SearchTreeR.Tree(EOC)), x0) | <(x1, x0)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2060_1_insert_InvokeMethod(1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x2), java.lang.Object(SearchTreeR.Tree(EOC)), x0) | >=(x1, x0)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2160_0_insert_Return(EOS(STATIC_2160)) | <(x1, x0)
1949_0_insert_GT(EOS(STATIC_1949), java.lang.Object(SearchTreeR.Tree(EOC)), x0, x0, x1) → 2168_0_insert_Return(EOS(STATIC_2168)) | >=(x1, x0)
2057_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2057_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(x0), x1) → 2160_0_insert_Return(EOS(STATIC_2160))
2060_1_insert_InvokeMethod(2100_0_insert_Return(EOS(STATIC_2100)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2101_0_insert_Return(EOS(STATIC_2101)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2160_0_insert_Return(EOS(STATIC_2160)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))
2060_1_insert_InvokeMethod(2168_0_insert_Return(EOS(STATIC_2168)), java.lang.Object(x0), x1) → 2168_0_insert_Return(EOS(STATIC_2168))

Filtered ground terms:



1895_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1895_1_main_InvokeMethod(x1, x3, x4, x6)
SearchTreeR.Tree(x1) → SearchTreeR.Tree
1895_0_insert_Load(x1, x2, x3) → 1895_0_insert_Load(x3)
Cond_1895_1_main_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1895_1_main_InvokeMethod3(x1, x4, x5, x7, x8)
2168_0_insert_Return(x1) → 2168_0_insert_Return
Cond_1895_1_main_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1895_1_main_InvokeMethod2(x1, x4, x5, x7, x8)
2160_0_insert_Return(x1) → 2160_0_insert_Return
Cond_1895_1_main_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1895_1_main_InvokeMethod1(x1, x4, x5, x7, x8)
2101_0_insert_Return(x1) → 2101_0_insert_Return
Cond_1895_1_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_1895_1_main_InvokeMethod(x1, x4, x5, x7, x8)
2100_0_insert_Return(x1) → 2100_0_insert_Return
Cond_1949_0_insert_GT3(x1, x2, x3, x4, x5, x6) → Cond_1949_0_insert_GT3(x1, x4, x5, x6)
1949_0_insert_GT(x1, x2, x3, x4, x5) → 1949_0_insert_GT(x3, x4, x5)
Cond_1949_0_insert_GT2(x1, x2, x3, x4, x5, x6) → Cond_1949_0_insert_GT2(x1, x4, x5, x6)
Cond_1949_0_insert_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_1949_0_insert_GT1(x1, x4, x5, x6, x7)
Cond_1949_0_insert_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_1949_0_insert_GT(x1, x4, x5, x6, x7)

Filtered duplicate args:



1949_0_insert_GT(x1, x2, x3) → 1949_0_insert_GT(x2, x3)
Cond_1949_0_insert_GT(x1, x2, x3, x4, x5) → Cond_1949_0_insert_GT(x1, x3, x4, x5)
Cond_1949_0_insert_GT1(x1, x2, x3, x4, x5) → Cond_1949_0_insert_GT1(x1, x3, x4, x5)
Cond_1949_0_insert_GT2(x1, x2, x3, x4) → Cond_1949_0_insert_GT2(x1, x3, x4)
Cond_1949_0_insert_GT3(x1, x2, x3, x4) → Cond_1949_0_insert_GT3(x1, x3, x4)

Filtered unneeded arguments:



1895_1_main_InvokeMethod(x1, x2, x3, x4) → 1895_1_main_InvokeMethod(x1, x2, x3)
Cond_1895_1_main_InvokeMethod(x1, x2, x3, x4, x5) → Cond_1895_1_main_InvokeMethod(x1, x2, x3, x5)
Cond_1895_1_main_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_1895_1_main_InvokeMethod1(x1, x2, x3, x5)
Cond_1895_1_main_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_1895_1_main_InvokeMethod2(x1, x2, x3, x5)
Cond_1895_1_main_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_1895_1_main_InvokeMethod3(x1, x2, x3, x5)
Cond_1949_0_insert_GT(x1, x2, x3, x4) → Cond_1949_0_insert_GT(x1, x2, x4)
2057_1_insert_InvokeMethod(x1, x2, x3) → 2057_1_insert_InvokeMethod(x1, x2)
Cond_1949_0_insert_GT1(x1, x2, x3, x4) → Cond_1949_0_insert_GT1(x1, x2, x4)
2060_1_insert_InvokeMethod(x1, x2, x3) → 2060_1_insert_InvokeMethod(x1, x2)
Cond_1949_0_insert_GT2(x1, x2, x3) → Cond_1949_0_insert_GT2(x1)
Cond_1949_0_insert_GT3(x1, x2, x3) → Cond_1949_0_insert_GT3(x1)

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


P rules:
1895_1_main_InvokeMethod(2100_0_insert_Return, x0, x1) → 1895_1_main_InvokeMethod(1895_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1895_1_main_InvokeMethod(2101_0_insert_Return, x0, x1) → 1895_1_main_InvokeMethod(1895_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1895_1_main_InvokeMethod(2160_0_insert_Return, x0, x1) → 1895_1_main_InvokeMethod(1895_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
1895_1_main_InvokeMethod(2168_0_insert_Return, x0, x1) → 1895_1_main_InvokeMethod(1895_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
R rules:
1895_0_insert_Load(x0) → 1949_0_insert_GT(x0, x1)
1949_0_insert_GT(x0, x1) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree)) | <(x1, x0)
1949_0_insert_GT(x0, x1) → 2060_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree)) | >=(x1, x0)
1949_0_insert_GT(x0, x1) → 2160_0_insert_Return | <(x1, x0)
1949_0_insert_GT(x0, x1) → 2168_0_insert_Return | >=(x1, x0)
2057_1_insert_InvokeMethod(2100_0_insert_Return, java.lang.Object(x0)) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2101_0_insert_Return, java.lang.Object(x0)) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2160_0_insert_Return, java.lang.Object(x0)) → 2160_0_insert_Return
2057_1_insert_InvokeMethod(2168_0_insert_Return, java.lang.Object(x0)) → 2160_0_insert_Return
2060_1_insert_InvokeMethod(2100_0_insert_Return, java.lang.Object(x0)) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2101_0_insert_Return, java.lang.Object(x0)) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2160_0_insert_Return, java.lang.Object(x0)) → 2168_0_insert_Return
2060_1_insert_InvokeMethod(2168_0_insert_Return, java.lang.Object(x0)) → 2168_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2057_1_insert_InvokeMethod_2, 2060_1_insert_InvokeMethod_2]=2057_1_insert_InvokeMethod_2, [SearchTreeR.Tree, 2160_0_insert_Return, 2168_0_insert_Return, 2100_0_insert_Return, 2101_0_insert_Return]=SearchTreeR.Tree, [Cond_1895_1_main_InvokeMethod_5, Cond_1895_1_main_InvokeMethod1_5, Cond_1895_1_main_InvokeMethod2_5, Cond_1895_1_main_InvokeMethod3_5]=Cond_1895_1_main_InvokeMethod_5}


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


P rules:
1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), SearchTreeR.Tree, x0, x1, x3)
COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3), x0, +(x1, 1))
R rules:
1895_0_insert_Load(x0) → 1949_0_insert_GT(x0, x1)
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT(<(x1, x0), x0, x1, x2)
Cond_1949_0_insert_GT(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT1(>=(x1, x0), x0, x1, x2)
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT2(<(x1, x0), x0, x1)
Cond_1949_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT3(>=(x1, x0), x0, x1)
Cond_1949_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2057_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:
1895_0_insert_Load(x0) → 1949_0_insert_GT(x0, x1)
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_1949_0_insert_GT(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT2(x1 < x0, x0, x1)
Cond_1949_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT3(x1 >= x0, x0, x1)
Cond_1949_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2057_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0)) → SearchTreeR.Tree

The integer pair graph contains the following rules and edges:
(0): 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_1_MAIN_INVOKEMETHOD(x3[0] > -1 && x1[0] > -1 && x0[0] > x1[0] + 1, SearchTreeR.Tree, x0[0], x1[0], x3[0])
(1): COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1895_1_MAIN_INVOKEMETHOD(1895_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 (1895_0_insert_Load(x3[1]) →* SearchTreeR.Treex0[1]* x0[0]x1[1] + 1* x1[0])



The set Q consists of the following terms:
1895_0_insert_Load(x0)
1949_0_insert_GT(x0, x1)
Cond_1949_0_insert_GT(TRUE, x0, x1, x2)
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2)
Cond_1949_0_insert_GT2(TRUE, x0, x1)
Cond_1949_0_insert_GT3(TRUE, x0, x1)
2057_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@6b9f3f1f 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 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1895_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_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0]), COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)) which results in the following constraint:

    (1)    (1895_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]11895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0])≥NonInfC∧1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0])≥COND_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])∧(UIncreasing(COND_1895_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)    (1895_0_insert_Load(x3[1])=SearchTreeR.Tree>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥NonInfC∧1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥COND_1895_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_1895_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 1895_0_insert_Load(x3[1])=SearchTreeR.Tree which results in the following new constraint:

    (3)    (1949_0_insert_GT(x0, x1)=SearchTreeR.Tree>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥NonInfC∧1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], +(x1[1], 1))≥COND_1895_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_1895_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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)bni_46 + (-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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)bni_46 + (-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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(-1)bni_46 + (-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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(2)bni_46 + (-1)Bound*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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(2)bni_46 + (-1)Bound*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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(2)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)







For Pair COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3), x0, +(x1, 1)) the following chains were created:
  • We consider the chain 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0]), COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_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]1895_0_insert_Load(x3[1])=SearchTreeR.Treex0[1]=x0[0]1+(x1[1], 1)=x1[0]1COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1])≥NonInfC∧COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1])≥1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))∧(UIncreasing(1895_1_MAIN_INVOKEMETHOD(1895_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)    (1895_0_insert_Load(x3[0])=SearchTreeR.Tree>(x0[0], +(x1[0], 1))=TRUE>(x3[0], -1)=TRUE>(x1[0], -1)=TRUECOND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x3[0])≥NonInfC∧COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x3[0])≥1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[0]), x0[0], +(x1[0], 1))∧(UIncreasing(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥))



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

    (12)    (1949_0_insert_GT(x2, x3)=SearchTreeR.Tree>(x0[0], +(x1[0], 1))=TRUE>(x2, -1)=TRUE>(x1[0], -1)=TRUECOND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x2)≥NonInfC∧COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[0], x1[0], x2)≥1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x2), x0[0], +(x1[0], 1))∧(UIncreasing(1895_1_MAIN_INVOKEMETHOD(1895_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(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-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(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-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(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-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(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_48 + (2)bni_48] + [bni_48]x0[0] ≥ 0∧[1 + (-1)bso_49] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0, x1) → COND_1895_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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(2)bni_46 + (-1)Bound*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_1895_1_MAIN_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), SearchTreeR.Tree, x0[0], x1[0], x3[0])), ≥)∧[(2)bni_46 + (-1)Bound*bni_46] + [bni_46]x0[0] ≥ 0∧[(-1)bso_47] ≥ 0)

  • COND_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0, x1, x3) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3), x0, +(x1, 1))
    • (x0[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_48 + (2)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) = 0   
POL(FALSE) = [2]   
POL(1895_0_insert_Load(x1)) = [-1]   
POL(1949_0_insert_GT(x1, x2)) = [-1]   
POL(Cond_1949_0_insert_GT(x1, x2, x3, x4)) = [-1]   
POL(<(x1, x2)) = [-1]   
POL(2057_1_insert_InvokeMethod(x1, x2)) = [-1] + [-1]x2   
POL(java.lang.Object(x1)) = 0   
POL(SearchTreeR.Tree) = [-1]   
POL(Cond_1949_0_insert_GT1(x1, x2, x3, x4)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(Cond_1949_0_insert_GT2(x1, x2, x3)) = [-1]   
POL(Cond_1949_0_insert_GT3(x1, x2, x3)) = [-1]   
POL(1895_1_MAIN_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3 + x2 + [-1]x1   
POL(COND_1895_1_MAIN_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + x3 + [-1]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_1895_1_MAIN_INVOKEMETHOD(TRUE, SearchTreeR.Tree, x0[1], x1[1], x3[1]) → 1895_1_MAIN_INVOKEMETHOD(1895_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in Pbound:

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

The following pairs are in P:

1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_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:

TRUE1&&(TRUE, TRUE)1
FALSE1&&(TRUE, FALSE)1
FALSE1&&(FALSE, TRUE)1
FALSE1&&(FALSE, FALSE)1
1895_0_insert_Load(x0)11949_0_insert_GT(x0, x1)1
1949_0_insert_GT(x0, x1)1Cond_1949_0_insert_GT(<(x1, x0), x0, x1, x2)1
1949_0_insert_GT(x0, x1)1Cond_1949_0_insert_GT1(>=(x1, x0), x0, x1, x2)1
1949_0_insert_GT(x0, x1)1Cond_1949_0_insert_GT2(<(x1, x0), x0, x1)1
1949_0_insert_GT(x0, x1)1Cond_1949_0_insert_GT3(>=(x1, x0), x0, x1)1
Cond_1949_0_insert_GT(TRUE, x0, x1, x2)12057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))1
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2)12057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))1
2057_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0))1SearchTreeR.Tree1
Cond_1949_0_insert_GT2(TRUE, x0, x1)1SearchTreeR.Tree1
Cond_1949_0_insert_GT3(TRUE, x0, x1)1SearchTreeR.Tree1

(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:
1895_0_insert_Load(x0) → 1949_0_insert_GT(x0, x1)
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_1949_0_insert_GT(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2) → 2057_1_insert_InvokeMethod(1949_0_insert_GT(x0, x2), java.lang.Object(SearchTreeR.Tree))
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT2(x1 < x0, x0, x1)
Cond_1949_0_insert_GT2(TRUE, x0, x1) → SearchTreeR.Tree
1949_0_insert_GT(x0, x1) → Cond_1949_0_insert_GT3(x1 >= x0, x0, x1)
Cond_1949_0_insert_GT3(TRUE, x0, x1) → SearchTreeR.Tree
2057_1_insert_InvokeMethod(SearchTreeR.Tree, java.lang.Object(x0)) → SearchTreeR.Tree

The integer pair graph contains the following rules and edges:
(0): 1895_1_MAIN_INVOKEMETHOD(SearchTreeR.Tree, x0[0], x1[0]) → COND_1895_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:
1895_0_insert_Load(x0)
1949_0_insert_GT(x0, x1)
Cond_1949_0_insert_GT(TRUE, x0, x1, x2)
Cond_1949_0_insert_GT1(TRUE, x0, x1, x2)
Cond_1949_0_insert_GT2(TRUE, x0, x1)
Cond_1949_0_insert_GT3(TRUE, x0, x1)
2057_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