### (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.

### (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:
2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(o1469sub), i1134, i1134) → 2430_0_insert_FieldAccess(EOS(STATIC_2430), java.lang.Object(o1469sub), i1134, i1134, java.lang.Object(o1469sub))
2430_0_insert_FieldAccess(EOS(STATIC_2430), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2441_0_insert_FieldAccess(EOS(STATIC_2441), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2441_0_insert_FieldAccess(EOS(STATIC_2441), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2460_0_insert_GT(EOS(STATIC_2460), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2461_0_insert_GT(EOS(STATIC_2461), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163)
2460_0_insert_GT(EOS(STATIC_2460), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2471_0_insert_Load(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) | >(i1134, i1163)
2471_0_insert_Load(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) → 2484_0_insert_FieldAccess(EOS(STATIC_2484), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2484_0_insert_FieldAccess(EOS(STATIC_2484), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, o1497)
2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub)) → 2506_0_insert_NONNULL(EOS(STATIC_2506), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub))
2506_0_insert_NONNULL(EOS(STATIC_2506), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134, java.lang.Object(o1559sub)) → 2516_0_insert_Load(EOS(STATIC_2516), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134)
2516_0_insert_Load(EOS(STATIC_2516), java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)), i1134) → 2536_0_insert_FieldAccess(EOS(STATIC_2536), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496)))
2536_0_insert_FieldAccess(EOS(STATIC_2536), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, java.lang.Object(o1559sub), o1496))) → 2549_0_insert_Load(EOS(STATIC_2549), i1134, java.lang.Object(o1559sub))
2549_0_insert_Load(EOS(STATIC_2549), i1134, java.lang.Object(o1559sub)) → 2567_0_insert_InvokeMethod(EOS(STATIC_2567), java.lang.Object(o1559sub), i1134)
2567_0_insert_InvokeMethod(EOS(STATIC_2567), java.lang.Object(o1559sub), i1134) → 2579_1_insert_InvokeMethod(2579_0_insert_Load(EOS(STATIC_2579), java.lang.Object(o1559sub), i1134), java.lang.Object(o1559sub), i1134)
2461_0_insert_GT(EOS(STATIC_2461), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, i1134, i1163) → 2472_0_insert_Load(EOS(STATIC_2472), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) | <=(i1134, i1163)
2472_0_insert_Load(EOS(STATIC_2472), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134) → 2485_0_insert_FieldAccess(EOS(STATIC_2485), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)))
2485_0_insert_FieldAccess(EOS(STATIC_2485), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496))) → 2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, o1496)), i1134, o1496)
2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub)) → 2509_0_insert_NONNULL(EOS(STATIC_2509), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub))
2509_0_insert_NONNULL(EOS(STATIC_2509), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134, java.lang.Object(o1560sub)) → 2519_0_insert_Load(EOS(STATIC_2519), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134)
2519_0_insert_Load(EOS(STATIC_2519), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))), i1134) → 2539_0_insert_FieldAccess(EOS(STATIC_2539), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub))))
2539_0_insert_FieldAccess(EOS(STATIC_2539), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, java.lang.Object(o1560sub)))) → 2552_0_insert_Load(EOS(STATIC_2552), i1134, java.lang.Object(o1560sub))
2552_0_insert_Load(EOS(STATIC_2552), i1134, java.lang.Object(o1560sub)) → 2570_0_insert_InvokeMethod(EOS(STATIC_2570), java.lang.Object(o1560sub), i1134)
2570_0_insert_InvokeMethod(EOS(STATIC_2570), java.lang.Object(o1560sub), i1134) → 2582_1_insert_InvokeMethod(2582_0_insert_Load(EOS(STATIC_2582), java.lang.Object(o1560sub), i1134), java.lang.Object(o1560sub), i1134)
R rules:
2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL) → 2507_0_insert_NONNULL(EOS(STATIC_2507), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL)
2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL) → 2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL)
2507_0_insert_NONNULL(EOS(STATIC_2507), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134, NULL) → 2517_0_insert_Load(EOS(STATIC_2517), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134)
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134, NULL) → 2520_0_insert_Load(EOS(STATIC_2520), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134)
2517_0_insert_Load(EOS(STATIC_2517), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), i1134) → 2537_0_insert_New(EOS(STATIC_2537), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)))
2520_0_insert_Load(EOS(STATIC_2520), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), i1134) → 2540_0_insert_New(EOS(STATIC_2540), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)))
2537_0_insert_New(EOS(STATIC_2537), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496))) → 2550_0_insert_Duplicate(EOS(STATIC_2550), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)))
2540_0_insert_New(EOS(STATIC_2540), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL))) → 2553_0_insert_Duplicate(EOS(STATIC_2553), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, 0, NULL, NULL)))
2550_0_insert_Duplicate(EOS(STATIC_2550), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL))) → 2569_0_insert_Load(EOS(STATIC_2569), 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)
2553_0_insert_Duplicate(EOS(STATIC_2553), i1134, java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, matching1, NULL, NULL))) → 2571_0_insert_Load(EOS(STATIC_2571), 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)
2569_0_insert_Load(EOS(STATIC_2569), 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))) → 2581_0_insert_InvokeMethod(EOS(STATIC_2581), 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))
2571_0_insert_Load(EOS(STATIC_2571), 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))) → 2584_0_insert_InvokeMethod(EOS(STATIC_2584), 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))
2579_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(o1559sub), i1279) → 2669_0_insert_Return(EOS(STATIC_2669), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279)
2579_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(o1559sub), i1296) → 2683_0_insert_Return(EOS(STATIC_2683), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296)
2579_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(o1559sub), i1344) → 2734_0_insert_Return(EOS(STATIC_2734), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1344)
2579_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(o1559sub), i1366) → 2753_0_insert_Return(EOS(STATIC_2753), java.lang.Object(Gopher.Tree(EOC, i1365, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1366)
2581_0_insert_InvokeMethod(EOS(STATIC_2581), 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) → 2593_0_<init>_Load(EOS(STATIC_2593), 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))
2582_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(o1560sub), i1286) → 2671_0_insert_Return(EOS(STATIC_2671), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286)
2582_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(o1560sub), i1303) → 2690_0_insert_Return(EOS(STATIC_2690), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303)
2582_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(o1560sub), i1348) → 2738_0_insert_Return(EOS(STATIC_2738), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1348)
2582_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(o1560sub), i1370) → 2755_0_insert_Return(EOS(STATIC_2755), java.lang.Object(Gopher.Tree(EOC, i1369, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1370)
2584_0_insert_InvokeMethod(EOS(STATIC_2584), 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) → 2596_0_<init>_Load(EOS(STATIC_2596), 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))
2593_0_<init>_Load(EOS(STATIC_2593), 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) → 2604_0_<init>_InvokeMethod(EOS(STATIC_2604), 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))
2596_0_<init>_Load(EOS(STATIC_2596), 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) → 2606_0_<init>_InvokeMethod(EOS(STATIC_2606), 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))
2604_0_<init>_InvokeMethod(EOS(STATIC_2604), 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))) → 2613_0_<init>_Load(EOS(STATIC_2613), 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))
2606_0_<init>_InvokeMethod(EOS(STATIC_2606), 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))) → 2614_0_<init>_Load(EOS(STATIC_2614), 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))
2613_0_<init>_Load(EOS(STATIC_2613), 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) → 2616_0_<init>_Load(EOS(STATIC_2616), 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))
2614_0_<init>_Load(EOS(STATIC_2614), 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) → 2618_0_<init>_Load(EOS(STATIC_2618), 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))
2616_0_<init>_Load(EOS(STATIC_2616), 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))) → 2620_0_<init>_FieldAccess(EOS(STATIC_2620), 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))
2618_0_<init>_Load(EOS(STATIC_2618), 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))) → 2622_0_<init>_FieldAccess(EOS(STATIC_2622), 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))
2620_0_<init>_FieldAccess(EOS(STATIC_2620), 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) → 2624_0_<init>_Return(EOS(STATIC_2624), 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))
2622_0_<init>_FieldAccess(EOS(STATIC_2622), 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) → 2626_0_<init>_Return(EOS(STATIC_2626), 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))
2624_0_<init>_Return(EOS(STATIC_2624), 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) → 2629_0_insert_FieldAccess(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)))
2626_0_<init>_Return(EOS(STATIC_2626), 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) → 2631_0_insert_FieldAccess(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL)))
2629_0_insert_FieldAccess(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC, i1163, NULL, o1496)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL))) → 2635_0_insert_JMP(EOS(STATIC_2635))
2631_0_insert_FieldAccess(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC, i1163, o1497, NULL)), java.lang.Object(Gopher.Tree(EOC, i1134, NULL, NULL))) → 2637_0_insert_JMP(EOS(STATIC_2637))
2635_0_insert_JMP(EOS(STATIC_2635)) → 2641_0_insert_Return(EOS(STATIC_2641))
2637_0_insert_JMP(EOS(STATIC_2637)) → 2642_0_insert_Return(EOS(STATIC_2642))
2641_0_insert_Return(EOS(STATIC_2641)) → 2701_0_insert_Return(EOS(STATIC_2701))
2642_0_insert_Return(EOS(STATIC_2642)) → 2713_0_insert_Return(EOS(STATIC_2713))
2669_0_insert_Return(EOS(STATIC_2669), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC, i1277, java.lang.Object(Gopher.Tree(EOC, i1279, NULL, NULL)), o1707)), i1279)
2671_0_insert_Return(EOS(STATIC_2671), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC, i1284, java.lang.Object(Gopher.Tree(EOC, i1286, NULL, NULL)), o1496)), i1286)
2683_0_insert_Return(EOS(STATIC_2683), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC, i1294, o1497, java.lang.Object(Gopher.Tree(EOC, i1296, NULL, NULL)))), i1296)
2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), i1312) → 2701_0_insert_Return(EOS(STATIC_2701))
2690_0_insert_Return(EOS(STATIC_2690), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC, i1301, o1718, java.lang.Object(Gopher.Tree(EOC, i1303, NULL, NULL)))), i1303)
2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)), i1320) → 2703_0_insert_JMP(EOS(STATIC_2703))
2703_0_insert_JMP(EOS(STATIC_2703)) → 2713_0_insert_Return(EOS(STATIC_2713))
2734_0_insert_Return(EOS(STATIC_2734), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1344) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC, i1343, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1344)
2738_0_insert_Return(EOS(STATIC_2738), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1348) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC, i1347, java.lang.Object(Gopher.Tree(EOC, i1311, o1741, o1740)), o1738)), i1348)
2753_0_insert_Return(EOS(STATIC_2753), java.lang.Object(Gopher.Tree(EOC, i1365, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1366) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC, i1365, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1366)
2755_0_insert_Return(EOS(STATIC_2755), java.lang.Object(Gopher.Tree(EOC, i1369, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1370) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC, i1369, o1761, java.lang.Object(Gopher.Tree(EOC, i1319, o1760, o1759)))), i1370)

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

P rules:
2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(x1), x2)), x3, x3) → 2579_1_insert_InvokeMethod(2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(x1), x3, x3), java.lang.Object(x1), x3) | >(x3, x0)
2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(Gopher.Tree(EOC, x0, x1, java.lang.Object(x2))), x3, x3) → 2582_1_insert_InvokeMethod(2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(x2), x3, x3), java.lang.Object(x2), x3) | <=(x3, x0)
R rules:
2579_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2582_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))

Filtered ground terms:

Gopher.Tree(x1, x2, x3, x4) → Gopher.Tree(x2, x3, x4)
2713_0_insert_Return(x1) → 2713_0_insert_Return
2701_0_insert_Return(x1) → 2701_0_insert_Return
2642_0_insert_Return(x1) → 2642_0_insert_Return
2641_0_insert_Return(x1) → 2641_0_insert_Return

Filtered duplicate args:

Filtered unneeded arguments:

2579_1_insert_InvokeMethod(x1, x2, x3) → 2579_1_insert_InvokeMethod(x1)
2582_1_insert_InvokeMethod(x1, x2, x3) → 2582_1_insert_InvokeMethod(x1)

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

P rules:
R rules:
2579_1_insert_InvokeMethod(2641_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2642_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2701_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2713_0_insert_Return) → 2701_0_insert_Return
2582_1_insert_InvokeMethod(2641_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2642_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2701_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2713_0_insert_Return) → 2713_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2579_1_insert_InvokeMethod_1, 2582_1_insert_InvokeMethod_1]=2579_1_insert_InvokeMethod_1, [2641_0_insert_Return, 2701_0_insert_Return, 2642_0_insert_Return, 2713_0_insert_Return]=2641_0_insert_Return}

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

P rules:
R rules:
2579_1_insert_InvokeMethod(2641_0_insert_Return) → 2641_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:
2579_1_insert_InvokeMethod(2641_0_insert_Return) → 2641_0_insert_Return

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

(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:
2579_1_insert_InvokeMethod(2641_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@15253eb5 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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_2422_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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2422_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2422_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]2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥NonInfC∧2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])≥COND_2422_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_2422_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:

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

(3)    (0 ≥ 0 ⇒ (UIncreasing(COND_2422_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_2422_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_2422_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_2422_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_2422_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → 2422_0_INSERT_LOAD(java.lang.Object(x1), x3) the following chains were created:
• We consider the chain 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2422_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2422_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_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:

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

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

(9)    (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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(2422_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(2422_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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_0_INSERT_LOAD(>(x3[0], x0[0]), java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]), COND_2422_0_INSERT_LOAD(TRUE, java.lang.Object(Gopher.Tree(x0[1], java.lang.Object(x1[1]), x2[1])), x3[1]) → 2422_0_INSERT_LOAD(java.lang.Object(x1[1]), x3[1]), 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_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:

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

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

(15)    (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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(2422_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(2422_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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_2422_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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2422_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2422_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]2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥NonInfC∧2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2])≥COND_2422_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_2422_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:

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

(21)    (0 ≥ 0 ⇒ (UIncreasing(COND_2422_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_2422_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_2422_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_2422_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_2422_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → 2422_0_INSERT_LOAD(java.lang.Object(x2), x3) the following chains were created:
• We consider the chain 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2422_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2422_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_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:

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

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

(27)    (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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(2422_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(2422_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 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_0_INSERT_LOAD1(<=(x3[2], x0[2]), java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]), COND_2422_0_INSERT_LOAD1(TRUE, java.lang.Object(Gopher.Tree(x0[3], x1[3], java.lang.Object(x2[3]))), x3[3]) → 2422_0_INSERT_LOAD(java.lang.Object(x2[3]), x3[3]), 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_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:

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

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

(33)    (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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(2422_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(2422_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.
• 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3) → COND_2422_0_INSERT_LOAD(>(x3, x0), java.lang.Object(Gopher.Tree(x0, java.lang.Object(x1), x2)), x3)
• (0 ≥ 0 ⇒ (UIncreasing(COND_2422_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)

• (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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)

• 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3) → COND_2422_0_INSERT_LOAD1(<=(x3, x0), java.lang.Object(Gopher.Tree(x0, x1, java.lang.Object(x2))), x3)
• (0 ≥ 0 ⇒ (UIncreasing(COND_2422_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)

• (0 ≥ 0 ⇒ (UIncreasing(2422_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(2422_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(2579_1_insert_InvokeMethod(x1)) = 0
POL(2641_0_insert_Return) = 0
POL(2422_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_2422_0_INSERT_LOAD(x1, x2, x3)) = [-1] + x2
POL(>(x1, x2)) = 0
POL(COND_2422_0_INSERT_LOAD1(x1, x2, x3)) = [-1] + x2
POL(<=(x1, x2)) = 0

The following pairs are in P>:

The following pairs are in Pbound:

The following pairs are in P:

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:
2579_1_insert_InvokeMethod(2641_0_insert_Return) → 2641_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0]) → COND_2422_0_INSERT_LOAD(x3[0] > x0[0], java.lang.Object(Gopher.Tree(x0[0], java.lang.Object(x1[0]), x2[0])), x3[0])
(2): 2422_0_INSERT_LOAD(java.lang.Object(Gopher.Tree(x0[2], x1[2], java.lang.Object(x2[2]))), x3[2]) → COND_2422_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:
2579_1_insert_InvokeMethod(2641_0_insert_Return)

### (10) IDependencyGraphProof (EQUIVALENT transformation)

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

### (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:
2871_0_gopher_NONNULL(EOS(STATIC_2871), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2872_0_gopher_Load(EOS(STATIC_2872), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
2872_0_gopher_Load(EOS(STATIC_2872), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2874_0_gopher_FieldAccess(EOS(STATIC_2874), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
2874_0_gopher_FieldAccess(EOS(STATIC_2874), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2875_0_gopher_NONNULL(EOS(STATIC_2875), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), o2015)
2875_0_gopher_NONNULL(EOS(STATIC_2875), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub)) → 2877_0_gopher_NONNULL(EOS(STATIC_2877), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub))
2877_0_gopher_NONNULL(EOS(STATIC_2877), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(o2021sub)) → 2879_0_gopher_New(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)))
2879_0_gopher_New(EOS(STATIC_2879), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016))) → 2882_0_gopher_Duplicate(EOS(STATIC_2882), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2882_0_gopher_Duplicate(EOS(STATIC_2882), java.lang.Object(Gopher.Tree(EOC, java.lang.Object(o2021sub), o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2884_0_gopher_Load(EOS(STATIC_2884), 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)))
2884_0_gopher_Load(EOS(STATIC_2884), 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))) → 2887_0_gopher_FieldAccess(EOS(STATIC_2887), 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)))
2887_0_gopher_FieldAccess(EOS(STATIC_2887), 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))) → 2890_0_gopher_FieldAccess(EOS(STATIC_2890), 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))
2890_0_gopher_FieldAccess(EOS(STATIC_2890), 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))) → 2894_0_gopher_FieldAccess(EOS(STATIC_2894), 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)))
2894_0_gopher_FieldAccess(EOS(STATIC_2894), 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))) → 2896_0_gopher_New(EOS(STATIC_2896), 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)
2896_0_gopher_New(EOS(STATIC_2896), 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) → 2897_0_gopher_Duplicate(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)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
2897_0_gopher_Duplicate(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)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2898_0_gopher_Load(EOS(STATIC_2898), 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)))
2898_0_gopher_Load(EOS(STATIC_2898), 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))) → 2900_0_gopher_FieldAccess(EOS(STATIC_2900), 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)))
2900_0_gopher_FieldAccess(EOS(STATIC_2900), 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))) → 2901_0_gopher_FieldAccess(EOS(STATIC_2901), 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)))
2901_0_gopher_FieldAccess(EOS(STATIC_2901), 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))) → 2902_0_gopher_Load(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)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034)
2902_0_gopher_Load(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)), o2033, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034) → 2903_0_gopher_FieldAccess(EOS(STATIC_2903), 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)))
2903_0_gopher_FieldAccess(EOS(STATIC_2903), 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))) → 2905_0_gopher_InvokeMethod(EOS(STATIC_2905), 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)
2905_0_gopher_InvokeMethod(EOS(STATIC_2905), 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) → 2906_0_<init>_Load(EOS(STATIC_2906), 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)
2906_0_<init>_Load(EOS(STATIC_2906), 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) → 2908_0_<init>_InvokeMethod(EOS(STATIC_2908), 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)))
2908_0_<init>_InvokeMethod(EOS(STATIC_2908), 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))) → 2909_0_<init>_Load(EOS(STATIC_2909), 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)
2909_0_<init>_Load(EOS(STATIC_2909), 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) → 2910_0_<init>_Load(EOS(STATIC_2910), 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)))
2910_0_<init>_Load(EOS(STATIC_2910), 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))) → 2911_0_<init>_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, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034)
2911_0_<init>_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, o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2016, java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2034) → 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, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), 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, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016) → 2916_0_<init>_Load(EOS(STATIC_2916), 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)))
2916_0_<init>_Load(EOS(STATIC_2916), 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))) → 2917_0_<init>_FieldAccess(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, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016)
2917_0_<init>_FieldAccess(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, o2034, NULL)), java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2034, o2016, java.lang.Object(Gopher.Tree(EOC, o2034, NULL)), o2016) → 2919_0_<init>_Return(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, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), o2034, o2016)
2919_0_<init>_Return(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, o2034, o2016)), java.lang.Object(Gopher.Tree(EOC, o2034, o2016)), o2034, o2016) → 2920_0_gopher_InvokeMethod(EOS(STATIC_2920), 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)))
2920_0_gopher_InvokeMethod(EOS(STATIC_2920), 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))) → 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, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, 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, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))) → 2925_0_<init>_InvokeMethod(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, 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)))
2925_0_<init>_InvokeMethod(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, 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))) → 2927_0_<init>_Load(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, NULL, NULL)), o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))
2927_0_<init>_Load(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, 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)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL)))
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)), java.lang.Object(Gopher.Tree(EOC, NULL, NULL))) → 2933_0_<init>_FieldAccess(EOS(STATIC_2933), 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)
2933_0_<init>_FieldAccess(EOS(STATIC_2933), 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) → 2937_0_<init>_Load(EOS(STATIC_2937), 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)))
2937_0_<init>_Load(EOS(STATIC_2937), 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))) → 2939_0_<init>_Load(EOS(STATIC_2939), 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)))
2939_0_<init>_Load(EOS(STATIC_2939), 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))) → 2941_0_<init>_FieldAccess(EOS(STATIC_2941), 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)))
2941_0_<init>_FieldAccess(EOS(STATIC_2941), 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>_Return(EOS(STATIC_2945), 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)))
2945_0_<init>_Return(EOS(STATIC_2945), 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))) → 2946_0_gopher_InvokeMethod(EOS(STATIC_2946), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2946_0_gopher_InvokeMethod(EOS(STATIC_2946), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2947_1_gopher_InvokeMethod(2947_0_gopher_Load(EOS(STATIC_2947), 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)))))
2947_0_gopher_Load(EOS(STATIC_2947), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2949_0_gopher_Load(EOS(STATIC_2949), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2949_0_gopher_Load(EOS(STATIC_2949), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016))))) → 2953_0_gopher_Load(EOS(STATIC_2953), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2016)))))
2953_0_gopher_Load(EOS(STATIC_2953), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2017))))) → 2956_0_gopher_Load(EOS(STATIC_2956), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2034, o2017)))))
2956_0_gopher_Load(EOS(STATIC_2956), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2018, o2017))))) → 2870_0_gopher_Load(EOS(STATIC_2870), java.lang.Object(Gopher.Tree(EOC, o2033, java.lang.Object(Gopher.Tree(EOC, o2018, o2017)))))
2870_0_gopher_Load(EOS(STATIC_2870), java.lang.Object(Gopher.Tree(EOC, o2015, o2016))) → 2871_0_gopher_NONNULL(EOS(STATIC_2871), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)), java.lang.Object(Gopher.Tree(EOC, o2015, o2016)))
R rules:
2875_0_gopher_NONNULL(EOS(STATIC_2875), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL) → 2878_0_gopher_NONNULL(EOS(STATIC_2878), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL)
2878_0_gopher_NONNULL(EOS(STATIC_2878), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), NULL) → 2880_0_gopher_Load(EOS(STATIC_2880), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)))
2880_0_gopher_Load(EOS(STATIC_2880), java.lang.Object(Gopher.Tree(EOC, NULL, o2016))) → 2883_0_gopher_Return(EOS(STATIC_2883), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)), java.lang.Object(Gopher.Tree(EOC, NULL, o2016)))
2947_1_gopher_InvokeMethod(2883_0_gopher_Return(EOS(STATIC_2883), 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))))) → 2965_0_gopher_Return(EOS(STATIC_2965), 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)))))
2947_1_gopher_InvokeMethod(2967_0_gopher_Return(EOS(STATIC_2967), 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))))) → 2974_0_gopher_Return(EOS(STATIC_2974), 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)))))))
2947_1_gopher_InvokeMethod(3120_0_gopher_Return(EOS(STATIC_3120), 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))))) → 3146_0_gopher_Return(EOS(STATIC_3146), 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)))))))
2965_0_gopher_Return(EOS(STATIC_2965), 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))))) → 2967_0_gopher_Return(EOS(STATIC_2967), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2141, o2142)))))
2974_0_gopher_Return(EOS(STATIC_2974), 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))))))) → 3007_0_gopher_Return(EOS(STATIC_3007), 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)))))))
3007_0_gopher_Return(EOS(STATIC_3007), 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))))))) → 3059_0_gopher_Return(EOS(STATIC_3059), 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)))))))
3059_0_gopher_Return(EOS(STATIC_3059), 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))))))) → 3114_0_gopher_Return(EOS(STATIC_3114), 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)))))))
3114_0_gopher_Return(EOS(STATIC_3114), 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))))))) → 3120_0_gopher_Return(EOS(STATIC_3120), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, o2455, java.lang.Object(Gopher.Tree(EOC, o2457, o2458)))))))
3146_0_gopher_Return(EOS(STATIC_3146), 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))))))) → 3114_0_gopher_Return(EOS(STATIC_3114), 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:
2871_0_gopher_NONNULL(EOS(STATIC_2871), 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))) → 2947_1_gopher_InvokeMethod(2871_0_gopher_NONNULL(EOS(STATIC_2871), 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:
2947_1_gopher_InvokeMethod(2883_0_gopher_Return(EOS(STATIC_2883), 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))))) → 2967_0_gopher_Return(EOS(STATIC_2967), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, x1)))))
2947_1_gopher_InvokeMethod(3120_0_gopher_Return(EOS(STATIC_3120), 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))))) → 3120_0_gopher_Return(EOS(STATIC_3120), java.lang.Object(Gopher.Tree(EOC, NULL, java.lang.Object(Gopher.Tree(EOC, x0, java.lang.Object(Gopher.Tree(EOC, x1, x2)))))))
2947_1_gopher_InvokeMethod(2967_0_gopher_Return(EOS(STATIC_2967), 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))))) → 3120_0_gopher_Return(EOS(STATIC_3120), 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)
2871_0_gopher_NONNULL(x1, x2, x3) → 2871_0_gopher_NONNULL(x2, x3)
3120_0_gopher_Return(x1, x2) → 3120_0_gopher_Return(x2)
2967_0_gopher_Return(x1, x2) → 2967_0_gopher_Return(x2)
2883_0_gopher_Return(x1, x2, x3) → 2883_0_gopher_Return(x2, x3)

Filtered duplicate args:

2871_0_gopher_NONNULL(x1, x2) → 2871_0_gopher_NONNULL(x2)
2883_0_gopher_Return(x1, x2) → 2883_0_gopher_Return(x2)

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

P rules:
2871_0_gopher_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0, x1)), x2))) → 2947_1_gopher_InvokeMethod(2871_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:
2947_1_gopher_InvokeMethod(2883_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))))) → 2967_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2947_1_gopher_InvokeMethod(3120_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))))) → 3120_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2947_1_gopher_InvokeMethod(2967_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))))) → 3120_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:
2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0, x1)), x2))) → 2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))
R rules:
2947_1_gopher_InvokeMethod(2883_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))))) → 2967_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2947_1_gopher_InvokeMethod(3120_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))))) → 3120_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2947_1_gopher_InvokeMethod(2967_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))))) → 3120_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:
2947_1_gopher_InvokeMethod(2883_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))))) → 2967_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2947_1_gopher_InvokeMethod(3120_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))))) → 3120_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2947_1_gopher_InvokeMethod(2967_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))))) → 3120_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): 2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2871_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:
2947_1_gopher_InvokeMethod(2883_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)))))
2947_1_gopher_InvokeMethod(3120_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)))))
2947_1_gopher_InvokeMethod(2967_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:

2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2871_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:

2947_1_gopher_InvokeMethod(2883_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))))) → 2967_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, x1)))))
2947_1_gopher_InvokeMethod(3120_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))))) → 3120_0_gopher_Return(java.lang.Object(Gopher.Tree(NULL, java.lang.Object(Gopher.Tree(x0, java.lang.Object(Gopher.Tree(x1, x2)))))))
2947_1_gopher_InvokeMethod(2967_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))))) → 3120_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:

2947_1_gopher_InvokeMethod(2883_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)))))
2947_1_gopher_InvokeMethod(3120_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)))))
2947_1_gopher_InvokeMethod(2967_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:

2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2871_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:

2947_1_gopher_InvokeMethod(2883_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)))))
2947_1_gopher_InvokeMethod(3120_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)))))
2947_1_gopher_InvokeMethod(2967_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].

2947_1_gopher_InvokeMethod(2883_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)))))
2947_1_gopher_InvokeMethod(3120_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)))))
2947_1_gopher_InvokeMethod(2967_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:

2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2871_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:

2871_0_GOPHER_NONNULL(java.lang.Object(Gopher.Tree(java.lang.Object(Gopher.Tree(x0[0], x1[0])), x2[0]))) → 2871_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 > 28710GOPHERNONNULL1

and weight map:

2871_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.

### (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:
2173_0_createTree_Load(EOS(STATIC_2173), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960) → 2176_0_createTree_GE(EOS(STATIC_2176), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119)
2176_0_createTree_GE(EOS(STATIC_2176), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119) → 2180_0_createTree_GE(EOS(STATIC_2180), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119)
2180_0_createTree_GE(EOS(STATIC_2180), i119, java.lang.Object(Gopher.Tree(EOC)), i960, i960, i119) → 2183_0_createTree_Load(EOS(STATIC_2183), i119, java.lang.Object(Gopher.Tree(EOC)), i960) | <(i960, i119)
2183_0_createTree_Load(EOS(STATIC_2183), i119, java.lang.Object(Gopher.Tree(EOC)), i960) → 2189_0_createTree_InvokeMethod(EOS(STATIC_2189), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)))
2189_0_createTree_InvokeMethod(EOS(STATIC_2189), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC))) → 2194_0_random_FieldAccess(EOS(STATIC_2194), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)))
2194_0_random_FieldAccess(EOS(STATIC_2194), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC))) → 2209_0_random_FieldAccess(EOS(STATIC_2209), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)))
2209_0_random_FieldAccess(EOS(STATIC_2209), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957))) → 2216_0_random_ArrayAccess(EOS(STATIC_2216), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i958)
2216_0_random_ArrayAccess(EOS(STATIC_2216), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2222_0_random_ArrayAccess(EOS(STATIC_2222), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986)
2222_0_random_ArrayAccess(EOS(STATIC_2222), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2229_0_random_ArrayAccess(EOS(STATIC_2229), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986)
2229_0_random_ArrayAccess(EOS(STATIC_2229), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(ARRAY(i957)), i986) → 2238_0_random_Store(EOS(STATIC_2238), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) | <(i986, i957)
2238_0_random_Store(EOS(STATIC_2238), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2247_0_random_FieldAccess(EOS(STATIC_2247), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2247_0_random_FieldAccess(EOS(STATIC_2247), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2252_0_random_ConstantStackPush(EOS(STATIC_2252), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986)
2252_0_random_ConstantStackPush(EOS(STATIC_2252), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986) → 2261_0_random_IntArithmetic(EOS(STATIC_2261), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986, 1)
2261_0_random_IntArithmetic(EOS(STATIC_2261), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i986, matching1) → 2275_0_random_FieldAccess(EOS(STATIC_2275), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, +(i986, 1)) | &&(>=(i986, 0), =(matching1, 1))
2275_0_random_FieldAccess(EOS(STATIC_2275), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333, i1014) → 2282_0_random_Load(EOS(STATIC_2282), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2282_0_random_Load(EOS(STATIC_2282), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333) → 2292_0_random_InvokeMethod(EOS(STATIC_2292), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), o1333)
2292_0_random_InvokeMethod(EOS(STATIC_2292), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub)) → 2308_0_random_InvokeMethod(EOS(STATIC_2308), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub))
2308_0_random_InvokeMethod(EOS(STATIC_2308), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub)) → 2315_0_length_Load(EOS(STATIC_2315), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub))
2315_0_length_Load(EOS(STATIC_2315), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub)) → 2330_0_length_FieldAccess(EOS(STATIC_2330), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(o1399sub), java.lang.Object(o1399sub))
2330_0_length_FieldAccess(EOS(STATIC_2330), 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))) → 2334_0_length_FieldAccess(EOS(STATIC_2334), 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))
2334_0_length_FieldAccess(EOS(STATIC_2334), 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))) → 2344_0_length_Return(EOS(STATIC_2344), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), i1065)
2344_0_length_Return(EOS(STATIC_2344), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(java.lang.String(o1412sub, i1065)), i1065) → 2353_0_random_Return(EOS(STATIC_2353), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2353_0_random_Return(EOS(STATIC_2353), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065) → 2359_0_createTree_InvokeMethod(EOS(STATIC_2359), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2359_0_createTree_InvokeMethod(EOS(STATIC_2359), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(EOS(STATIC_2372), java.lang.Object(Gopher.Tree(EOC)), i1065), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1065)
2372_1_createTree_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272) → 2668_0_insert_Return(EOS(STATIC_2668), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272)
2372_1_createTree_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289) → 2675_0_insert_Return(EOS(STATIC_2675), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289)
2372_1_createTree_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340) → 2731_0_insert_Return(EOS(STATIC_2731), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340)
2372_1_createTree_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362) → 2749_0_insert_Return(EOS(STATIC_2749), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362)
2668_0_insert_Return(EOS(STATIC_2668), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272) → 2676_0_insert_Return(EOS(STATIC_2676), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1272)
2676_0_insert_Return(EOS(STATIC_2676), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1308) → 2697_0_createTree_Inc(EOS(STATIC_2697), i119, java.lang.Object(Gopher.Tree(EOC)), i960)
2697_0_createTree_Inc(EOS(STATIC_2697), i119, java.lang.Object(Gopher.Tree(EOC)), i960) → 2707_0_createTree_JMP(EOS(STATIC_2707), i119, java.lang.Object(Gopher.Tree(EOC)), +(i960, 1)) | >=(i960, 0)
2707_0_createTree_JMP(EOS(STATIC_2707), i119, java.lang.Object(Gopher.Tree(EOC)), i1331) → 2717_0_createTree_Load(EOS(STATIC_2717), i119, java.lang.Object(Gopher.Tree(EOC)), i1331)
2675_0_insert_Return(EOS(STATIC_2675), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289) → 2676_0_insert_Return(EOS(STATIC_2676), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1289)
2731_0_insert_Return(EOS(STATIC_2731), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340) → 2676_0_insert_Return(EOS(STATIC_2676), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1340)
2749_0_insert_Return(EOS(STATIC_2749), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362) → 2676_0_insert_Return(EOS(STATIC_2676), i119, java.lang.Object(Gopher.Tree(EOC)), i960, java.lang.Object(Gopher.Tree(EOC)), i1362)
R rules:
2422_0_insert_Load(EOS(STATIC_2422), java.lang.Object(o1469sub), i1134, i1134) → 2430_0_insert_FieldAccess(EOS(STATIC_2430), java.lang.Object(o1469sub), i1134, i1134, java.lang.Object(o1469sub))
2430_0_insert_FieldAccess(EOS(STATIC_2430), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2441_0_insert_FieldAccess(EOS(STATIC_2441), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC)))
2441_0_insert_FieldAccess(EOS(STATIC_2441), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, java.lang.Object(Gopher.Tree(EOC))) → 2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2460_0_insert_GT(EOS(STATIC_2460), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2461_0_insert_GT(EOS(STATIC_2461), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163)
2460_0_insert_GT(EOS(STATIC_2460), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2471_0_insert_Load(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), i1134) | >(i1134, i1163)
2461_0_insert_GT(EOS(STATIC_2461), java.lang.Object(Gopher.Tree(EOC)), i1134, i1134, i1163) → 2472_0_insert_Load(EOS(STATIC_2472), java.lang.Object(Gopher.Tree(EOC)), i1134) | <=(i1134, i1163)
2471_0_insert_Load(EOS(STATIC_2471), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2484_0_insert_FieldAccess(EOS(STATIC_2484), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2472_0_insert_Load(EOS(STATIC_2472), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2485_0_insert_FieldAccess(EOS(STATIC_2485), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC)))
2484_0_insert_FieldAccess(EOS(STATIC_2484), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC)), i1134, o1497)
2485_0_insert_FieldAccess(EOS(STATIC_2485), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC)), i1134, o1496)
2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub)) → 2506_0_insert_NONNULL(EOS(STATIC_2506), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub))
2495_0_insert_NONNULL(EOS(STATIC_2495), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2507_0_insert_NONNULL(EOS(STATIC_2507), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL)
2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub)) → 2509_0_insert_NONNULL(EOS(STATIC_2509), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub))
2496_0_insert_NONNULL(EOS(STATIC_2496), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL)
2506_0_insert_NONNULL(EOS(STATIC_2506), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1559sub)) → 2516_0_insert_Load(EOS(STATIC_2516), java.lang.Object(Gopher.Tree(EOC)), i1134)
2507_0_insert_NONNULL(EOS(STATIC_2507), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2517_0_insert_Load(EOS(STATIC_2517), java.lang.Object(Gopher.Tree(EOC)), i1134)
2509_0_insert_NONNULL(EOS(STATIC_2509), java.lang.Object(Gopher.Tree(EOC)), i1134, java.lang.Object(o1560sub)) → 2519_0_insert_Load(EOS(STATIC_2519), java.lang.Object(Gopher.Tree(EOC)), i1134)
2510_0_insert_NONNULL(EOS(STATIC_2510), java.lang.Object(Gopher.Tree(EOC)), i1134, NULL) → 2520_0_insert_Load(EOS(STATIC_2520), java.lang.Object(Gopher.Tree(EOC)), i1134)
2516_0_insert_Load(EOS(STATIC_2516), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2536_0_insert_FieldAccess(EOS(STATIC_2536), i1134, java.lang.Object(Gopher.Tree(EOC)))
2517_0_insert_Load(EOS(STATIC_2517), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2537_0_insert_New(EOS(STATIC_2537), i1134, java.lang.Object(Gopher.Tree(EOC)))
2519_0_insert_Load(EOS(STATIC_2519), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2539_0_insert_FieldAccess(EOS(STATIC_2539), i1134, java.lang.Object(Gopher.Tree(EOC)))
2520_0_insert_Load(EOS(STATIC_2520), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2540_0_insert_New(EOS(STATIC_2540), i1134, java.lang.Object(Gopher.Tree(EOC)))
2536_0_insert_FieldAccess(EOS(STATIC_2536), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2549_0_insert_Load(EOS(STATIC_2549), i1134, java.lang.Object(o1559sub))
2537_0_insert_New(EOS(STATIC_2537), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2550_0_insert_Duplicate(EOS(STATIC_2550), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2539_0_insert_FieldAccess(EOS(STATIC_2539), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2552_0_insert_Load(EOS(STATIC_2552), i1134, java.lang.Object(o1560sub))
2540_0_insert_New(EOS(STATIC_2540), i1134, java.lang.Object(Gopher.Tree(EOC))) → 2553_0_insert_Duplicate(EOS(STATIC_2553), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2549_0_insert_Load(EOS(STATIC_2549), i1134, java.lang.Object(o1559sub)) → 2567_0_insert_InvokeMethod(EOS(STATIC_2567), java.lang.Object(o1559sub), i1134)
2550_0_insert_Duplicate(EOS(STATIC_2550), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2569_0_insert_Load(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2552_0_insert_Load(EOS(STATIC_2552), i1134, java.lang.Object(o1560sub)) → 2570_0_insert_InvokeMethod(EOS(STATIC_2570), java.lang.Object(o1560sub), i1134)
2553_0_insert_Duplicate(EOS(STATIC_2553), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2571_0_insert_Load(EOS(STATIC_2571), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2567_0_insert_InvokeMethod(EOS(STATIC_2567), java.lang.Object(o1559sub), i1134) → 2579_1_insert_InvokeMethod(2579_0_insert_Load(EOS(STATIC_2579), java.lang.Object(o1559sub), i1134), java.lang.Object(o1559sub), i1134)
2569_0_insert_Load(EOS(STATIC_2569), i1134, java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2581_0_insert_InvokeMethod(EOS(STATIC_2581), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2570_0_insert_InvokeMethod(EOS(STATIC_2570), java.lang.Object(o1560sub), i1134) → 2582_1_insert_InvokeMethod(2582_0_insert_Load(EOS(STATIC_2582), java.lang.Object(o1560sub), i1134), java.lang.Object(o1560sub), i1134)
2571_0_insert_Load(EOS(STATIC_2571), 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(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2579_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(o1559sub), i1279) → 2669_0_insert_Return(EOS(STATIC_2669), java.lang.Object(Gopher.Tree(EOC)), i1279)
2579_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(o1559sub), i1296) → 2683_0_insert_Return(EOS(STATIC_2683), java.lang.Object(Gopher.Tree(EOC)), i1296)
2579_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(o1559sub), i1344) → 2734_0_insert_Return(EOS(STATIC_2734), java.lang.Object(Gopher.Tree(EOC)), i1344)
2579_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(o1559sub), i1366) → 2753_0_insert_Return(EOS(STATIC_2753), java.lang.Object(Gopher.Tree(EOC)), i1366)
2581_0_insert_InvokeMethod(EOS(STATIC_2581), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2593_0_<init>_Load(EOS(STATIC_2593), 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)
2582_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(o1560sub), i1286) → 2671_0_insert_Return(EOS(STATIC_2671), java.lang.Object(Gopher.Tree(EOC)), i1286)
2582_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(o1560sub), i1303) → 2690_0_insert_Return(EOS(STATIC_2690), java.lang.Object(Gopher.Tree(EOC)), i1303)
2582_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(o1560sub), i1348) → 2738_0_insert_Return(EOS(STATIC_2738), java.lang.Object(Gopher.Tree(EOC)), i1348)
2582_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(o1560sub), i1370) → 2755_0_insert_Return(EOS(STATIC_2755), java.lang.Object(Gopher.Tree(EOC)), i1370)
2584_0_insert_InvokeMethod(EOS(STATIC_2584), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2596_0_<init>_Load(EOS(STATIC_2596), 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)
2593_0_<init>_Load(EOS(STATIC_2593), 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) → 2604_0_<init>_InvokeMethod(EOS(STATIC_2604), 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)))
2596_0_<init>_Load(EOS(STATIC_2596), 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) → 2606_0_<init>_InvokeMethod(EOS(STATIC_2606), 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)))
2604_0_<init>_InvokeMethod(EOS(STATIC_2604), 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))) → 2613_0_<init>_Load(EOS(STATIC_2613), 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)
2606_0_<init>_InvokeMethod(EOS(STATIC_2606), 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))) → 2614_0_<init>_Load(EOS(STATIC_2614), 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)
2613_0_<init>_Load(EOS(STATIC_2613), 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) → 2616_0_<init>_Load(EOS(STATIC_2616), 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)))
2614_0_<init>_Load(EOS(STATIC_2614), 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>_Load(EOS(STATIC_2618), 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)))
2616_0_<init>_Load(EOS(STATIC_2616), 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))) → 2620_0_<init>_FieldAccess(EOS(STATIC_2620), 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>_Load(EOS(STATIC_2618), 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))) → 2622_0_<init>_FieldAccess(EOS(STATIC_2622), 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)
2620_0_<init>_FieldAccess(EOS(STATIC_2620), 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) → 2624_0_<init>_Return(EOS(STATIC_2624), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2622_0_<init>_FieldAccess(EOS(STATIC_2622), 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) → 2626_0_<init>_Return(EOS(STATIC_2626), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134)
2624_0_<init>_Return(EOS(STATIC_2624), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2629_0_insert_FieldAccess(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2626_0_<init>_Return(EOS(STATIC_2626), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)), i1134) → 2631_0_insert_FieldAccess(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC)))
2629_0_insert_FieldAccess(EOS(STATIC_2629), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2635_0_insert_JMP(EOS(STATIC_2635))
2631_0_insert_FieldAccess(EOS(STATIC_2631), java.lang.Object(Gopher.Tree(EOC)), java.lang.Object(Gopher.Tree(EOC))) → 2637_0_insert_JMP(EOS(STATIC_2637))
2635_0_insert_JMP(EOS(STATIC_2635)) → 2641_0_insert_Return(EOS(STATIC_2641))
2637_0_insert_JMP(EOS(STATIC_2637)) → 2642_0_insert_Return(EOS(STATIC_2642))
2641_0_insert_Return(EOS(STATIC_2641)) → 2701_0_insert_Return(EOS(STATIC_2701))
2642_0_insert_Return(EOS(STATIC_2642)) → 2713_0_insert_Return(EOS(STATIC_2713))
2669_0_insert_Return(EOS(STATIC_2669), java.lang.Object(Gopher.Tree(EOC)), i1279) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC)), i1279)
2671_0_insert_Return(EOS(STATIC_2671), java.lang.Object(Gopher.Tree(EOC)), i1286) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC)), i1286)
2683_0_insert_Return(EOS(STATIC_2683), java.lang.Object(Gopher.Tree(EOC)), i1296) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC)), i1296)
2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC)), i1312) → 2701_0_insert_Return(EOS(STATIC_2701))
2690_0_insert_Return(EOS(STATIC_2690), java.lang.Object(Gopher.Tree(EOC)), i1303) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC)), i1303)
2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC)), i1320) → 2703_0_insert_JMP(EOS(STATIC_2703))
2703_0_insert_JMP(EOS(STATIC_2703)) → 2713_0_insert_Return(EOS(STATIC_2713))
2734_0_insert_Return(EOS(STATIC_2734), java.lang.Object(Gopher.Tree(EOC)), i1344) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC)), i1344)
2738_0_insert_Return(EOS(STATIC_2738), java.lang.Object(Gopher.Tree(EOC)), i1348) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC)), i1348)
2753_0_insert_Return(EOS(STATIC_2753), java.lang.Object(Gopher.Tree(EOC)), i1366) → 2684_0_insert_Return(EOS(STATIC_2684), java.lang.Object(Gopher.Tree(EOC)), i1366)
2755_0_insert_Return(EOS(STATIC_2755), java.lang.Object(Gopher.Tree(EOC)), i1370) → 2691_0_insert_Return(EOS(STATIC_2691), java.lang.Object(Gopher.Tree(EOC)), i1370)

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

P rules:
2372_1_createTree_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(EOS(STATIC_2372), 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)))
2372_1_createTree_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(EOS(STATIC_2372), 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)))
2372_1_createTree_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(EOS(STATIC_2372), 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)))
2372_1_createTree_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), x0, java.lang.Object(Gopher.Tree(EOC)), x1, java.lang.Object(Gopher.Tree(EOC)), x2) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(EOS(STATIC_2372), 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:
2372_0_insert_Load(EOS(STATIC_2372), java.lang.Object(Gopher.Tree(EOC)), x0) → 2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x2), java.lang.Object(Gopher.Tree(EOC)), x0) | <(x1, x0)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2582_1_insert_InvokeMethod(2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x2), java.lang.Object(Gopher.Tree(EOC)), x0) | >=(x1, x0)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2701_0_insert_Return(EOS(STATIC_2701)) | <(x1, x0)
2451_0_insert_GT(EOS(STATIC_2451), java.lang.Object(Gopher.Tree(EOC)), x0, x0, x1) → 2713_0_insert_Return(EOS(STATIC_2713)) | >=(x1, x0)
2579_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2579_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(x0), x1) → 2701_0_insert_Return(EOS(STATIC_2701))
2582_1_insert_InvokeMethod(2641_0_insert_Return(EOS(STATIC_2641)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2642_0_insert_Return(EOS(STATIC_2642)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2701_0_insert_Return(EOS(STATIC_2701)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))
2582_1_insert_InvokeMethod(2713_0_insert_Return(EOS(STATIC_2713)), java.lang.Object(x0), x1) → 2713_0_insert_Return(EOS(STATIC_2713))

Filtered ground terms:

2372_1_createTree_InvokeMethod(x1, x2, x3, x4, x5, x6) → 2372_1_createTree_InvokeMethod(x1, x2, x4, x6)
Gopher.Tree(x1) → Gopher.Tree
Cond_2372_1_createTree_InvokeMethod3(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2372_1_createTree_InvokeMethod3(x1, x3, x5, x7, x8)
2713_0_insert_Return(x1) → 2713_0_insert_Return
Cond_2372_1_createTree_InvokeMethod2(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2372_1_createTree_InvokeMethod2(x1, x3, x5, x7, x8)
2701_0_insert_Return(x1) → 2701_0_insert_Return
Cond_2372_1_createTree_InvokeMethod1(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2372_1_createTree_InvokeMethod1(x1, x3, x5, x7, x8)
2642_0_insert_Return(x1) → 2642_0_insert_Return
Cond_2372_1_createTree_InvokeMethod(x1, x2, x3, x4, x5, x6, x7, x8) → Cond_2372_1_createTree_InvokeMethod(x1, x3, x5, x7, x8)
2641_0_insert_Return(x1) → 2641_0_insert_Return
Cond_2451_0_insert_GT3(x1, x2, x3, x4, x5, x6) → Cond_2451_0_insert_GT3(x1, x4, x5, x6)
2451_0_insert_GT(x1, x2, x3, x4, x5) → 2451_0_insert_GT(x3, x4, x5)
Cond_2451_0_insert_GT2(x1, x2, x3, x4, x5, x6) → Cond_2451_0_insert_GT2(x1, x4, x5, x6)
Cond_2451_0_insert_GT1(x1, x2, x3, x4, x5, x6, x7) → Cond_2451_0_insert_GT1(x1, x4, x5, x6, x7)
Cond_2451_0_insert_GT(x1, x2, x3, x4, x5, x6, x7) → Cond_2451_0_insert_GT(x1, x4, x5, x6, x7)

Filtered duplicate args:

2451_0_insert_GT(x1, x2, x3) → 2451_0_insert_GT(x2, x3)
Cond_2451_0_insert_GT(x1, x2, x3, x4, x5) → Cond_2451_0_insert_GT(x1, x3, x4, x5)
Cond_2451_0_insert_GT1(x1, x2, x3, x4, x5) → Cond_2451_0_insert_GT1(x1, x3, x4, x5)
Cond_2451_0_insert_GT2(x1, x2, x3, x4) → Cond_2451_0_insert_GT2(x1, x3, x4)
Cond_2451_0_insert_GT3(x1, x2, x3, x4) → Cond_2451_0_insert_GT3(x1, x3, x4)

Filtered unneeded arguments:

2372_1_createTree_InvokeMethod(x1, x2, x3, x4) → 2372_1_createTree_InvokeMethod(x1, x2, x3)
Cond_2372_1_createTree_InvokeMethod(x1, x2, x3, x4, x5) → Cond_2372_1_createTree_InvokeMethod(x1, x2, x3, x5)
Cond_2372_1_createTree_InvokeMethod1(x1, x2, x3, x4, x5) → Cond_2372_1_createTree_InvokeMethod1(x1, x2, x3, x5)
Cond_2372_1_createTree_InvokeMethod2(x1, x2, x3, x4, x5) → Cond_2372_1_createTree_InvokeMethod2(x1, x2, x3, x5)
Cond_2372_1_createTree_InvokeMethod3(x1, x2, x3, x4, x5) → Cond_2372_1_createTree_InvokeMethod3(x1, x2, x3, x5)
Cond_2451_0_insert_GT(x1, x2, x3, x4) → Cond_2451_0_insert_GT(x1, x2, x4)
2579_1_insert_InvokeMethod(x1, x2, x3) → 2579_1_insert_InvokeMethod(x1, x2)
Cond_2451_0_insert_GT1(x1, x2, x3, x4) → Cond_2451_0_insert_GT1(x1, x2, x4)
2582_1_insert_InvokeMethod(x1, x2, x3) → 2582_1_insert_InvokeMethod(x1, x2)
Cond_2451_0_insert_GT2(x1, x2, x3) → Cond_2451_0_insert_GT2(x1)
Cond_2451_0_insert_GT3(x1, x2, x3) → Cond_2451_0_insert_GT3(x1)

Filtered all non-integer terms:

2579_1_insert_InvokeMethod(x1, x2) → 2579_1_insert_InvokeMethod(x1)
2582_1_insert_InvokeMethod(x1, x2) → 2582_1_insert_InvokeMethod(x1)

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

P rules:
2372_1_createTree_InvokeMethod(2641_0_insert_Return, x0, x1) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2372_1_createTree_InvokeMethod(2642_0_insert_Return, x0, x1) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2372_1_createTree_InvokeMethod(2701_0_insert_Return, x0, x1) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
2372_1_createTree_InvokeMethod(2713_0_insert_Return, x0, x1) → 2372_1_createTree_InvokeMethod(2372_0_insert_Load(x3), x0, +(x1, 1)) | &&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1)))
R rules:
2451_0_insert_GT(x0, x1) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2)) | <(x1, x0)
2451_0_insert_GT(x0, x1) → 2582_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2)) | >=(x1, x0)
2451_0_insert_GT(x0, x1) → 2701_0_insert_Return | <(x1, x0)
2451_0_insert_GT(x0, x1) → 2713_0_insert_Return | >=(x1, x0)
2579_1_insert_InvokeMethod(2641_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2642_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2701_0_insert_Return) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2713_0_insert_Return) → 2701_0_insert_Return
2582_1_insert_InvokeMethod(2641_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2642_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2701_0_insert_Return) → 2713_0_insert_Return
2582_1_insert_InvokeMethod(2713_0_insert_Return) → 2713_0_insert_Return

Performed bisimulation on rules. Used the following equivalence classes: {[2579_1_insert_InvokeMethod_1, 2582_1_insert_InvokeMethod_1]=2579_1_insert_InvokeMethod_1, [2701_0_insert_Return, 2713_0_insert_Return, 2641_0_insert_Return, 2642_0_insert_Return]=2701_0_insert_Return, [Cond_2372_1_createTree_InvokeMethod_5, Cond_2372_1_createTree_InvokeMethod1_5, Cond_2372_1_createTree_InvokeMethod2_5, Cond_2372_1_createTree_InvokeMethod3_5]=Cond_2372_1_createTree_InvokeMethod_5}

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

P rules:
2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0, x1) → COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), 2701_0_insert_Return, x0, x1, x3)
COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0, x1, x3) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3), x0, +(x1, 1))
R rules:
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT(<(x1, x0), x0, x1, x2)
Cond_2451_0_insert_GT(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT1(>=(x1, x0), x0, x1, x2)
Cond_2451_0_insert_GT1(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT2(<(x1, x0), x0, x1)
Cond_2451_0_insert_GT2(TRUE, x0, x1) → 2701_0_insert_Return
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT3(>=(x1, x0), x0, x1)
Cond_2451_0_insert_GT3(TRUE, x0, x1) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2701_0_insert_Return) → 2701_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:
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_2451_0_insert_GT(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_2451_0_insert_GT1(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT2(x1 < x0, x0, x1)
Cond_2451_0_insert_GT2(TRUE, x0, x1) → 2701_0_insert_Return
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT3(x1 >= x0, x0, x1)
Cond_2451_0_insert_GT3(TRUE, x0, x1) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2701_0_insert_Return) → 2701_0_insert_Return

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

The set Q consists of the following terms:
2451_0_insert_GT(x0, x1)
Cond_2451_0_insert_GT(TRUE, x0, x1, x2)
Cond_2451_0_insert_GT1(TRUE, x0, x1, x2)
Cond_2451_0_insert_GT2(TRUE, x0, x1)
Cond_2451_0_insert_GT3(TRUE, x0, x1)
2579_1_insert_InvokeMethod(2701_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@c86bfb2 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 2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0, x1) → COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3, -1), >(x1, -1)), >(x0, +(x1, 1))), 2701_0_insert_Return, x0, x1, x3) the following chains were created:
• We consider the chain COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[1], x1[1], x3[1]) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)), 2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0]) → COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0]), COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[1], x1[1], x3[1]) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1)) which results in the following constraint:

(1)    (2372_0_insert_Load(x3[1])=2701_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]12372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0])≥NonInfC∧2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0])≥COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])∧(UIncreasing(COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_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)    (2372_0_insert_Load(x3[1])=2701_0_insert_Return>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], +(x1[1], 1))≥NonInfC∧2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], +(x1[1], 1))≥COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), 2701_0_insert_Return, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥))

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

(3)    (2451_0_insert_GT(x0, x1)=2701_0_insert_Return>(x0[0], +(+(x1[1], 1), 1))=TRUE>(x3[0], -1)=TRUE>(+(x1[1], 1), -1)=TRUE2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], +(x1[1], 1))≥NonInfC∧2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], +(x1[1], 1))≥COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(+(x1[1], 1), -1)), >(x0[0], +(+(x1[1], 1), 1))), 2701_0_insert_Return, x0[0], +(x1[1], 1), x3[0])∧(UIncreasing(COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_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_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[(-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_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[(-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_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[(-2)bni_43 + (-1)Bound*bni_43] + [(-1)bni_43]x1[1] + [bni_43]x0[0] ≥ 0∧[(-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_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[bni_43 + (-1)Bound*bni_43] + [bni_43]x0[0] ≥ 0∧[(-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_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])), ≥)∧[bni_43 + (-1)Bound*bni_43] + [bni_43]x0[0] ≥ 0∧[(-1)bso_44] ≥ 0)

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

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

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

(12)    (2451_0_insert_GT(x2, x3)=2701_0_insert_Return>(x0[0], +(x1[0], 1))=TRUE>(x2, -1)=TRUE>(x1[0], -1)=TRUECOND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[0], x1[0], x2)≥NonInfC∧COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[0], x1[0], x2)≥2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x2), x0[0], +(x1[0], 1))∧(UIncreasing(2372_1_CREATETREE_INVOKEMETHOD(2372_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(2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[1 + (-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(2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[1 + (-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(2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[(-1)bni_45 + (-1)Bound*bni_45] + [(-1)bni_45]x1[0] + [bni_45]x0[0] ≥ 0∧[1 + (-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(2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[bni_45 + (-1)Bound*bni_45] + [bni_45]x0[0] ≥ 0∧[1 + (-1)bso_46] ≥ 0)

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

• COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0, x1, x3) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3), x0, +(x1, 1))
• (x0[0] ≥ 0∧x2 ≥ 0∧x1[0] ≥ 0 ⇒ (UIncreasing(2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))), ≥)∧[bni_45 + (-1)Bound*bni_45] + [bni_45]x0[0] ≥ 0∧[1 + (-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) = 0
POL(FALSE) = 0
POL(2451_0_insert_GT(x1, x2)) = [-1] + [-1]x1
POL(Cond_2451_0_insert_GT(x1, x2, x3, x4)) = [-1] + [2]x4 + [-1]x2 + [-1]x1
POL(<(x1, x2)) = [2]
POL(2579_1_insert_InvokeMethod(x1)) = [-1] + x1
POL(Cond_2451_0_insert_GT1(x1, x2, x3, x4)) = [-1]x4 + [-1]x3 + [2]x2 + [-1]x1
POL(>=(x1, x2)) = [-1]
POL(Cond_2451_0_insert_GT2(x1, x2, x3)) = [-1] + x3 + x2 + [2]x1
POL(2701_0_insert_Return) = 0
POL(Cond_2451_0_insert_GT3(x1, x2, x3)) = [2] + [2]x3 + x2 + x1
POL(2372_1_CREATETREE_INVOKEMETHOD(x1, x2, x3)) = [-1] + [-1]x3 + x2
POL(COND_2372_1_CREATETREE_INVOKEMETHOD(x1, x2, x3, x4, x5)) = [-1] + [-1]x4 + x3 + [-1]x2
POL(&&(x1, x2)) = [-1]
POL(>(x1, x2)) = [-1]
POL(-1) = [-1]
POL(+(x1, x2)) = x1 + x2
POL(1) = [1]

The following pairs are in P>:

COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[1], x1[1], x3[1]) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in Pbound:

2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0]) → COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])
COND_2372_1_CREATETREE_INVOKEMETHOD(TRUE, 2701_0_insert_Return, x0[1], x1[1], x3[1]) → 2372_1_CREATETREE_INVOKEMETHOD(2372_0_insert_Load(x3[1]), x0[1], +(x1[1], 1))

The following pairs are in P:

2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0]) → COND_2372_1_CREATETREE_INVOKEMETHOD(&&(&&(>(x3[0], -1), >(x1[0], -1)), >(x0[0], +(x1[0], 1))), 2701_0_insert_Return, x0[0], x1[0], x3[0])

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

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

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

The ITRS R consists of the following rules:
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT(x1 < x0, x0, x1, x2)
Cond_2451_0_insert_GT(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT1(x1 >= x0, x0, x1, x2)
Cond_2451_0_insert_GT1(TRUE, x0, x1, x2) → 2579_1_insert_InvokeMethod(2451_0_insert_GT(x0, x2))
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT2(x1 < x0, x0, x1)
Cond_2451_0_insert_GT2(TRUE, x0, x1) → 2701_0_insert_Return
2451_0_insert_GT(x0, x1) → Cond_2451_0_insert_GT3(x1 >= x0, x0, x1)
Cond_2451_0_insert_GT3(TRUE, x0, x1) → 2701_0_insert_Return
2579_1_insert_InvokeMethod(2701_0_insert_Return) → 2701_0_insert_Return

The integer pair graph contains the following rules and edges:
(0): 2372_1_CREATETREE_INVOKEMETHOD(2701_0_insert_Return, x0[0], x1[0]) → COND_2372_1_CREATETREE_INVOKEMETHOD(x3[0] > -1 && x1[0] > -1 && x0[0] > x1[0] + 1, 2701_0_insert_Return, x0[0], x1[0], x3[0])

The set Q consists of the following terms: