(0) Obligation:

JBC Problem based on JBC Program:
package AlternatingGrowReduce2;

public class AlternatingGrowReduce2 {
AlternatingGrowReduce2 next;

public static void main(String[] argv) {
Random.args = argv;
AlternatingGrowReduce2 list = createList(Random.random());

int mode = 0;
while (list != null) {
if (mode == 0) {
list = list.next;
} else if (mode == 1) {
list = new AlternatingGrowReduce2(list);
} else if (mode > 1) {
list = list.next;
}

mode++;
if (mode > 2) {
mode = 0;
}
}
}

public AlternatingGrowReduce2(AlternatingGrowReduce2 old) {
this.next = old;
}

public static AlternatingGrowReduce2 createList(int length) {
AlternatingGrowReduce2 res = new AlternatingGrowReduce2(null);
while (length > 0) {
res = new AlternatingGrowReduce2(res);
length--;
}
return res;
}
}


package AlternatingGrowReduce2;

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

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


(1) JBCToGraph (SOUND transformation)

Constructed TerminationGraph.

(2) Obligation:

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

AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2;: Graph of 33 nodes with 1 SCC.


(3) TerminationGraphToSCCProof (SOUND transformation)

Splitted TerminationGraph to 2 SCCss.

(4) Complex Obligation (AND)

(5) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: AlternatingGrowReduce2.AlternatingGrowReduce2.createList(I)LAlternatingGrowReduce2/AlternatingGrowReduce2;
SCC calls the following helper methods:
Performed SCC analyses:
  • Used field analysis yielded the following read fields:
  • Marker field analysis yielded the following relations that could be markers:

(6) SCCToIntTRSProof (SOUND transformation)

Transformed FIGraph SCCs to intTRSs. Log:

Generated rules. Obtained 17 IRules

P rules:
f344_0_createList_LE(EOS, i38, i38) → f349_0_createList_LE(EOS, i38, i38)
f349_0_createList_LE(EOS, i38, i38) → f355_0_createList_New(EOS, i38) | >(i38, 0)
f355_0_createList_New(EOS, i38) → f363_0_createList_Duplicate(EOS, i38)
f363_0_createList_Duplicate(EOS, i38) → f369_0_createList_Load(EOS, i38)
f369_0_createList_Load(EOS, i38) → f391_0_createList_InvokeMethod(EOS, i38)
f391_0_createList_InvokeMethod(EOS, i38) → f399_0__init__Load(EOS, i38)
f399_0__init__Load(EOS, i38) → f405_0__init__InvokeMethod(EOS, i38)
f405_0__init__InvokeMethod(EOS, i38) → f411_0__init__Load(EOS, i38)
f411_0__init__Load(EOS, i38) → f416_0__init__Load(EOS, i38)
f416_0__init__Load(EOS, i38) → f420_0__init__FieldAccess(EOS, i38)
f420_0__init__FieldAccess(EOS, i38) → f426_0__init__Return(EOS, i38)
f426_0__init__Return(EOS, i38) → f430_0_createList_Store(EOS, i38)
f430_0_createList_Store(EOS, i38) → f434_0_createList_Inc(EOS, i38)
f434_0_createList_Inc(EOS, i38) → f437_0_createList_JMP(EOS, +(i38, -1)) | >(i38, 0)
f437_0_createList_JMP(EOS, i52) → f444_0_createList_Load(EOS, i52)
f444_0_createList_Load(EOS, i52) → f337_0_createList_Load(EOS, i52)
f337_0_createList_Load(EOS, i32) → f344_0_createList_LE(EOS, i32, i32)

Combined rules. Obtained 1 IRules

P rules:
f344_0_createList_LE(EOS, x0, x0) → f344_0_createList_LE(EOS, -(x0, 1), -(x0, 1)) | >(x0, 0)

Filtered ground terms:


f344_0_createList_LE(x1, x2, x3) → f344_0_createList_LE(x2, x3)
Cond_f344_0_createList_LE(x1, x2, x3, x4) → Cond_f344_0_createList_LE(x1, x3, x4)

Filtered duplicate terms:


f344_0_createList_LE(x1, x2) → f344_0_createList_LE(x2)
Cond_f344_0_createList_LE(x1, x2, x3) → Cond_f344_0_createList_LE(x1, x3)

Prepared 1 rules for path length conversion:

P rules:
f344_0_createList_LE(x0) → f344_0_createList_LE(-(x0, 1)) | >(x0, 0)

Finished conversion. Obtained 1 rules.

P rules:
f344_0_createList_LE(x0) → f344_0_createList_LE(-(x0, 1)) | >(x0, 0)

(7) Obligation:

Rules:
f344_0_createList_LE(x0) → f344_0_createList_LE(-(x0, 1)) | >(x0, 0)

(8) PolynomialOrderProcessor (EQUIVALENT transformation)

Found the following polynomial interpretation:


[f344_0_createList_LE(x2)] = x2

Therefore the following rule(s) have been dropped:


f344_0_createList_LE(x0) → f344_0_createList_LE(-(x0, 1)) | >(x0, 0)

(9) YES

(10) Obligation:

SCC of termination graph based on JBC Program.
SCC contains nodes from the following methods: AlternatingGrowReduce2.AlternatingGrowReduce2.main([Ljava/lang/String;)V
SCC calls the following helper methods:
Performed SCC analyses:
  • Used field analysis yielded the following read fields:
    • AlternatingGrowReduce2.AlternatingGrowReduce2: [next]
  • Marker field analysis yielded the following relations that could be markers:

(11) SCCToIDPv1Proof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Log:

Generated 56 rules for P and 0 rules for R.


P rules:
f560_0_main_NULL(EOS(STATIC_560), java.lang.Object(o126sub), i59, java.lang.Object(o126sub)) → f562_0_main_NULL(EOS(STATIC_562), java.lang.Object(o126sub), i59, java.lang.Object(o126sub))
f562_0_main_NULL(EOS(STATIC_562), java.lang.Object(o126sub), i59, java.lang.Object(o126sub)) → f566_0_main_Load(EOS(STATIC_566), java.lang.Object(o126sub), i59)
f566_0_main_Load(EOS(STATIC_566), java.lang.Object(o126sub), i59) → f570_0_main_NE(EOS(STATIC_570), java.lang.Object(o126sub), i59, i59)
f570_0_main_NE(EOS(STATIC_570), java.lang.Object(o126sub), i62, i62) → f574_0_main_NE(EOS(STATIC_574), java.lang.Object(o126sub), i62, i62)
f570_0_main_NE(EOS(STATIC_570), java.lang.Object(o126sub), matching1, matching2) → f575_0_main_NE(EOS(STATIC_575), java.lang.Object(o126sub), 0, 0) | &&(=(matching1, 0), =(matching2, 0))
f574_0_main_NE(EOS(STATIC_574), java.lang.Object(o126sub), i62, i62) → f577_0_main_Load(EOS(STATIC_577), java.lang.Object(o126sub), i62) | >(i62, 0)
f577_0_main_Load(EOS(STATIC_577), java.lang.Object(o126sub), i62) → f581_0_main_ConstantStackPush(EOS(STATIC_581), java.lang.Object(o126sub), i62, i62)
f581_0_main_ConstantStackPush(EOS(STATIC_581), java.lang.Object(o126sub), i62, i62) → f587_0_main_NE(EOS(STATIC_587), java.lang.Object(o126sub), i62, i62, 1)
f587_0_main_NE(EOS(STATIC_587), java.lang.Object(o126sub), matching1, matching2, matching3) → f592_0_main_NE(EOS(STATIC_592), java.lang.Object(o126sub), 1, 1, 1) | &&(&&(&&(=(i62, 1), =(matching1, 1)), =(matching2, 1)), =(matching3, 1))
f587_0_main_NE(EOS(STATIC_587), java.lang.Object(o126sub), matching1, matching2, matching3) → f593_0_main_NE(EOS(STATIC_593), java.lang.Object(o126sub), 2, 2, 1) | &&(&&(&&(=(i62, 2), =(matching1, 2)), =(matching2, 2)), =(matching3, 1))
f592_0_main_NE(EOS(STATIC_592), java.lang.Object(o126sub), matching1, matching2, matching3) → f597_0_main_New(EOS(STATIC_597), java.lang.Object(o126sub), 1) | &&(&&(=(matching1, 1), =(matching2, 1)), =(matching3, 1))
f597_0_main_New(EOS(STATIC_597), java.lang.Object(o126sub), matching1) → f603_0_main_Duplicate(EOS(STATIC_603), java.lang.Object(o126sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) | =(matching1, 1)
f603_0_main_Duplicate(EOS(STATIC_603), java.lang.Object(o126sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) → f608_0_main_Load(EOS(STATIC_608), java.lang.Object(o126sub), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) | =(matching1, 1)
f608_0_main_Load(EOS(STATIC_608), java.lang.Object(o126sub), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) → f611_0_main_InvokeMethod(EOS(STATIC_611), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) | =(matching1, 1)
f611_0_main_InvokeMethod(EOS(STATIC_611), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) → f615_0__init__Load(EOS(STATIC_615), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) | =(matching1, 1)
f615_0__init__Load(EOS(STATIC_615), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) → f627_0__init__InvokeMethod(EOS(STATIC_627), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) | =(matching1, 1)
f627_0__init__InvokeMethod(EOS(STATIC_627), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) → f631_0__init__Load(EOS(STATIC_631), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) | =(matching1, 1)
f631_0__init__Load(EOS(STATIC_631), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) → f635_0__init__Load(EOS(STATIC_635), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) | =(matching1, 1)
f635_0__init__Load(EOS(STATIC_635), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL))) → f639_0__init__FieldAccess(EOS(STATIC_639), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) | =(matching1, 1)
f639_0__init__FieldAccess(EOS(STATIC_639), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, NULL)), java.lang.Object(o126sub)) → f644_0__init__Return(EOS(STATIC_644), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), java.lang.Object(o126sub)) | =(matching1, 1)
f644_0__init__Return(EOS(STATIC_644), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), java.lang.Object(o126sub)) → f648_0_main_Store(EOS(STATIC_648), 1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub)))) | =(matching1, 1)
f648_0_main_Store(EOS(STATIC_648), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub)))) → f652_0_main_JMP(EOS(STATIC_652), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 1) | =(matching1, 1)
f652_0_main_JMP(EOS(STATIC_652), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1) → f657_0_main_Inc(EOS(STATIC_657), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 1) | =(matching1, 1)
f657_0_main_Inc(EOS(STATIC_657), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1) → f662_0_main_Load(EOS(STATIC_662), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 2) | =(matching1, 1)
f662_0_main_Load(EOS(STATIC_662), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1) → f670_0_main_ConstantStackPush(EOS(STATIC_670), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 2, 2) | =(matching1, 2)
f670_0_main_ConstantStackPush(EOS(STATIC_670), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1, matching2) → f671_0_main_LE(EOS(STATIC_671), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 2, 2, 2) | &&(=(matching1, 2), =(matching2, 2))
f671_0_main_LE(EOS(STATIC_671), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1, matching2, matching3) → f675_0_main_Load(EOS(STATIC_675), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 2) | &&(&&(=(matching1, 2), =(matching2, 2)), =(matching3, 2))
f675_0_main_Load(EOS(STATIC_675), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), matching1) → f555_0_main_Load(EOS(STATIC_555), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(o126sub))), 2) | =(matching1, 2)
f555_0_main_Load(EOS(STATIC_555), o120, i59) → f560_0_main_NULL(EOS(STATIC_560), o120, i59, o120)
f593_0_main_NE(EOS(STATIC_593), java.lang.Object(o126sub), matching1, matching2, matching3) → f599_0_main_Load(EOS(STATIC_599), java.lang.Object(o126sub), 2) | &&(&&(=(matching1, 2), =(matching2, 2)), =(matching3, 1))
f599_0_main_Load(EOS(STATIC_599), java.lang.Object(o126sub), matching1) → f605_0_main_ConstantStackPush(EOS(STATIC_605), java.lang.Object(o126sub), 2, 2) | =(matching1, 2)
f605_0_main_ConstantStackPush(EOS(STATIC_605), java.lang.Object(o126sub), matching1, matching2) → f609_0_main_LE(EOS(STATIC_609), java.lang.Object(o126sub), 2, 2, 1) | &&(=(matching1, 2), =(matching2, 2))
f609_0_main_LE(EOS(STATIC_609), java.lang.Object(o126sub), matching1, matching2, matching3) → f612_0_main_Load(EOS(STATIC_612), java.lang.Object(o126sub), 2) | &&(&&(=(matching1, 2), =(matching2, 2)), =(matching3, 1))
f612_0_main_Load(EOS(STATIC_612), java.lang.Object(o126sub), matching1) → f617_0_main_FieldAccess(EOS(STATIC_617), 2, java.lang.Object(o126sub)) | =(matching1, 2)
f617_0_main_FieldAccess(EOS(STATIC_617), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o136))) → f621_0_main_FieldAccess(EOS(STATIC_621), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o136))) | =(matching1, 2)
f621_0_main_FieldAccess(EOS(STATIC_621), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o136))) → f629_0_main_Store(EOS(STATIC_629), 2, o136) | =(matching1, 2)
f629_0_main_Store(EOS(STATIC_629), matching1, o136) → f633_0_main_Inc(EOS(STATIC_633), o136, 2) | =(matching1, 2)
f633_0_main_Inc(EOS(STATIC_633), o136, matching1) → f637_0_main_Load(EOS(STATIC_637), o136) | =(matching1, 2)
f637_0_main_Load(EOS(STATIC_637), o136) → f642_0_main_ConstantStackPush(EOS(STATIC_642), o136)
f642_0_main_ConstantStackPush(EOS(STATIC_642), o136) → f647_0_main_LE(EOS(STATIC_647), o136)
f647_0_main_LE(EOS(STATIC_647), o136) → f650_0_main_ConstantStackPush(EOS(STATIC_650), o136)
f650_0_main_ConstantStackPush(EOS(STATIC_650), o136) → f654_0_main_Store(EOS(STATIC_654), o136, 0)
f654_0_main_Store(EOS(STATIC_654), o136, matching1) → f659_0_main_JMP(EOS(STATIC_659), o136, 0) | =(matching1, 0)
f659_0_main_JMP(EOS(STATIC_659), o136, matching1) → f667_0_main_Load(EOS(STATIC_667), o136, 0) | =(matching1, 0)
f667_0_main_Load(EOS(STATIC_667), o136, matching1) → f555_0_main_Load(EOS(STATIC_555), o136, 0) | =(matching1, 0)
f575_0_main_NE(EOS(STATIC_575), java.lang.Object(o126sub), matching1, matching2) → f579_0_main_Load(EOS(STATIC_579), java.lang.Object(o126sub), 0) | &&(=(matching1, 0), =(matching2, 0))
f579_0_main_Load(EOS(STATIC_579), java.lang.Object(o126sub), matching1) → f584_0_main_FieldAccess(EOS(STATIC_584), 0, java.lang.Object(o126sub)) | =(matching1, 0)
f584_0_main_FieldAccess(EOS(STATIC_584), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o131))) → f589_0_main_FieldAccess(EOS(STATIC_589), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o131))) | =(matching1, 0)
f589_0_main_FieldAccess(EOS(STATIC_589), matching1, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, o131))) → f595_0_main_Store(EOS(STATIC_595), 0, o131) | =(matching1, 0)
f595_0_main_Store(EOS(STATIC_595), matching1, o131) → f601_0_main_JMP(EOS(STATIC_601), o131, 0) | =(matching1, 0)
f601_0_main_JMP(EOS(STATIC_601), o131, matching1) → f607_0_main_Inc(EOS(STATIC_607), o131, 0) | =(matching1, 0)
f607_0_main_Inc(EOS(STATIC_607), o131, matching1) → f610_0_main_Load(EOS(STATIC_610), o131, 1) | =(matching1, 0)
f610_0_main_Load(EOS(STATIC_610), o131, matching1) → f614_0_main_ConstantStackPush(EOS(STATIC_614), o131, 1, 1) | =(matching1, 1)
f614_0_main_ConstantStackPush(EOS(STATIC_614), o131, matching1, matching2) → f619_0_main_LE(EOS(STATIC_619), o131, 1, 1) | &&(=(matching1, 1), =(matching2, 1))
f619_0_main_LE(EOS(STATIC_619), o131, matching1, matching2) → f625_0_main_Load(EOS(STATIC_625), o131, 1) | &&(=(matching1, 1), =(matching2, 1))
f625_0_main_Load(EOS(STATIC_625), o131, matching1) → f555_0_main_Load(EOS(STATIC_555), o131, 1) | =(matching1, 1)
R rules:

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


P rules:
f560_0_main_NULL(EOS(STATIC_560), java.lang.Object(x0), 1, java.lang.Object(x0)) → f560_0_main_NULL(EOS(STATIC_560), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(x0))), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, java.lang.Object(x0))))
f560_0_main_NULL(EOS(STATIC_560), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, x0)), 2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, x0))) → f560_0_main_NULL(EOS(STATIC_560), x0, 0, x0)
f560_0_main_NULL(EOS(STATIC_560), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, x0)), 0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(EOC, x0))) → f560_0_main_NULL(EOS(STATIC_560), x0, 1, x0)
R rules:

Filtered ground terms:



f560_0_main_NULL(x1, x2, x3, x4) → f560_0_main_NULL(x2, x3, x4)
EOS(x1) → EOS
AlternatingGrowReduce2.AlternatingGrowReduce2(x1, x2) → AlternatingGrowReduce2.AlternatingGrowReduce2(x2)

Filtered duplicate args:



f560_0_main_NULL(x1, x2, x3) → f560_0_main_NULL(x2, x3)

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


P rules:
F560_0_MAIN_NULL(1, java.lang.Object(x0)) → F560_0_MAIN_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0))))
F560_0_MAIN_NULL(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0))) → F560_0_MAIN_NULL(0, x0)
F560_0_MAIN_NULL(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0))) → F560_0_MAIN_NULL(1, x0)
R rules:

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


P rules:
F560_0_MAIN_NULL'(1, java.lang.Object(x0)) → F560_0_MAIN_NULL'(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0))))
F560_0_MAIN_NULL'(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0))) → F560_0_MAIN_NULL'(0, x0)
F560_0_MAIN_NULL'(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0))) → F560_0_MAIN_NULL'(1, x0)
R rules:

(12) Obligation:

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


The following domains are used:
none


R is empty.

The integer pair graph contains the following rules and edges:
(0): F560_0_MAIN_NULL'(1, java.lang.Object(x0[0])) → F560_0_MAIN_NULL'(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))))
(1): F560_0_MAIN_NULL'(2, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1]))) → F560_0_MAIN_NULL'(0, x0[1])
(2): F560_0_MAIN_NULL'(0, java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2]))) → F560_0_MAIN_NULL'(1, x0[2])

(0) -> (0), if (2* 1java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))) →* java.lang.Object(x0[0]'))


(0) -> (1), if java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))) →* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1]))


(0) -> (2), if (2* 0java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))) →* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2])))


(1) -> (0), if (0* 1x0[1]* java.lang.Object(x0[0]))


(1) -> (1), if (0* 2x0[1]* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1]')))


(1) -> (2), if x0[1]* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2]))


(2) -> (0), if x0[2]* java.lang.Object(x0[0])


(2) -> (1), if (1* 2x0[2]* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1])))


(2) -> (2), if (1* 0x0[2]* java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2]')))



The set Q is empty.

(13) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(14) Obligation:

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

F560_0_MAIN_NULL'(pos(s(01)), java.lang.Object(x0[0])) → F560_0_MAIN_NULL'(pos(s(s(01))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))))
F560_0_MAIN_NULL'(pos(s(s(01))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1]))) → F560_0_MAIN_NULL'(pos(01), x0[1])
F560_0_MAIN_NULL'(pos(01), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2]))) → F560_0_MAIN_NULL'(pos(s(01)), x0[2])

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

(15) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


F560_0_MAIN_NULL'(pos(s(s(01))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[1]))) → F560_0_MAIN_NULL'(pos(01), x0[1])
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) :

POL(F560_0_MAIN_NULL'(x1, x2)) = 0 +
[1,1]
·x1 +
[1,0]
·x2

POL(pos(x1)) =
/1\
\1/
+
/01\
\00/
·x1

POL(s(x1)) =
/0\
\1/
+
/00\
\10/
·x1

POL(01) =
/1\
\1/

POL(java.lang.Object(x1)) =
/0\
\0/
+
/01\
\00/
·x1

POL(AlternatingGrowReduce2.AlternatingGrowReduce2(x1)) =
/0\
\1/
+
/00\
\10/
·x1

The following usable rules [FROCOS05] were oriented: none

(16) Obligation:

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

F560_0_MAIN_NULL'(pos(s(01)), java.lang.Object(x0[0])) → F560_0_MAIN_NULL'(pos(s(s(01))), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(java.lang.Object(x0[0]))))
F560_0_MAIN_NULL'(pos(01), java.lang.Object(AlternatingGrowReduce2.AlternatingGrowReduce2(x0[2]))) → F560_0_MAIN_NULL'(pos(s(01)), x0[2])

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

(17) DependencyGraphProof (EQUIVALENT transformation)

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

(18) TRUE