(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_22 (Sun Microsystems Inc.) Main-Class: Gopher/Gopher
package Gopher;
public class Gopher {
// by Boyer & Moore (1979)

public static Tree gopher(Tree x) {
if (x == null) return null;
if (x.left == null) return x;
else return gopher(new Tree(x.left.left, new Tree(x.left.right, x.right)));
}

public static void main(String[] args) {
Random.args = args;
Tree x = Tree.createTree(Random.random());
Tree y = gopher(x);
}
}


package Gopher;

public class Random {
static String[] args;
static int index = 0;

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


package Gopher;

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

public static Tree createTree(final int numElements) {
final Tree t = new Tree(Random.random());

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

return t;
}

public Tree(final Tree l, final Tree r) {
this.left = l;
this.right = r;
}

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:
Gopher.Gopher.main([Ljava/lang/String;)V: Graph of 142 nodes with 0 SCCs.

Gopher.Tree.createTree(I)LGopher/Tree;: Graph of 194 nodes with 1 SCC.

Gopher.Gopher.gopher(LGopher/Tree;)LGopher/Tree;: Graph of 58 nodes with 0 SCCs.

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


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 3 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: Gopher.Tree.insert(I)V
SCC calls the following helper methods: Gopher.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:
2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(o1469sub), i1134, i1134) → 2453_0_insert_FieldAccess(EOS(STATIC_2453), java.lang.Object(o1469sub), i1134, i1134, java.lang.Object(o1469sub))
2453_0_insert_FieldAccess(EOS(STATIC_2453), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2462_0_insert_FieldAccess(EOS(STATIC_2462), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2462_0_insert_FieldAccess(EOS(STATIC_2462), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2480_0_insert_GT(EOS(STATIC_2480), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2481_0_insert_GT(EOS(STATIC_2481), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2480_0_insert_GT(EOS(STATIC_2480), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2488_0_insert_Load(EOS(STATIC_2488), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) | >(i1134, i1163)
2488_0_insert_Load(EOS(STATIC_2488), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) → 2498_0_insert_FieldAccess(EOS(STATIC_2498), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2498_0_insert_FieldAccess(EOS(STATIC_2498), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, o1497)
2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub)) → 2521_0_insert_NONNULL(EOS(STATIC_2521), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub))
2521_0_insert_NONNULL(EOS(STATIC_2521), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub)) → 2534_0_insert_Load(EOS(STATIC_2534), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134)
2534_0_insert_Load(EOS(STATIC_2534), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134) → 2554_0_insert_FieldAccess(EOS(STATIC_2554), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)))
2554_0_insert_FieldAccess(EOS(STATIC_2554), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496))) → 2568_0_insert_Load(EOS(STATIC_2568), i1134, java.lang.Object(o1559sub))
2568_0_insert_Load(EOS(STATIC_2568), i1134, java.lang.Object(o1559sub)) → 2584_0_insert_InvokeMethod(EOS(STATIC_2584), java.lang.Object(o1559sub), i1134)
2584_0_insert_InvokeMethod(EOS(STATIC_2584), java.lang.Object(o1559sub), i1134) → 2595_1_insert_InvokeMethod(2595_0_insert_Load(EOS(STATIC_2595), java.lang.Object(o1559sub), i1134), java.lang.Object(o1559sub), i1134)
2595_0_insert_Load(EOS(STATIC_2595), java.lang.Object(o1559sub), i1134) → 2606_0_insert_Load(EOS(STATIC_2606), java.lang.Object(o1559sub), i1134)
2606_0_insert_Load(EOS(STATIC_2606), java.lang.Object(o1559sub), i1134) → 2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1559sub), i1134)
2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1469sub), i1134) → 2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(o1469sub), i1134, i1134)
2481_0_insert_GT(EOS(STATIC_2481), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2489_0_insert_Load(EOS(STATIC_2489), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) | <=(i1134, i1163)
2489_0_insert_Load(EOS(STATIC_2489), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) → 2499_0_insert_FieldAccess(EOS(STATIC_2499), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2499_0_insert_FieldAccess(EOS(STATIC_2499), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, o1496)
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub)) → 2524_0_insert_NONNULL(EOS(STATIC_2524), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub))
2524_0_insert_NONNULL(EOS(STATIC_2524), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub)) → 2536_0_insert_Load(EOS(STATIC_2536), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134)
2536_0_insert_Load(EOS(STATIC_2536), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134) → 2557_0_insert_FieldAccess(EOS(STATIC_2557), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))))
2557_0_insert_FieldAccess(EOS(STATIC_2557), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub)))) → 2571_0_insert_Load(EOS(STATIC_2571), i1134, java.lang.Object(o1560sub))
2571_0_insert_Load(EOS(STATIC_2571), i1134, java.lang.Object(o1560sub)) → 2587_0_insert_InvokeMethod(EOS(STATIC_2587), java.lang.Object(o1560sub), i1134)
2587_0_insert_InvokeMethod(EOS(STATIC_2587), java.lang.Object(o1560sub), i1134) → 2597_1_insert_InvokeMethod(2597_0_insert_Load(EOS(STATIC_2597), java.lang.Object(o1560sub), i1134), java.lang.Object(o1560sub), i1134)
2597_0_insert_Load(EOS(STATIC_2597), java.lang.Object(o1560sub), i1134) → 2609_0_insert_Load(EOS(STATIC_2609), java.lang.Object(o1560sub), i1134)
2609_0_insert_Load(EOS(STATIC_2609), java.lang.Object(o1560sub), i1134) → 2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1560sub), i1134)
R rules:
2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL) → 2522_0_insert_NONNULL(EOS(STATIC_2522), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL)
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL) → 2525_0_insert_NONNULL(EOS(STATIC_2525), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL)
2522_0_insert_NONNULL(EOS(STATIC_2522), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL) → 2535_0_insert_Load(EOS(STATIC_2535), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134)
2525_0_insert_NONNULL(EOS(STATIC_2525), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL) → 2537_0_insert_Load(EOS(STATIC_2537), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134)
2535_0_insert_Load(EOS(STATIC_2535), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134) → 2555_0_insert_New(EOS(STATIC_2555), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)))
2537_0_insert_Load(EOS(STATIC_2537), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134) → 2558_0_insert_New(EOS(STATIC_2558), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)))
2555_0_insert_New(EOS(STATIC_2555), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496))) → 2569_0_insert_Duplicate(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)))
2558_0_insert_New(EOS(STATIC_2558), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL))) → 2572_0_insert_Duplicate(EOS(STATIC_2572), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)))
2569_0_insert_Duplicate(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL))) → 2585_0_insert_Load(EOS(STATIC_2585), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | =(matching1, 0)
2572_0_insert_Duplicate(EOS(STATIC_2572), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL))) → 2588_0_insert_Load(EOS(STATIC_2588), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | =(matching1, 0)
2585_0_insert_Load(EOS(STATIC_2585), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL))) → 2596_0_insert_InvokeMethod(EOS(STATIC_2596), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(=(matching1, 0), =(matching2, 0))
2588_0_insert_Load(EOS(STATIC_2588), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL))) → 2598_0_insert_InvokeMethod(EOS(STATIC_2598), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(=(matching1, 0), =(matching2, 0))
2595_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(o1559sub), i1279) → 2688_0_insert_Return(EOS(STATIC_2688), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279)
2595_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(o1559sub), i1296) → 2700_0_insert_Return(EOS(STATIC_2700), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296)
2595_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(o1559sub), i1344) → 2750_0_insert_Return(EOS(STATIC_2750), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1344)
2595_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(o1559sub), i1366) → 2768_0_insert_Return(EOS(STATIC_2768), java.lang.Object(Gopher.Tree(EOC, i1365, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1366)
2596_0_insert_InvokeMethod(EOS(STATIC_2596), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134) → 2607_0_<init>_Load(EOS(STATIC_2607), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(=(matching1, 0), =(matching2, 0))
2597_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(o1560sub), i1286) → 2689_0_insert_Return(EOS(STATIC_2689), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286)
2597_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(o1560sub), i1303) → 2707_0_insert_Return(EOS(STATIC_2707), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303)
2597_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(o1560sub), i1348) → 2754_0_insert_Return(EOS(STATIC_2754), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1348)
2597_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(o1560sub), i1370) → 2771_0_insert_Return(EOS(STATIC_2771), java.lang.Object(Gopher.Tree(EOC, i1369, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1370)
2598_0_insert_InvokeMethod(EOS(STATIC_2598), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134) → 2610_0_<init>_Load(EOS(STATIC_2610), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(=(matching1, 0), =(matching2, 0))
2607_0_<init>_Load(EOS(STATIC_2607), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2618_0_<init>_InvokeMethod(EOS(STATIC_2618), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2610_0_<init>_Load(EOS(STATIC_2610), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2621_0_<init>_InvokeMethod(EOS(STATIC_2621), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2618_0_<init>_InvokeMethod(EOS(STATIC_2618), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching4, NULL, NULL))) → 2629_0_<init>_Load(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
2621_0_<init>_InvokeMethod(EOS(STATIC_2621), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching4, NULL, NULL))) → 2631_0_<init>_Load(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(&&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0)), =(matching4, 0))
2629_0_<init>_Load(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2634_0_<init>_Load(EOS(STATIC_2634), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2631_0_<init>_Load(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2635_0_<init>_Load(EOS(STATIC_2635), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL))) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2634_0_<init>_Load(EOS(STATIC_2634), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL))) → 2638_0_<init>_FieldAccess(EOS(STATIC_2638), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2635_0_<init>_Load(EOS(STATIC_2635), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL))) → 2639_0_<init>_FieldAccess(EOS(STATIC_2639), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)), i1134) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2638_0_<init>_FieldAccess(EOS(STATIC_2638), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2641_0_<init>_Return(EOS(STATIC_2641), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), i1134) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2639_0_<init>_FieldAccess(EOS(STATIC_2639), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, matching2, NULL, NULL)), i1134, java.lang.Object(Gopher.Tree(EOC, matching3, NULL, NULL)), i1134) → 2643_0_<init>_Return(EOS(STATIC_2643), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), i1134) | &&(&&(=(matching1, 0), =(matching2, 0)), =(matching3, 0))
2641_0_<init>_Return(EOS(STATIC_2641), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), i1134) → 2647_0_insert_FieldAccess(EOS(STATIC_2647), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)))
2643_0_<init>_Return(EOS(STATIC_2643), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)), i1134) → 2648_0_insert_FieldAccess(EOS(STATIC_2648), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)))
2647_0_insert_FieldAccess(EOS(STATIC_2647), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL))) → 2653_0_insert_JMP(EOS(STATIC_2653))
2648_0_insert_FieldAccess(EOS(STATIC_2648), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL))) → 2655_0_insert_JMP(EOS(STATIC_2655))
2653_0_insert_JMP(EOS(STATIC_2653)) → 2658_0_insert_Return(EOS(STATIC_2658))
2655_0_insert_JMP(EOS(STATIC_2655)) → 2660_0_insert_Return(EOS(STATIC_2660))
2658_0_insert_Return(EOS(STATIC_2658)) → 2720_0_insert_Return(EOS(STATIC_2720))
2660_0_insert_Return(EOS(STATIC_2660)) → 2732_0_insert_Return(EOS(STATIC_2732))
2688_0_insert_Return(EOS(STATIC_2688), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279)
2689_0_insert_Return(EOS(STATIC_2689), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286)
2700_0_insert_Return(EOS(STATIC_2700), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296)
2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), i1312) → 2720_0_insert_Return(EOS(STATIC_2720))
2707_0_insert_Return(EOS(STATIC_2707), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303)
2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)), i1320) → 2721_0_insert_JMP(EOS(STATIC_2721))
2721_0_insert_JMP(EOS(STATIC_2721)) → 2732_0_insert_Return(EOS(STATIC_2732))
2750_0_insert_Return(EOS(STATIC_2750), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1344) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1344)
2754_0_insert_Return(EOS(STATIC_2754), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1348) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1743, o1742)), o1740)), i1348)
2768_0_insert_Return(EOS(STATIC_2768), java.lang.Object(Gopher.Tree(EOC, i1365, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1366) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC, i1365, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1366)
2771_0_insert_Return(EOS(STATIC_2771), java.lang.Object(Gopher.Tree(EOC, i1369, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1370) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC, i1369, o1763, java.lang.Object(Gopher.Tree(EOC, i1319, o1762, o1761)))), i1370)

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


P rules:
2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(x1), x2)), x3, x3) → 2595_1_insert_InvokeMethod(2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(x1), x3, x3), java.lang.Object(x1), x3) | >(x3, x0)
2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(Gopher.Tree(EOC, x0, x1, java.lang.Object(x2))), x3, x3) → 2597_1_insert_InvokeMethod(2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(x2), x3, x3), java.lang.Object(x2), x3) | <=(x3, x0)
R rules:
2595_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2597_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))

Filtered ground terms:



2446_0_insert_Load(x1, x2, x3, x4) → 2446_0_insert_Load(x2, x3, x4)
Cond_2446_0_insert_Load1(x1, x2, x3, x4, x5) → Cond_2446_0_insert_Load1(x1, x3, x4, x5)
Gopher.Tree(x1, x2, x3, x4) → Gopher.Tree(x2, x3, x4)
Cond_2446_0_insert_Load(x1, x2, x3, x4, x5) → Cond_2446_0_insert_Load(x1, x3, x4, x5)
2732_0_insert_Return(x1) → 2732_0_insert_Return
2720_0_insert_Return(x1) → 2720_0_insert_Return
2660_0_insert_Return(x1) → 2660_0_insert_Return
2658_0_insert_Return(x1) → 2658_0_insert_Return

Filtered duplicate args:



2446_0_insert_Load(x1, x2, x3) → 2446_0_insert_Load(x1, x3)
Cond_2446_0_insert_Load(x1, x2, x3, x4) → Cond_2446_0_insert_Load(x1, x2, x4)
Cond_2446_0_insert_Load1(x1, x2, x3, x4) → Cond_2446_0_insert_Load1(x1, x2, x4)

Filtered unneeded arguments:



2595_1_insert_InvokeMethod(x1, x2, x3) → 2595_1_insert_InvokeMethod(x1)
2597_1_insert_InvokeMethod(x1, x2, x3) → 2597_1_insert_InvokeMethod(x1)

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


P rules:
2446_0_insert_Load(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → 2595_1_insert_InvokeMethod(2446_0_insert_Load(java.lang.Object(x1), x3)) | >(x3, x0)
2446_0_insert_Load(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → 2597_1_insert_InvokeMethod(2446_0_insert_Load(java.lang.Object(x2), x3)) | <=(x3, x0)
R rules:
2595_1_insert_InvokeMethod(2658_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2660_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2720_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2732_0_insert_Return) → 2720_0_insert_Return
2597_1_insert_InvokeMethod(2658_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2660_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2720_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2732_0_insert_Return) → 2732_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2595_1_insert_InvokeMethod_1, 2597_1_insert_InvokeMethod_1]=2595_1_insert_InvokeMethod_1, [2658_0_insert_Return, 2720_0_insert_Return, 2660_0_insert_Return, 2732_0_insert_Return]=2658_0_insert_Return}


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


P rules:
2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_2446_0_INSERT_LOAD(>(x3, x0), java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3)
COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x1), x3)
2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_2446_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3)
COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x2), x3)
R rules:
2595_1_insert_InvokeMethod(2658_0_insert_Return) → 2658_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:
2595_1_insert_InvokeMethod(2658_0_insert_Return) → 2658_0_insert_Return

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

(0) -> (1), if (x3[0] > x0[0]java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])) →* java.lang.Object(Gopher.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(Gopher.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(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[1]* x3[2])


(2) -> (3), if (x3[2] <= x0[2]java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))) →* java.lang.Object(Gopher.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(Gopher.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(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[3]* x3[2])



The set Q consists of the following terms:
2595_1_insert_InvokeMethod(2658_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@61c3e76b 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 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_2446_0_INSERT_LOAD(>(x3, x0), java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) the following chains were created:
  • We consider the chain 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]) which results in the following constraint:

    (1)    (>(x3[0], x0[0])=TRUEjava.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])∧(UIncreasing(COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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])=TRUE2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])∧(UIncreasing(COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x1), x3) the following chains were created:
  • We consider the chain 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]java.lang.Object(x1[1])=java.lang.Object(Gopher.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1))∧x3[1]=x3[0]1COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(2446_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_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x2[0])), x3[0])≥NonInfC∧COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x2[0])), x3[0])≥2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0]1, java.lang.Object(x1[0]1), x2[0]1)), x3[0])∧(UIncreasing(2446_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(2446_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(2446_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(2446_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(2446_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 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))=java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1]))∧x3[0]=x3[1]java.lang.Object(x1[1])=java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))∧x3[1]=x3[2]COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥NonInfC∧COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1])≥2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])∧(UIncreasing(2446_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_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x2[0])), x3[0])≥NonInfC∧COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x2[0])), x3[0])≥2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[0])∧(UIncreasing(2446_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(2446_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(2446_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(2446_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(2446_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 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_2446_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) the following chains were created:
  • We consider the chain 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]) which results in the following constraint:

    (19)    (<=(x3[2], x0[2])=TRUEjava.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])∧(UIncreasing(COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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])=TRUE2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])∧(UIncreasing(COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x2), x3) the following chains were created:
  • We consider the chain 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]java.lang.Object(x2[3])=java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0]))∧x3[3]=x3[0]COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(2446_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_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])))), x3[2])≥NonInfC∧COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])))), x3[2])≥2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[2])∧(UIncreasing(2446_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(2446_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(2446_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(2446_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(2446_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 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2])))=java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3])))∧x3[2]=x3[3]java.lang.Object(x2[3])=java.lang.Object(Gopher.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1)))∧x3[3]=x3[2]1COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥NonInfC∧COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3])≥2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])∧(UIncreasing(2446_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_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(Gopher.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))))), x3[2])≥NonInfC∧COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(Gopher.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))))), x3[2])≥2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2]1, x1[2]1, java.lang.Object(x2[2]1))), x3[2])∧(UIncreasing(2446_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(2446_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(2446_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(2446_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(2446_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.
  • 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_2446_0_INSERT_LOAD(>(x3, x0), java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x1), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(2446_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(2446_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)

  • 2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_2446_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → 2446_0_INSERT_LOAD(java.lang.Object(x2), x3)
    • (0 ≥ 0 ⇒ (UIncreasing(2446_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(2446_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(2595_1_insert_InvokeMethod(x1)) = 0   
POL(2658_0_insert_Return) = 0   
POL(2446_0_INSERT_LOAD(x1, x2)) = [-1] + x1   
POL(java.lang.Object(x1)) = [1] + x1   
POL(Gopher.Tree(x1, x2, x3)) = [2]x3 + x2 + x1   
POL(COND_2446_0_INSERT_LOAD(x1, x2, x3)) = [-1] + x2   
POL(>(x1, x2)) = 0   
POL(COND_2446_0_INSERT_LOAD1(x1, x2, x3)) = [-1] + x2   
POL(<=(x1, x2)) = 0   

The following pairs are in P>:

COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

The following pairs are in Pbound:

2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
COND_2446_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2446_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1])
2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])
COND_2446_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2446_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3])

The following pairs are in P:

2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2446_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
2446_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2446_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.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:
2595_1_insert_InvokeMethod(2658_0_insert_Return) → 2658_0_insert_Return

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


The set Q consists of the following terms:
2595_1_insert_InvokeMethod(2658_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: Gopher.Gopher.gopher(LGopher/Tree;)LGopher/Tree;
SCC calls the following helper methods: Gopher.Gopher.gopher(LGopher/Tree;)LGopher/Tree;
Performed SCC analyses: UsedFieldsAnalysis

(13) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 44 rules for P and 12 rules for R.


P rules:
2879_0_gopher_NONNULL(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2880_0_gopher_Load(EOS(STATIC_2880), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
2880_0_gopher_Load(EOS(STATIC_2880), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2881_0_gopher_FieldAccess(EOS(STATIC_2881), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
2881_0_gopher_FieldAccess(EOS(STATIC_2881), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2882_0_gopher_NONNULL(EOS(STATIC_2882), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), o2015)
2882_0_gopher_NONNULL(EOS(STATIC_2882), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub)) → 2884_0_gopher_NONNULL(EOS(STATIC_2884), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub))
2884_0_gopher_NONNULL(EOS(STATIC_2884), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub)) → 2886_0_gopher_New(EOS(STATIC_2886), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)))
2886_0_gopher_New(EOS(STATIC_2886), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016))) → 2889_0_gopher_Duplicate(EOS(STATIC_2889), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2889_0_gopher_Duplicate(EOS(STATIC_2889), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2891_0_gopher_Load(EOS(STATIC_2891), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2891_0_gopher_Load(EOS(STATIC_2891), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2894_0_gopher_FieldAccess(EOS(STATIC_2894), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)))
2894_0_gopher_FieldAccess(EOS(STATIC_2894), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016))) → 2897_0_gopher_FieldAccess(EOS(STATIC_2897), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(o2021sub))
2897_0_gopher_FieldAccess(EOS(STATIC_2897), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, o2034))) → 2902_0_gopher_FieldAccess(EOS(STATIC_2902), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, o2034)))
2902_0_gopher_FieldAccess(EOS(STATIC_2902), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, o2034))) → 2903_0_gopher_New(EOS(STATIC_2903), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033)
2903_0_gopher_New(EOS(STATIC_2903), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033) → 2904_0_gopher_Duplicate(EOS(STATIC_2904), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2904_0_gopher_Duplicate(EOS(STATIC_2904), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2905_0_gopher_Load(EOS(STATIC_2905), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2905_0_gopher_Load(EOS(STATIC_2905), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2907_0_gopher_FieldAccess(EOS(STATIC_2907), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)))
2907_0_gopher_FieldAccess(EOS(STATIC_2907), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016))) → 2908_0_gopher_FieldAccess(EOS(STATIC_2908), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, o2034)))
2908_0_gopher_FieldAccess(EOS(STATIC_2908), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, o2034))) → 2910_0_gopher_Load(EOS(STATIC_2910), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034)
2910_0_gopher_Load(EOS(STATIC_2910), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034) → 2911_0_gopher_FieldAccess(EOS(STATIC_2911), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016)))
2911_0_gopher_FieldAccess(EOS(STATIC_2911), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2033, o2034)), o2016))) → 2913_0_gopher_InvokeMethod(EOS(STATIC_2913), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016)
2913_0_gopher_InvokeMethod(EOS(STATIC_2913), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016) → 2914_0_<init>_Load(EOS(STATIC_2914), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016)
2914_0_<init>_Load(EOS(STATIC_2914), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016) → 2915_0_<init>_InvokeMethod(EOS(STATIC_2915), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2915_0_<init>_InvokeMethod(EOS(STATIC_2915), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2917_0_<init>_Load(EOS(STATIC_2917), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016)
2917_0_<init>_Load(EOS(STATIC_2917), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016) → 2918_0_<init>_Load(EOS(STATIC_2918), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2918_0_<init>_Load(EOS(STATIC_2918), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2919_0_<init>_FieldAccess(EOS(STATIC_2919), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034)
2919_0_<init>_FieldAccess(EOS(STATIC_2919), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034) → 2922_0_<init>_Load(EOS(STATIC_2922), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016)
2922_0_<init>_Load(EOS(STATIC_2922), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016) → 2923_0_<init>_Load(EOS(STATIC_2923), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)))
2923_0_<init>_Load(EOS(STATIC_2923), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL))) → 2925_0_<init>_FieldAccess(EOS(STATIC_2925), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016)
2925_0_<init>_FieldAccess(EOS(STATIC_2925), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016) → 2927_0_<init>_Return(EOS(STATIC_2927), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), o2034, o2016)
2927_0_<init>_Return(EOS(STATIC_2927), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), o2034, o2016) → 2928_0_gopher_InvokeMethod(EOS(STATIC_2928), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2928_0_gopher_InvokeMethod(EOS(STATIC_2928), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2930_0_<init>_Load(EOS(STATIC_2930), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2930_0_<init>_Load(EOS(STATIC_2930), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2932_0_<init>_InvokeMethod(EOS(STATIC_2932), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2932_0_<init>_InvokeMethod(EOS(STATIC_2932), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2935_0_<init>_Load(EOS(STATIC_2935), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2935_0_<init>_Load(EOS(STATIC_2935), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2937_0_<init>_Load(EOS(STATIC_2937), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2937_0_<init>_Load(EOS(STATIC_2937), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2940_0_<init>_FieldAccess(EOS(STATIC_2940), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033)
2940_0_<init>_FieldAccess(EOS(STATIC_2940), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033) → 2943_0_<init>_Load(EOS(STATIC_2943), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2943_0_<init>_Load(EOS(STATIC_2943), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2945_0_<init>_Load(EOS(STATIC_2945), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)))
2945_0_<init>_Load(EOS(STATIC_2945), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL))) → 2948_0_<init>_FieldAccess(EOS(STATIC_2948), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2948_0_<init>_FieldAccess(EOS(STATIC_2948), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2033, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2951_0_<init>_Return(EOS(STATIC_2951), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2951_0_<init>_Return(EOS(STATIC_2951), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2952_0_gopher_InvokeMethod(EOS(STATIC_2952), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2952_0_gopher_InvokeMethod(EOS(STATIC_2952), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2954_1_gopher_InvokeMethod(2954_0_gopher_Load(EOS(STATIC_2954), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2954_0_gopher_Load(EOS(STATIC_2954), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2955_0_gopher_Load(EOS(STATIC_2955), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2955_0_gopher_Load(EOS(STATIC_2955), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2959_0_gopher_Load(EOS(STATIC_2959), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2959_0_gopher_Load(EOS(STATIC_2959), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2017))))) → 2962_0_gopher_Load(EOS(STATIC_2962), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2017)))))
2962_0_gopher_Load(EOS(STATIC_2962), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2018, o2017))))) → 2877_0_gopher_Load(EOS(STATIC_2877), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2018, o2017)))))
2877_0_gopher_Load(EOS(STATIC_2877), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2879_0_gopher_NONNULL(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
R rules:
2882_0_gopher_NONNULL(EOS(STATIC_2882), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL) → 2885_0_gopher_NONNULL(EOS(STATIC_2885), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL)
2885_0_gopher_NONNULL(EOS(STATIC_2885), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL) → 2887_0_gopher_Load(EOS(STATIC_2887), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)))
2887_0_gopher_Load(EOS(STATIC_2887), java.lang.Object(Gopher.Tree(EOC, NULL, o2016))) → 2890_0_gopher_Return(EOS(STATIC_2890), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)))
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(EOS(STATIC_2890), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142))))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142))))) → 2970_0_gopher_Return(EOS(STATIC_2970), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(EOS(STATIC_2971), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2155, java.lang.Object(Gopher.Tree(EOC, o2157, o2158))))))), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, NULL, o2155)), java.lang.Object(Gopher.Tree(EOC, o2157, o2158))))) → 2978_0_gopher_Return(EOS(STATIC_2978), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, NULL, o2155)), java.lang.Object(Gopher.Tree(EOC, o2157, o2158)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2155, java.lang.Object(Gopher.Tree(EOC, o2157, o2158)))))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(EOS(STATIC_3123), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458))))))), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2540, o2541)), o2542)), java.lang.Object(Gopher.Tree(EOC, o2544, o2545))))) → 3149_0_gopher_Return(EOS(STATIC_3149), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2540, o2541)), o2542)), java.lang.Object(Gopher.Tree(EOC, o2544, o2545)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458)))))))
2970_0_gopher_Return(EOS(STATIC_2970), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142))))) → 2971_0_gopher_Return(EOS(STATIC_2971), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))))
2978_0_gopher_Return(EOS(STATIC_2978), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, NULL, o2155)), java.lang.Object(Gopher.Tree(EOC, o2157, o2158)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2155, java.lang.Object(Gopher.Tree(EOC, o2157, o2158))))))) → 3014_0_gopher_Return(EOS(STATIC_3014), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, NULL, o2155)), java.lang.Object(Gopher.Tree(EOC, o2157, o2158)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2155, java.lang.Object(Gopher.Tree(EOC, o2157, o2158)))))))
3014_0_gopher_Return(EOS(STATIC_3014), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2210, o2211)), java.lang.Object(o2224sub))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2219, java.lang.Object(Gopher.Tree(EOC, o2221, o2222))))))) → 3063_0_gopher_Return(EOS(STATIC_3063), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2210, o2211)), java.lang.Object(o2224sub))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2219, java.lang.Object(Gopher.Tree(EOC, o2221, o2222)))))))
3063_0_gopher_Return(EOS(STATIC_3063), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2312, o2313)), java.lang.Object(o2326sub))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2321, java.lang.Object(Gopher.Tree(EOC, o2323, o2324))))))) → 3117_0_gopher_Return(EOS(STATIC_3117), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2312, o2313)), java.lang.Object(o2326sub))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2321, java.lang.Object(Gopher.Tree(EOC, o2323, o2324)))))))
3117_0_gopher_Return(EOS(STATIC_3117), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2446, o2447)), java.lang.Object(o2460sub))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458))))))) → 3123_0_gopher_Return(EOS(STATIC_3123), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458)))))))
3149_0_gopher_Return(EOS(STATIC_3149), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2540, o2541)), o2542)), java.lang.Object(Gopher.Tree(EOC, o2544, o2545)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458))))))) → 3117_0_gopher_Return(EOS(STATIC_3117), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, o2540, o2541)), o2542)), java.lang.Object(Gopher.Tree(EOC, o2544, o2545)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458)))))))

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


P rules:
2879_0_gopher_NONNULL(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, x0, x1)), x2)), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, x0, x1)), x2))) → 2954_1_gopher_InvokeMethod(2879_0_gopher_NONNULL(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2)))), java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2))))), java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2)))))
R rules:
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(EOS(STATIC_2890), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, x1)))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, x1))))), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, x1))))) → 2971_0_gopher_Return(EOS(STATIC_2971), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(EOS(STATIC_3123), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2))))))), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, x3, x4)), x5)), java.lang.Object(Gopher.Tree(EOC, x6, x7))))) → 3123_0_gopher_Return(EOS(STATIC_3123), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2)))))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(EOS(STATIC_2971), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2))))))), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(Gopher.Tree(EOC, NULL, x0)), java.lang.Object(Gopher.Tree(EOC, x1, x2))))) → 3123_0_gopher_Return(EOS(STATIC_3123), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2)))))))

Filtered ground terms:



Gopher.Tree(x1, x2, x3) → Gopher.Tree(x2, x3)
2879_0_gopher_NONNULL(x1, x2, x3) → 2879_0_gopher_NONNULL(x2, x3)
3123_0_gopher_Return(x1, x2) → 3123_0_gopher_Return(x2)
2971_0_gopher_Return(x1, x2) → 2971_0_gopher_Return(x2)
2890_0_gopher_Return(x1, x2, x3) → 2890_0_gopher_Return(x2, x3)

Filtered duplicate args:



2879_0_gopher_NONNULL(x1, x2) → 2879_0_gopher_NONNULL(x2)
2890_0_gopher_Return(x1, x2) → 2890_0_gopher_Return(x2)

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


P rules:
2879_0_gopher_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0, x1)), x2))) → 2954_1_gopher_InvokeMethod(2879_0_gopher_NONNULL(java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))), java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))
R rules:
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))) → 2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))

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


P rules:
2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0, x1)), x2))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))
R rules:
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))) → 2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))

(14) Obligation:

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


The following domains are used:
none


The ITRS R consists of the following rules:
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))) → 2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))

The integer pair graph contains the following rules and edges:
(0): 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))))

(0) -> (0), if (java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))) →* java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0]', x1[0]')), x2[0]')))



The set Q consists of the following terms:
2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7)))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2)))))

(15) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(16) Obligation:

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

2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))))

The TRS R consists of the following rules:

2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))) → 2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2))))) → 3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))

The set Q consists of the following terms:

2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7)))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2)))))

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

(17) UsableRulesProof (EQUIVALENT transformation)

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

(18) Obligation:

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

2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))))

R is empty.
The set Q consists of the following terms:

2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7)))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2)))))

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

(19) QReductionProof (EQUIVALENT transformation)

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

2954_1_gopher_InvokeMethod(2890_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1))))), java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2954_1_gopher_InvokeMethod(3123_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x3, x4)), x5)), java.lang.Object(Gopher.Tree(x6, x7)))))
2954_1_gopher_InvokeMethod(2971_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2))))))), java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(NULL, x0)), java.lang.Object(Gopher.Tree(x1, x2)))))

(20) Obligation:

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

2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))))

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

(21) MRRProof (EQUIVALENT transformation)

By using the rule removal processor [LPAR04] with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented.
Strictly oriented dependency pairs:

2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2879_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(Gopher.Tree(x1[0], x2[0])))))


Used ordering: Knuth-Bendix order [KBO] with precedence:
Gopher.Tree2 > java.lang.Object1 > 28790GOPHERNONNULL1

and weight map:

2879_0_GOPHER_NONNULL_1=1
java.lang.Object_1=1
Gopher.Tree_2=0

The variable weight is 1

(22) Obligation:

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

(23) PisEmptyProof (EQUIVALENT transformation)

The TRS P is empty. Hence, there is no (P,Q,R) chain.

(24) YES

(25) Obligation:

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

(26) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 37 rules for P and 81 rules for R.


P rules:
2203_0_createTree_Load(EOS(STATIC_2203), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960) → 2206_0_createTree_GE(EOS(STATIC_2206), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119)
2206_0_createTree_GE(EOS(STATIC_2206), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119) → 2210_0_createTree_GE(EOS(STATIC_2210), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119)
2210_0_createTree_GE(EOS(STATIC_2210), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119) → 2213_0_createTree_Load(EOS(STATIC_2213), i119, java.lang.Object(Gopher.Tree(EOC)), i960) | <(i960, i119)
2213_0_createTree_Load(EOS(STATIC_2213), i119, java.lang.Object(Gopher.Tree(EOC)), i960) → 2218_0_createTree_InvokeMethod(EOS(STATIC_2218), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)))
2218_0_createTree_InvokeMethod(EOS(STATIC_2218), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC))) → 2223_0_random_FieldAccess(EOS(STATIC_2223), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)))
2223_0_random_FieldAccess(EOS(STATIC_2223), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC))) → 2241_0_random_FieldAccess(EOS(STATIC_2241), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)))
2241_0_random_FieldAccess(EOS(STATIC_2241), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957))) → 2248_0_random_ArrayAccess(EOS(STATIC_2248), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i958)
2248_0_random_ArrayAccess(EOS(STATIC_2248), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2254_0_random_ArrayAccess(EOS(STATIC_2254), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986)
2254_0_random_ArrayAccess(EOS(STATIC_2254), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2259_0_random_ArrayAccess(EOS(STATIC_2259), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986)
2259_0_random_ArrayAccess(EOS(STATIC_2259), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2266_0_random_Store(EOS(STATIC_2266), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) | <(i986, i957)
2266_0_random_Store(EOS(STATIC_2266), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2275_0_random_FieldAccess(EOS(STATIC_2275), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2275_0_random_FieldAccess(EOS(STATIC_2275), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2280_0_random_ConstantStackPush(EOS(STATIC_2280), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986)
2280_0_random_ConstantStackPush(EOS(STATIC_2280), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986) → 2291_0_random_IntArithmetic(EOS(STATIC_2291), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986, 1)
2291_0_random_IntArithmetic(EOS(STATIC_2291), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986, matching1) → 2303_0_random_FieldAccess(EOS(STATIC_2303), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, +(i986, 1)) | &&(>=(i986, 0), =(matching1, 1))
2303_0_random_FieldAccess(EOS(STATIC_2303), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i1014) → 2311_0_random_Load(EOS(STATIC_2311), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2311_0_random_Load(EOS(STATIC_2311), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2322_0_random_InvokeMethod(EOS(STATIC_2322), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2322_0_random_InvokeMethod(EOS(STATIC_2322), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub)) → 2338_0_random_InvokeMethod(EOS(STATIC_2338), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub))
2338_0_random_InvokeMethod(EOS(STATIC_2338), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub)) → 2344_0_length_Load(EOS(STATIC_2344), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub))
2344_0_length_Load(EOS(STATIC_2344), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub)) → 2359_0_length_FieldAccess(EOS(STATIC_2359), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub))
2359_0_length_FieldAccess(EOS(STATIC_2359), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), java.lang.Object(java.lang.String(o1412sub, i1065))) → 2364_0_length_FieldAccess(EOS(STATIC_2364), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), java.lang.Object(java.lang.String(o1412sub, i1065))) | &&(>=(i1065, 0), >=(i1066, 0))
2364_0_length_FieldAccess(EOS(STATIC_2364), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), java.lang.Object(java.lang.String(o1412sub, i1065))) → 2373_0_length_Return(EOS(STATIC_2373), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), i1065)
2373_0_length_Return(EOS(STATIC_2373), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), i1065) → 2382_0_random_Return(EOS(STATIC_2382), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2382_0_random_Return(EOS(STATIC_2382), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065) → 2389_0_createTree_InvokeMethod(EOS(STATIC_2389), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2389_0_createTree_InvokeMethod(EOS(STATIC_2389), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), i1065), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2401_1_createTree_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272) → 2686_0_insert_Return(EOS(STATIC_2686), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272)
2401_1_createTree_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289) → 2693_0_insert_Return(EOS(STATIC_2693), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289)
2401_1_createTree_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340) → 2748_0_insert_Return(EOS(STATIC_2748), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340)
2401_1_createTree_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362) → 2764_0_insert_Return(EOS(STATIC_2764), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362)
2686_0_insert_Return(EOS(STATIC_2686), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272) → 2694_0_insert_Return(EOS(STATIC_2694), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272)
2694_0_insert_Return(EOS(STATIC_2694), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1308) → 2715_0_createTree_Inc(EOS(STATIC_2715), i119, java.lang.Object(Gopher.Tree(EOC)), i960)
2715_0_createTree_Inc(EOS(STATIC_2715), i119, java.lang.Object(Gopher.Tree(EOC)), i960) → 2726_0_createTree_JMP(EOS(STATIC_2726), i119, java.lang.Object(Gopher.Tree(EOC)), +(i960, 1)) | >=(i960, 0)
2726_0_createTree_JMP(EOS(STATIC_2726), i119, java.lang.Object(Gopher.Tree(EOC)), i1331) → 2736_0_createTree_Load(EOS(STATIC_2736), i119, java.lang.Object(Gopher.Tree(EOC)), i1331)
2736_0_createTree_Load(EOS(STATIC_2736), i119, java.lang.Object(Gopher.Tree(EOC)), i1331) → 2196_0_createTree_Load(EOS(STATIC_2196), i119, java.lang.Object(Gopher.Tree(EOC)), i1331)
2196_0_createTree_Load(EOS(STATIC_2196), i119, java.lang.Object(Gopher.Tree(EOC)), i960) → 2203_0_createTree_Load(EOS(STATIC_2203), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960)
2693_0_insert_Return(EOS(STATIC_2693), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289) → 2694_0_insert_Return(EOS(STATIC_2694), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289)
2748_0_insert_Return(EOS(STATIC_2748), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340) → 2694_0_insert_Return(EOS(STATIC_2694), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340)
2764_0_insert_Return(EOS(STATIC_2764), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362) → 2694_0_insert_Return(EOS(STATIC_2694), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362)
R rules:
2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), i1065) → 2413_0_insert_Load(EOS(STATIC_2413), java.lang.Object(Gopher.Tree(EOC)), i1065)
2413_0_insert_Load(EOS(STATIC_2413), java.lang.Object(Gopher.Tree(EOC)), i1065) → 2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(Gopher.Tree(EOC)), i1065)
2606_0_insert_Load(EOS(STATIC_2606), java.lang.Object(o1559sub), i1134) → 2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1559sub), i1134)
2609_0_insert_Load(EOS(STATIC_2609), java.lang.Object(o1560sub), i1134) → 2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1560sub), i1134)
2435_0_insert_Load(EOS(STATIC_2435), java.lang.Object(o1469sub), i1134) → 2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(o1469sub), i1134, i1134)
2446_0_insert_Load(EOS(STATIC_2446), java.lang.Object(o1469sub), i1134, i1134) → 2453_0_insert_FieldAccess(EOS(STATIC_2453), java.lang.Object(o1469sub), i1134, i1134, java.lang.Object(o1469sub))
2453_0_insert_FieldAccess(EOS(STATIC_2453), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2462_0_insert_FieldAccess(EOS(STATIC_2462), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC)))
2462_0_insert_FieldAccess(EOS(STATIC_2462), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2480_0_insert_GT(EOS(STATIC_2480), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2481_0_insert_GT(EOS(STATIC_2481), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2480_0_insert_GT(EOS(STATIC_2480), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2488_0_insert_Load(EOS(STATIC_2488), java.lang.Object(Gopher.Tree(EOC)), i1134) | >(i1134, i1163)
2481_0_insert_GT(EOS(STATIC_2481), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2489_0_insert_Load(EOS(STATIC_2489), java.lang.Object(Gopher.Tree(EOC)), i1134) | <=(i1134, i1163)
2488_0_insert_Load(EOS(STATIC_2488), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2498_0_insert_FieldAccess(EOS(STATIC_2498), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2489_0_insert_Load(EOS(STATIC_2489), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2499_0_insert_FieldAccess(EOS(STATIC_2499), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2498_0_insert_FieldAccess(EOS(STATIC_2498), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC)), i1134, o1497)
2499_0_insert_FieldAccess(EOS(STATIC_2499), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC)), i1134, o1496)
2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub)) → 2521_0_insert_NONNULL(EOS(STATIC_2521), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub))
2508_0_insert_NONNULL(EOS(STATIC_2508), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2522_0_insert_NONNULL(EOS(STATIC_2522), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL)
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub)) → 2524_0_insert_NONNULL(EOS(STATIC_2524), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub))
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2525_0_insert_NONNULL(EOS(STATIC_2525), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL)
2521_0_insert_NONNULL(EOS(STATIC_2521), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub)) → 2534_0_insert_Load(EOS(STATIC_2534), java.lang.Object(Gopher.Tree(EOC)), i1134)
2522_0_insert_NONNULL(EOS(STATIC_2522), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2535_0_insert_Load(EOS(STATIC_2535), java.lang.Object(Gopher.Tree(EOC)), i1134)
2524_0_insert_NONNULL(EOS(STATIC_2524), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub)) → 2536_0_insert_Load(EOS(STATIC_2536), java.lang.Object(Gopher.Tree(EOC)), i1134)
2525_0_insert_NONNULL(EOS(STATIC_2525), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2537_0_insert_Load(EOS(STATIC_2537), java.lang.Object(Gopher.Tree(EOC)), i1134)
2534_0_insert_Load(EOS(STATIC_2534), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2554_0_insert_FieldAccess(EOS(STATIC_2554), i1134, java.lang.Object(Gopher.Tree(EOC)))
2535_0_insert_Load(EOS(STATIC_2535), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2555_0_insert_New(EOS(STATIC_2555), i1134, java.lang.Object(Gopher.Tree(EOC)))
2536_0_insert_Load(EOS(STATIC_2536), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2557_0_insert_FieldAccess(EOS(STATIC_2557), i1134, java.lang.Object(Gopher.Tree(EOC)))
2537_0_insert_Load(EOS(STATIC_2537), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2558_0_insert_New(EOS(STATIC_2558), i1134, java.lang.Object(Gopher.Tree(EOC)))
2554_0_insert_FieldAccess(EOS(STATIC_2554), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2568_0_insert_Load(EOS(STATIC_2568), i1134, java.lang.Object(o1559sub))
2555_0_insert_New(EOS(STATIC_2555), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2569_0_insert_Duplicate(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2557_0_insert_FieldAccess(EOS(STATIC_2557), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2571_0_insert_Load(EOS(STATIC_2571), i1134, java.lang.Object(o1560sub))
2558_0_insert_New(EOS(STATIC_2558), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2572_0_insert_Duplicate(EOS(STATIC_2572), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2568_0_insert_Load(EOS(STATIC_2568), i1134, java.lang.Object(o1559sub)) → 2584_0_insert_InvokeMethod(EOS(STATIC_2584), java.lang.Object(o1559sub), i1134)
2569_0_insert_Duplicate(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2585_0_insert_Load(EOS(STATIC_2585), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2571_0_insert_Load(EOS(STATIC_2571), i1134, java.lang.Object(o1560sub)) → 2587_0_insert_InvokeMethod(EOS(STATIC_2587), java.lang.Object(o1560sub), i1134)
2572_0_insert_Duplicate(EOS(STATIC_2572), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2588_0_insert_Load(EOS(STATIC_2588), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2584_0_insert_InvokeMethod(EOS(STATIC_2584), java.lang.Object(o1559sub), i1134) → 2595_1_insert_InvokeMethod(2595_0_insert_Load(EOS(STATIC_2595), java.lang.Object(o1559sub), i1134), java.lang.Object(o1559sub), i1134)
2585_0_insert_Load(EOS(STATIC_2585), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2596_0_insert_InvokeMethod(EOS(STATIC_2596), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2587_0_insert_InvokeMethod(EOS(STATIC_2587), java.lang.Object(o1560sub), i1134) → 2597_1_insert_InvokeMethod(2597_0_insert_Load(EOS(STATIC_2597), java.lang.Object(o1560sub), i1134), java.lang.Object(o1560sub), i1134)
2588_0_insert_Load(EOS(STATIC_2588), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2598_0_insert_InvokeMethod(EOS(STATIC_2598), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2595_0_insert_Load(EOS(STATIC_2595), java.lang.Object(o1559sub), i1134) → 2606_0_insert_Load(EOS(STATIC_2606), java.lang.Object(o1559sub), i1134)
2595_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(o1559sub), i1279) → 2688_0_insert_Return(EOS(STATIC_2688), java.lang.Object(Gopher.Tree(EOC)), i1279)
2595_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(o1559sub), i1296) → 2700_0_insert_Return(EOS(STATIC_2700), java.lang.Object(Gopher.Tree(EOC)), i1296)
2595_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(o1559sub), i1344) → 2750_0_insert_Return(EOS(STATIC_2750), java.lang.Object(Gopher.Tree(EOC)), i1344)
2595_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(o1559sub), i1366) → 2768_0_insert_Return(EOS(STATIC_2768), java.lang.Object(Gopher.Tree(EOC)), i1366)
2596_0_insert_InvokeMethod(EOS(STATIC_2596), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2607_0_<init>_Load(EOS(STATIC_2607), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2597_0_insert_Load(EOS(STATIC_2597), java.lang.Object(o1560sub), i1134) → 2609_0_insert_Load(EOS(STATIC_2609), java.lang.Object(o1560sub), i1134)
2597_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(o1560sub), i1286) → 2689_0_insert_Return(EOS(STATIC_2689), java.lang.Object(Gopher.Tree(EOC)), i1286)
2597_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(o1560sub), i1303) → 2707_0_insert_Return(EOS(STATIC_2707), java.lang.Object(Gopher.Tree(EOC)), i1303)
2597_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(o1560sub), i1348) → 2754_0_insert_Return(EOS(STATIC_2754), java.lang.Object(Gopher.Tree(EOC)), i1348)
2597_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(o1560sub), i1370) → 2771_0_insert_Return(EOS(STATIC_2771), java.lang.Object(Gopher.Tree(EOC)), i1370)
2598_0_insert_InvokeMethod(EOS(STATIC_2598), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2610_0_<init>_Load(EOS(STATIC_2610), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2607_0_<init>_Load(EOS(STATIC_2607), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2618_0_<init>_InvokeMethod(EOS(STATIC_2618), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2610_0_<init>_Load(EOS(STATIC_2610), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2621_0_<init>_InvokeMethod(EOS(STATIC_2621), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2618_0_<init>_InvokeMethod(EOS(STATIC_2618), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2629_0_<init>_Load(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2621_0_<init>_InvokeMethod(EOS(STATIC_2621), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2631_0_<init>_Load(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2629_0_<init>_Load(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2634_0_<init>_Load(EOS(STATIC_2634), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC)))
2631_0_<init>_Load(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2635_0_<init>_Load(EOS(STATIC_2635), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC)))
2634_0_<init>_Load(EOS(STATIC_2634), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2638_0_<init>_FieldAccess(EOS(STATIC_2638), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2635_0_<init>_Load(EOS(STATIC_2635), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2639_0_<init>_FieldAccess(EOS(STATIC_2639), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134)
2638_0_<init>_FieldAccess(EOS(STATIC_2638), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2641_0_<init>_Return(EOS(STATIC_2641), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2639_0_<init>_FieldAccess(EOS(STATIC_2639), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)), i1134) → 2643_0_<init>_Return(EOS(STATIC_2643), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2641_0_<init>_Return(EOS(STATIC_2641), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2647_0_insert_FieldAccess(EOS(STATIC_2647), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2643_0_<init>_Return(EOS(STATIC_2643), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2648_0_insert_FieldAccess(EOS(STATIC_2648), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2647_0_insert_FieldAccess(EOS(STATIC_2647), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2653_0_insert_JMP(EOS(STATIC_2653))
2648_0_insert_FieldAccess(EOS(STATIC_2648), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2655_0_insert_JMP(EOS(STATIC_2655))
2653_0_insert_JMP(EOS(STATIC_2653)) → 2658_0_insert_Return(EOS(STATIC_2658))
2655_0_insert_JMP(EOS(STATIC_2655)) → 2660_0_insert_Return(EOS(STATIC_2660))
2658_0_insert_Return(EOS(STATIC_2658)) → 2720_0_insert_Return(EOS(STATIC_2720))
2660_0_insert_Return(EOS(STATIC_2660)) → 2732_0_insert_Return(EOS(STATIC_2732))
2688_0_insert_Return(EOS(STATIC_2688), java.lang.Object(Gopher.Tree(EOC)), i1279) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC)), i1279)
2689_0_insert_Return(EOS(STATIC_2689), java.lang.Object(Gopher.Tree(EOC)), i1286) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC)), i1286)
2700_0_insert_Return(EOS(STATIC_2700), java.lang.Object(Gopher.Tree(EOC)), i1296) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC)), i1296)
2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC)), i1312) → 2720_0_insert_Return(EOS(STATIC_2720))
2707_0_insert_Return(EOS(STATIC_2707), java.lang.Object(Gopher.Tree(EOC)), i1303) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC)), i1303)
2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC)), i1320) → 2721_0_insert_JMP(EOS(STATIC_2721))
2721_0_insert_JMP(EOS(STATIC_2721)) → 2732_0_insert_Return(EOS(STATIC_2732))
2750_0_insert_Return(EOS(STATIC_2750), java.lang.Object(Gopher.Tree(EOC)), i1344) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC)), i1344)
2754_0_insert_Return(EOS(STATIC_2754), java.lang.Object(Gopher.Tree(EOC)), i1348) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC)), i1348)
2768_0_insert_Return(EOS(STATIC_2768), java.lang.Object(Gopher.Tree(EOC)), i1366) → 2701_0_insert_Return(EOS(STATIC_2701), java.lang.Object(Gopher.Tree(EOC)), i1366)
2771_0_insert_Return(EOS(STATIC_2771), java.lang.Object(Gopher.Tree(EOC)), i1370) → 2708_0_insert_Return(EOS(STATIC_2708), java.lang.Object(Gopher.Tree(EOC)), i1370)

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


P rules:
2401_1_createTree_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), x3), x0, java.lang.Object(Gopher.Tree(EOC)), +(x1, 1), java.lang.Object(Gopher.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), x3), x0, java.lang.Object(Gopher.Tree(EOC)), +(x1, 1), java.lang.Object(Gopher.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), x3), x0, java.lang.Object(Gopher.Tree(EOC)), +(x1, 1), java.lang.Object(Gopher.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), x3), x0, java.lang.Object(Gopher.Tree(EOC)), +(x1, 1), java.lang.Object(Gopher.Tree(EOC)), x3) | &&(&&(>(+(x3, 1), 0), >(+(x1, 1), 0)), >(x0, +(x1, 1)))
R rules:
2401_0_insert_Load(EOS(STATIC_2401), java.lang.Object(Gopher.Tree(EOC)), x0) → 2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x2), java.lang.Object(Gopher.Tree(EOC)), x0) | <(x1, x0)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2597_1_insert_InvokeMethod(2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x2), java.lang.Object(Gopher.Tree(EOC)), x0) | >=(x1, x0)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2720_0_insert_Return(EOS(STATIC_2720)) | <(x1, x0)
2471_0_insert_GT(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2732_0_insert_Return(EOS(STATIC_2732)) | >=(x1, x0)
2595_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2595_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(x0), x1) → 2720_0_insert_Return(EOS(STATIC_2720))
2597_1_insert_InvokeMethod(2658_0_insert_Return(EOS(STATIC_2658)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2660_0_insert_Return(EOS(STATIC_2660)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2720_0_insert_Return(EOS(STATIC_2720)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))
2597_1_insert_InvokeMethod(2732_0_insert_Return(EOS(STATIC_2732)), java.lang.Object(x0), x1) → 2732_0_insert_Return(EOS(STATIC_2732))

Filtered ground terms:



2401_1_createTree_InvokeMethod(x1, x2, x3, x4, x5, x6) → 2401_1_createTree_InvokeMethod(x1, x2, x4, x6)
Gopher.Tree(x1) → Gopher.Tree
2401_0_insert_Load(x1, x2, x3) → 2401_0_insert_Load(x3)
Cond_2401_1_createTree_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2401_1_createTree_InvokeMethod3(x1, x3, x5, x7, x8)
2732_0_insert_Return(x1) → 2732_0_insert_Return
Cond_2401_1_createTree_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2401_1_createTree_InvokeMethod2(x1, x3, x5, x7, x8)
2720_0_insert_Return(x1) → 2720_0_insert_Return
Cond_2401_1_createTree_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2401_1_createTree_InvokeMethod1(x1, x3, x5, x7, x8)
2660_0_insert_Return(x1) → 2660_0_insert_Return
Cond_2401_1_createTree_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2401_1_createTree_InvokeMethod(x1, x3, x5, x7, x8)
2658_0_insert_Return(x1) → 2658_0_insert_Return
Cond_2471_0_insert_GT3(x1, x2, x3, x4, x5, x6) → Cond_2471_0_insert_GT3(x1, x4, x5, x6)
2471_0_insert_GT(x1, x2, x3, x4, x5) → 2471_0_insert_GT(x3, x4, x5)
Cond_2471_0_insert_GT2(x1, x2, x3, x4, x5, x6) → Cond_2471_0_insert_GT2(x1, x4, x5, x6)
Cond_2471_0_insert_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_2471_0_insert_GT1(x1, x4, x5, x6, x7)
Cond_2471_0_insert_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_2471_0_insert_GT(x1, x4, x5, x6, x7)

Filtered duplicate args:



2471_0_insert_GT(x1, x2, x3) → 2471_0_insert_GT(x2, x3)
Cond_2471_0_insert_GT(x1, x2, x3, x4, x5) → Cond_2471_0_insert_GT(x1, x3, x4, x5)
Cond_2471_0_insert_GT1(x1, x2, x3, x4, x5) → Cond_2471_0_insert_GT1(x1, x3, x4, x5)
Cond_2471_0_insert_GT2(x1, x2, x3, x4) → Cond_2471_0_insert_GT2(x1, x3, x4)
Cond_2471_0_insert_GT3(x1, x2, x3, x4) → Cond_2471_0_insert_GT3(x1, x3, x4)

Filtered unneeded arguments:



2401_1_createTree_InvokeMethod(x1, x2, x3, x4) → 2401_1_createTree_InvokeMethod(x1, x2, x3)
Cond_2401_1_createTree_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2401_1_createTree_InvokeMethod(x1, x2, x3, x5)
Cond_2401_1_createTree_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2401_1_createTree_InvokeMethod1(x1, x2, x3, x5)
Cond_2401_1_createTree_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2401_1_createTree_InvokeMethod2(x1, x2, x3, x5)
Cond_2401_1_createTree_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_2401_1_createTree_InvokeMethod3(x1, x2, x3, x5)
Cond_2471_0_insert_GT(x1, x2, x3, x4) → Cond_2471_0_insert_GT(x1, x2, x4)
2595_1_insert_InvokeMethod(x1, x2, x3) → 2595_1_insert_InvokeMethod(x1, x2)
Cond_2471_0_insert_GT1(x1, x2, x3, x4) → Cond_2471_0_insert_GT1(x1, x2, x4)
2597_1_insert_InvokeMethod(x1, x2, x3) → 2597_1_insert_InvokeMethod(x1, x2)
Cond_2471_0_insert_GT2(x1, x2, x3) → Cond_2471_0_insert_GT2(x1)
Cond_2471_0_insert_GT3(x1, x2, x3) → Cond_2471_0_insert_GT3(x1)

Filtered all non-integer terms:



2595_1_insert_InvokeMethod(x1, x2) → 2595_1_insert_InvokeMethod(x1)
2597_1_insert_InvokeMethod(x1, x2) → 2597_1_insert_InvokeMethod(x1)

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


P rules:
2401_1_createTree_InvokeMethod(2658_0_insert_Return, x0, x1) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2660_0_insert_Return, x0, x1) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2720_0_insert_Return, x0, x1) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2401_1_createTree_InvokeMethod(2732_0_insert_Return, x0, x1) → 2401_1_createTree_InvokeMethod(2401_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
R rules:
2401_0_insert_Load(x0) → 2471_0_insert_GT(x0, x1)
2471_0_insert_GT(x0, x1) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2)) | <(x1, x0)
2471_0_insert_GT(x0, x1) → 2597_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2)) | >=(x1, x0)
2471_0_insert_GT(x0, x1) → 2720_0_insert_Return | <(x1, x0)
2471_0_insert_GT(x0, x1) → 2732_0_insert_Return | >=(x1, x0)
2595_1_insert_InvokeMethod(2658_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2660_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2720_0_insert_Return) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2732_0_insert_Return) → 2720_0_insert_Return
2597_1_insert_InvokeMethod(2658_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2660_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2720_0_insert_Return) → 2732_0_insert_Return
2597_1_insert_InvokeMethod(2732_0_insert_Return) → 2732_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2595_1_insert_InvokeMethod_1, 2597_1_insert_InvokeMethod_1]=2595_1_insert_InvokeMethod_1, [2720_0_insert_Return, 2732_0_insert_Return, 2658_0_insert_Return, 2660_0_insert_Return]=2720_0_insert_Return, [Cond_2401_1_createTree_InvokeMethod_5, Cond_2401_1_createTree_InvokeMethod1_5, Cond_2401_1_createTree_InvokeMethod2_5, Cond_2401_1_createTree_InvokeMethod3_5]=Cond_2401_1_createTree_InvokeMethod_5}


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


P rules:
2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0, x1) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), 2720_0_insert_Return, x0, x1, x3)
COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0, x1, x3) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3), x0, +(x1, 1))
R rules:
2401_0_insert_Load(x0) → 2471_0_insert_GT(x0, x1)
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT(<(x1, x0), x0, x1, x2)
Cond_2471_0_insert_GT(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT1(>=(x1, x0), x0, x1, x2)
Cond_2471_0_insert_GT1(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT2(<(x1, x0), x0, x1)
Cond_2471_0_insert_GT2(TRUE, x0, x1) → 2720_0_insert_Return
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT3(>=(x1, x0), x0, x1)
Cond_2471_0_insert_GT3(TRUE, x0, x1) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2720_0_insert_Return) → 2720_0_insert_Return

(27) Obligation:

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


The following domains are used:

Integer, Boolean


The ITRS R consists of the following rules:
2401_0_insert_Load(x0) → 2471_0_insert_GT(x0, x1)
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_2471_0_insert_GT(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_2471_0_insert_GT1(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT2(x1 < x0, x0, x1)
Cond_2471_0_insert_GT2(TRUE, x0, x1) → 2720_0_insert_Return
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT3(x1 >= x0, x0, x1)
Cond_2471_0_insert_GT3(TRUE, x0, x1) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2720_0_insert_Return) → 2720_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(x3[0] > -1 && x1[0] > -1 && x0[0] > x1[0] + 1, 2720_0_insert_Return, x0[0], x1[0], x3[0])
(1): COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_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 (2401_0_insert_Load(x3[1]) →* 2720_0_insert_Returnx0[1]* x0[0]x1[1] + 1* x1[0])



The set Q consists of the following terms:
2401_0_insert_Load(x0)
2471_0_insert_GT(x0, x1)
Cond_2471_0_insert_GT(TRUE, x0, x1, x2)
Cond_2471_0_insert_GT1(TRUE, x0, x1, x2)
Cond_2471_0_insert_GT2(TRUE, x0, x1)
Cond_2471_0_insert_GT3(TRUE, x0, x1)
2595_1_insert_InvokeMethod(2720_0_insert_Return)

(28) 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@68b613f8 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 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0, x1) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), 2720_0_insert_Return, x0, x1, x3) the following chains were created:
  • We consider the chain COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0]), COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)) which results in the following constraint:

    (1)    (2401_0_insert_Load(x3[1])=2720_0_insert_Returnx0[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]12401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0])≥NonInfC∧2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0])≥COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])∧(UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥))



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

    (2)    (2401_0_insert_Load(x3[1])=2720_0_insert_Return>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], +(x1[1], 1))≥NonInfC∧2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], +(x1[1], 1))≥COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), 2720_0_insert_Return, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥))



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

    (3)    (2471_0_insert_GT(x0, x1)=2720_0_insert_Return>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], +(x1[1], 1))≥NonInfC∧2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], +(x1[1], 1))≥COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), 2720_0_insert_Return, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, 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_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 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_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 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_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 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_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43 + (3)bni_43] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 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_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43 + (3)bni_43] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 0)


    (9)    (x0[0] ≥ 0∧x3[0] ≥ 0∧[-1]x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43 + (3)bni_43] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 0)







For Pair COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0, x1, x3) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3), x0, +(x1, 1)) the following chains were created:
  • We consider the chain 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0]), COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, 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]2401_0_insert_Load(x3[1])=2720_0_insert_Returnx0[1]=x0[0]1+(x1[1], 1)=x1[0]1COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1])≥NonInfC∧COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1])≥2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))∧(UIncreasing(2401_1_CREATETREE_INVOKEMETHOD(2401_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)    (2401_0_insert_Load(x3[0])=2720_0_insert_Return>(x0[0], +(x1[0], 1))=TRUE>(x3[0], -1)=TRUE>(x1[0], -1)=TRUECOND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[0], x1[0], x3[0])≥NonInfC∧COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[0], x1[0], x3[0])≥2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[0]), x0[0], +(x1[0], 1))∧(UIncreasing(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥))



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

    (12)    (2471_0_insert_GT(x2, x3)=2720_0_insert_Return>(x0[0], +(x1[0], 1))=TRUE>(x2, -1)=TRUE>(x1[0], -1)=TRUECOND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[0], x1[0], x2)≥NonInfC∧COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[0], x1[0], x2)≥2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x2), x0[0], +(x1[0], 1))∧(UIncreasing(2401_1_CREATETREE_INVOKEMETHOD(2401_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(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[(-1)bso_46] ≥ 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(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[(-1)bso_46] ≥ 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(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[(-1)bso_46] ≥ 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(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_45 + (2)bni_45] + [bni_45]x0[0] ≥ 0∧[(-1)bso_46] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0, x1) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), 2720_0_insert_Return, x0, x1, x3)
    • (x0[0] ≥ 0∧x3[0] ≥ 0∧x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43 + (3)bni_43] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 0)
    • (x0[0] ≥ 0∧x3[0] ≥ 0∧[-1]x1[1] + [1] ≥ 0∧x1[1] ≥ 0 ⇒ (UIncreasing(COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-1)Bound*bni_43 + (3)bni_43] + [bni_43]x0[0] ≥ 0∧[1 + (-1)bso_44] ≥ 0)

  • COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0, x1, x3) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3), x0, +(x1, 1))
    • (x0[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)Bound*bni_45 + (2)bni_45] + [bni_45]x0[0] ≥ 0∧[(-1)bso_46] ≥ 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) = [2]   
POL(FALSE) = [2]   
POL(2401_0_insert_Load(x1)) = [-1] + x1   
POL(2471_0_insert_GT(x1, x2)) = x1   
POL(Cond_2471_0_insert_GT(x1, x2, x3, x4)) = [-1] + x4 + [2]x3 + [-1]x2 + x1   
POL(<(x1, x2)) = [-1]   
POL(2595_1_insert_InvokeMethod(x1)) = [2] + [-1]x1   
POL(Cond_2471_0_insert_GT1(x1, x2, x3, x4)) = [-1] + [2]x4 + [2]x3 + x2 + [-1]x1   
POL(>=(x1, x2)) = 0   
POL(Cond_2471_0_insert_GT2(x1, x2, x3)) = [2]x3 + [-1]x2 + [-1]x1   
POL(2720_0_insert_Return) = [1]   
POL(Cond_2471_0_insert_GT3(x1, x2, x3)) = [2] + [-1]x3 + x2   
POL(2401_1_CREATETREE_INVOKEMETHOD(x1, x2, x3)) = [1] + [-1]x3 + x2   
POL(COND_2401_1_CREATETREE_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [1] + [-1]x4 + x3 + x2 + [-1]x1   
POL(&&(x1, x2)) = [2]   
POL(>(x1, x2)) = [-1]   
POL(-1) = [-1]   
POL(+(x1, x2)) = x1 + x2   
POL(1) = [1]   

The following pairs are in P>:

2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])

The following pairs are in Pbound:

2401_1_CREATETREE_INVOKEMETHOD(2720_0_insert_Return, x0[0], x1[0]) → COND_2401_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2720_0_insert_Return, x0[0], x1[0], x3[0])
COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in P:

COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

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

&&(TRUE, TRUE)1TRUE1
&&(TRUE, FALSE)1FALSE1
&&(FALSE, TRUE)1FALSE1
&&(FALSE, FALSE)1FALSE1
2471_0_insert_GT(x0, x1)12401_0_insert_Load(x0)1
2595_1_insert_InvokeMethod(2720_0_insert_Return)12720_0_insert_Return1

(29) Obligation:

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


The following domains are used:

Integer


The ITRS R consists of the following rules:
2401_0_insert_Load(x0) → 2471_0_insert_GT(x0, x1)
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_2471_0_insert_GT(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_2471_0_insert_GT1(TRUE, x0, x1, x2) → 2595_1_insert_InvokeMethod(2471_0_insert_GT(x0, x2))
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT2(x1 < x0, x0, x1)
Cond_2471_0_insert_GT2(TRUE, x0, x1) → 2720_0_insert_Return
2471_0_insert_GT(x0, x1) → Cond_2471_0_insert_GT3(x1 >= x0, x0, x1)
Cond_2471_0_insert_GT3(TRUE, x0, x1) → 2720_0_insert_Return
2595_1_insert_InvokeMethod(2720_0_insert_Return) → 2720_0_insert_Return

The integer pair graph contains the following rules and edges:
(1): COND_2401_1_CREATETREE_INVOKEMETHOD(TRUE, 2720_0_insert_Return, x0[1], x1[1], x3[1]) → 2401_1_CREATETREE_INVOKEMETHOD(2401_0_insert_Load(x3[1]), x0[1], x1[1] + 1)


The set Q consists of the following terms:
2401_0_insert_Load(x0)
2471_0_insert_GT(x0, x1)
Cond_2471_0_insert_GT(TRUE, x0, x1, x2)
Cond_2471_0_insert_GT1(TRUE, x0, x1, x2)
Cond_2471_0_insert_GT2(TRUE, x0, x1)
Cond_2471_0_insert_GT3(TRUE, x0, x1)
2595_1_insert_InvokeMethod(2720_0_insert_Return)

(30) IDependencyGraphProof (EQUIVALENT transformation)

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

(31) TRUE