0 JBC
↳1 JBCToGraph (⇒, 341 ms)
↳2 JBCTerminationGraph
↳3 TerminationGraphToSCCProof (⇒, 0 ms)
↳4 AND
↳5 JBCTerminationSCC
↳6 SCCToIntTRSProof (⇒, 11 ms)
↳7 intTRS
↳8 PolynomialOrderProcessor (⇔, 5 ms)
↳9 YES
↳10 JBCTerminationSCC
↳11 SCCToIntTRSProof (⇒, 195 ms)
↳12 intTRS
↳13 LinearRankingProcessor (⇔, 173 ms)
↳14 YES
public class ObjectList {
Object value;
ObjectList next;
public ObjectList(Object value, ObjectList next) {
this.value = value;
this.next = next;
}
public static ObjectList createList() {
ObjectList result = null;
int length = Random.random();
while (length > 0) {
result = new ObjectList(new Object(), result);
length--;
}
return result;
}
}
public class Random {
static String[] args;
static int index = 0;
public static int random() {
String string = args[index];
index++;
return string.length();
}
}
/**
* Allegedly based on an interview question at Microsoft.
*/
public class RunningPointers {
public static boolean isCyclic(ObjectList l) {
if (l == null) {
return false;
}
ObjectList l1, l2;
l1 = l;
l2 = l.next;
while (l2 != null && l1 != l2) {
l2 = l2.next;
if (l2 == null) {
return false;
}
else if (l2 == l1) {
return true;
}
else {
l2 = l2.next;
}
l1 = l1.next;
}
return l2 != null;
}
public static void main(String[] args) {
Random.args = args;
ObjectList list = ObjectList.createList();
isCyclic(list);
}
}
Generated rules. Obtained 23 IRules
P rules:
f393_0_createList_LE(EOS, i41, i41) → f397_0_createList_LE(EOS, i41, i41)
f397_0_createList_LE(EOS, i41, i41) → f401_0_createList_New(EOS, i41) | >(i41, 0)
f401_0_createList_New(EOS, i41) → f404_0_createList_Duplicate(EOS, i41)
f404_0_createList_Duplicate(EOS, i41) → f408_0_createList_New(EOS, i41)
f408_0_createList_New(EOS, i41) → f420_0_createList_Duplicate(EOS, i41)
f420_0_createList_Duplicate(EOS, i41) → f429_0_createList_InvokeMethod(EOS, i41)
f429_0_createList_InvokeMethod(EOS, i41) → f431_0_createList_Load(EOS, i41)
f431_0_createList_Load(EOS, i41) → f433_0_createList_InvokeMethod(EOS, i41)
f433_0_createList_InvokeMethod(EOS, i41) → f437_0__init__Load(EOS, i41)
f437_0__init__Load(EOS, i41) → f441_0__init__InvokeMethod(EOS, i41)
f441_0__init__InvokeMethod(EOS, i41) → f446_0__init__Load(EOS, i41)
f446_0__init__Load(EOS, i41) → f451_0__init__Load(EOS, i41)
f451_0__init__Load(EOS, i41) → f456_0__init__FieldAccess(EOS, i41)
f456_0__init__FieldAccess(EOS, i41) → f461_0__init__Load(EOS, i41)
f461_0__init__Load(EOS, i41) → f466_0__init__Load(EOS, i41)
f466_0__init__Load(EOS, i41) → f470_0__init__FieldAccess(EOS, i41)
f470_0__init__FieldAccess(EOS, i41) → f476_0__init__Return(EOS, i41)
f476_0__init__Return(EOS, i41) → f480_0_createList_Store(EOS, i41)
f480_0_createList_Store(EOS, i41) → f484_0_createList_Inc(EOS, i41)
f484_0_createList_Inc(EOS, i41) → f488_0_createList_JMP(EOS, +(i41, -1)) | >(i41, 0)
f488_0_createList_JMP(EOS, i49) → f495_0_createList_Load(EOS, i49)
f495_0_createList_Load(EOS, i49) → f389_0_createList_Load(EOS, i49)
f389_0_createList_Load(EOS, i37) → f393_0_createList_LE(EOS, i37, i37)
Combined rules. Obtained 1 IRules
P rules:
f393_0_createList_LE(EOS, x0, x0) → f393_0_createList_LE(EOS, -(x0, 1), -(x0, 1)) | >(x0, 0)
Filtered ground terms:
f393_0_createList_LE(x1, x2, x3) → f393_0_createList_LE(x2, x3)
Cond_f393_0_createList_LE(x1, x2, x3, x4) → Cond_f393_0_createList_LE(x1, x3, x4)
Filtered duplicate terms:
f393_0_createList_LE(x1, x2) → f393_0_createList_LE(x2)
Cond_f393_0_createList_LE(x1, x2, x3) → Cond_f393_0_createList_LE(x1, x3)
Prepared 1 rules for path length conversion:
P rules:
f393_0_createList_LE(x0) → f393_0_createList_LE(-(x0, 1)) | >(x0, 0)
Finished conversion. Obtained 1 rules.
P rules:
f393_0_createList_LE(x0) → f393_0_createList_LE(-(x0, 1)) | >(x0, 0)
Found the following polynomial interpretation:
Therefore the following rule(s) have been dropped:
Generated rules. Obtained 64 IRules
P rules:
f834_0_isCyclic_NULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), java.lang.Object(o198sub)) → f837_0_isCyclic_NULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), java.lang.Object(o198sub))
f837_0_isCyclic_NULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), java.lang.Object(o198sub)) → f840_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub))
f840_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub)) → f843_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188)
f843_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188) → f850_0_isCyclic_EQ(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188, java.lang.Object(o198sub))
f850_0_isCyclic_EQ(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188, java.lang.Object(o198sub)) → f861_0_isCyclic_EQ(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188, java.lang.Object(o198sub))
f861_0_isCyclic_EQ(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub), o188, java.lang.Object(o198sub)) → f866_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub))
f866_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub)) → f873_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub))
f873_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub)) → f885_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o198sub))
f873_0_isCyclic_FieldAccess(EOS, java.lang.Object(o212sub), o188, java.lang.Object(o212sub)) → f886_0_isCyclic_FieldAccess(EOS, java.lang.Object(o212sub), o188, java.lang.Object(o212sub))
f885_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o216))) → f892_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o216)))
f892_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o216))) → f898_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o188, o216)
f898_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o188, o216) → f904_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, o216)
f904_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, o216) → f912_0_isCyclic_NONNULL(EOS, java.lang.Object(o190sub), o188, o216, o216)
f912_0_isCyclic_NONNULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub)) → f924_0_isCyclic_NONNULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub))
f924_0_isCyclic_NONNULL(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub)) → f928_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub))
f928_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub)) → f932_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub))
f932_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub)) → f941_0_isCyclic_NE(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub), o188)
f941_0_isCyclic_NE(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub), o188) → f954_0_isCyclic_NE(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub), o188)
f954_0_isCyclic_NE(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub), java.lang.Object(o236sub), o188) → f959_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub))
f959_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub)) → f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub))
f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub)) → f971_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(o236sub))
f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(o248sub), o188, java.lang.Object(o248sub)) → f972_0_isCyclic_FieldAccess(EOS, java.lang.Object(o248sub), o188, java.lang.Object(o248sub))
f971_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o253))) → f979_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o253)))
f979_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o188, java.lang.Object(ObjectList(EOC, o253))) → f982_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o188, o253)
f982_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o188, o253) → f988_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, o253)
f988_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, o253) → f993_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, o188)
f993_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub)) → f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub))
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub)) → f1012_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub))
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(o273sub), o253, java.lang.Object(o273sub)) → f1013_0_isCyclic_FieldAccess(EOS, java.lang.Object(o273sub), o253, java.lang.Object(o273sub))
f1012_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub)) → f1022_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(o270sub))
f1012_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), java.lang.Object(o276sub), java.lang.Object(o276sub)) → f1023_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), java.lang.Object(o276sub), java.lang.Object(o276sub))
f1022_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(ObjectList(EOC, o284))) → f1036_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(ObjectList(EOC, o284)))
f1036_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), o253, java.lang.Object(ObjectList(EOC, o284))) → f1044_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o253, o284)
f1044_0_isCyclic_Store(EOS, java.lang.Object(o190sub), o253, o284) → f1056_0_isCyclic_JMP(EOS, java.lang.Object(o190sub), o284, o253)
f1056_0_isCyclic_JMP(EOS, java.lang.Object(o190sub), o284, o253) → f1075_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o284, o253)
f1075_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o284, o253) → f828_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o284, o253)
f828_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o188, o189) → f834_0_isCyclic_NULL(EOS, java.lang.Object(o190sub), o188, o189, o189)
f1023_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), java.lang.Object(ObjectList(EOC, o287)), java.lang.Object(ObjectList(EOC, o287))) → f1038_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), java.lang.Object(ObjectList(EOC, o287)), java.lang.Object(ObjectList(EOC, o287)))
f1038_0_isCyclic_FieldAccess(EOS, java.lang.Object(o190sub), java.lang.Object(ObjectList(EOC, o287)), java.lang.Object(ObjectList(EOC, o287))) → f1047_0_isCyclic_Store(EOS, java.lang.Object(o190sub), java.lang.Object(ObjectList(EOC, o287)), o287)
f1047_0_isCyclic_Store(EOS, java.lang.Object(o190sub), java.lang.Object(ObjectList(EOC, o287)), o287) → f1059_0_isCyclic_JMP(EOS, java.lang.Object(o190sub), o287, java.lang.Object(ObjectList(EOC, o287)))
f1059_0_isCyclic_JMP(EOS, java.lang.Object(o190sub), o287, java.lang.Object(ObjectList(EOC, o287))) → f1081_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o287, java.lang.Object(ObjectList(EOC, o287)))
f1081_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o287, java.lang.Object(ObjectList(EOC, o287))) → f828_0_isCyclic_Load(EOS, java.lang.Object(o190sub), o287, java.lang.Object(ObjectList(EOC, o287)))
f1013_0_isCyclic_FieldAccess(EOS, java.lang.Object(o273sub), o253, java.lang.Object(o273sub)) → f1030_0_isCyclic_FieldAccess(EOS, java.lang.Object(o273sub), o253, java.lang.Object(o273sub))
f1013_0_isCyclic_FieldAccess(EOS, java.lang.Object(o279sub), java.lang.Object(o279sub), java.lang.Object(o279sub)) → f1031_0_isCyclic_FieldAccess(EOS, java.lang.Object(o279sub), java.lang.Object(o279sub), java.lang.Object(o279sub))
f1030_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o290)), o253, java.lang.Object(ObjectList(EOC, o290))) → f1040_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o290)), o253, java.lang.Object(ObjectList(EOC, o290)))
f1040_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o290)), o253, java.lang.Object(ObjectList(EOC, o290))) → f1050_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o290)), o253, o290)
f1050_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o290)), o253, o290) → f1063_0_isCyclic_JMP(EOS, java.lang.Object(ObjectList(EOC, o290)), o290, o253)
f1063_0_isCyclic_JMP(EOS, java.lang.Object(ObjectList(EOC, o290)), o290, o253) → f1088_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o290)), o290, o253)
f1088_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o290)), o290, o253) → f828_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o290)), o290, o253)
f1031_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293))) → f1042_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)))
f1042_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293))) → f1054_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)), o293)
f1054_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o293)), java.lang.Object(ObjectList(EOC, o293)), o293) → f1067_0_isCyclic_JMP(EOS, java.lang.Object(ObjectList(EOC, o293)), o293, java.lang.Object(ObjectList(EOC, o293)))
f1067_0_isCyclic_JMP(EOS, java.lang.Object(ObjectList(EOC, o293)), o293, java.lang.Object(ObjectList(EOC, o293))) → f1094_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o293)), o293, java.lang.Object(ObjectList(EOC, o293)))
f1094_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o293)), o293, java.lang.Object(ObjectList(EOC, o293))) → f828_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o293)), o293, java.lang.Object(ObjectList(EOC, o293)))
f972_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, java.lang.Object(ObjectList(EOC, o256))) → f980_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, java.lang.Object(ObjectList(EOC, o256)))
f980_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, java.lang.Object(ObjectList(EOC, o256))) → f985_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, o256)
f985_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, o256) → f991_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, o256)
f991_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o256)), o188, o256) → f999_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o256, o188)
f999_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o256, o188) → f993_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o256)), o256, o188)
f886_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, java.lang.Object(ObjectList(EOC, o219))) → f894_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, java.lang.Object(ObjectList(EOC, o219)))
f894_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, java.lang.Object(ObjectList(EOC, o219))) → f900_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219)
f900_0_isCyclic_Store(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219) → f907_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219)
f907_0_isCyclic_Load(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219) → f918_0_isCyclic_NONNULL(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219, o219)
f918_0_isCyclic_NONNULL(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219, o219) → f912_0_isCyclic_NONNULL(EOS, java.lang.Object(ObjectList(EOC, o219)), o188, o219, o219)
Combined rules. Obtained 8 IRules
P rules:
f834_0_isCyclic_NULL(EOS, java.lang.Object(x0), x1, java.lang.Object(ObjectList(EOC, java.lang.Object(x2))), java.lang.Object(ObjectList(EOC, java.lang.Object(x2)))) → f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(x0), x1, java.lang.Object(x2))
f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(x0), java.lang.Object(x1), java.lang.Object(ObjectList(EOC, x2))) → f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(x0), x2, java.lang.Object(x1))
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(x0), x1, java.lang.Object(ObjectList(EOC, x2))) → f834_0_isCyclic_NULL(EOS, java.lang.Object(x0), x2, x1, x1)
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(x0), java.lang.Object(ObjectList(EOC, x1)), java.lang.Object(ObjectList(EOC, x1))) → f834_0_isCyclic_NULL(EOS, java.lang.Object(x0), x1, java.lang.Object(ObjectList(EOC, x1)), java.lang.Object(ObjectList(EOC, x1)))
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, x0)), x1, java.lang.Object(ObjectList(EOC, x0))) → f834_0_isCyclic_NULL(EOS, java.lang.Object(ObjectList(EOC, x0)), x0, x1, x1)
f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, x0)), java.lang.Object(ObjectList(EOC, x0)), java.lang.Object(ObjectList(EOC, x0))) → f834_0_isCyclic_NULL(EOS, java.lang.Object(ObjectList(EOC, x0)), x0, java.lang.Object(ObjectList(EOC, x0)), java.lang.Object(ObjectList(EOC, x0)))
f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, x0)), java.lang.Object(x1), java.lang.Object(ObjectList(EOC, x0))) → f1002_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, x0)), x0, java.lang.Object(x1))
f834_0_isCyclic_NULL(EOS, java.lang.Object(ObjectList(EOC, java.lang.Object(x0))), x1, java.lang.Object(ObjectList(EOC, java.lang.Object(x0))), java.lang.Object(ObjectList(EOC, java.lang.Object(x0)))) → f962_0_isCyclic_FieldAccess(EOS, java.lang.Object(ObjectList(EOC, java.lang.Object(x0))), x1, java.lang.Object(x0))
Filtered ground terms:
f834_0_isCyclic_NULL(x1, x2, x3, x4, x5) → f834_0_isCyclic_NULL(x2, x3, x4, x5)
f962_0_isCyclic_FieldAccess(x1, x2, x3, x4) → f962_0_isCyclic_FieldAccess(x2, x3, x4)
f1002_0_isCyclic_FieldAccess(x1, x2, x3, x4) → f1002_0_isCyclic_FieldAccess(x2, x3, x4)
ObjectList(x1, x2) → ObjectList(x2)
Filtered duplicate terms:
f834_0_isCyclic_NULL(x1, x2, x3, x4) → f834_0_isCyclic_NULL(x1, x2, x4)
Prepared 8 rules for path length conversion:
P rules:
f834_0_isCyclic_NULL(java.lang.Object(x0), x1, java.lang.Object(ObjectList(java.lang.Object(x2)))) → f962_0_isCyclic_FieldAccess(java.lang.Object(x0), x1, java.lang.Object(x2))
f962_0_isCyclic_FieldAccess(java.lang.Object(x0), java.lang.Object(x1), java.lang.Object(ObjectList(x2))) → f1002_0_isCyclic_FieldAccess(java.lang.Object(x0), x2, java.lang.Object(x1))
f1002_0_isCyclic_FieldAccess(java.lang.Object(x0), x1, java.lang.Object(ObjectList(x2))) → f834_0_isCyclic_NULL(java.lang.Object(x0), x2, x1)
f1002_0_isCyclic_FieldAccess(java.lang.Object(x0), java.lang.Object(ObjectList(x1)), java.lang.Object(ObjectList(x1))) → f834_0_isCyclic_NULL(java.lang.Object(x0), x1, java.lang.Object(ObjectList(x1)))
f1002_0_isCyclic_FieldAccess(java.lang.Object(ObjectList(x0)), x1, java.lang.Object(ObjectList(x0))) → f834_0_isCyclic_NULL(java.lang.Object(ObjectList(x0)), x0, x1)
f1002_0_isCyclic_FieldAccess(java.lang.Object(ObjectList(x0)), java.lang.Object(ObjectList(x0)), java.lang.Object(ObjectList(x0))) → f834_0_isCyclic_NULL(java.lang.Object(ObjectList(x0)), x0, java.lang.Object(ObjectList(x0)))
f962_0_isCyclic_FieldAccess(java.lang.Object(ObjectList(x0)), java.lang.Object(x1), java.lang.Object(ObjectList(x0))) → f1002_0_isCyclic_FieldAccess(java.lang.Object(ObjectList(x0)), x0, java.lang.Object(x1))
f834_0_isCyclic_NULL(java.lang.Object(ObjectList(java.lang.Object(x0))), x1, java.lang.Object(ObjectList(java.lang.Object(x0)))) → f962_0_isCyclic_FieldAccess(java.lang.Object(ObjectList(java.lang.Object(x0))), x1, java.lang.Object(x0))
Finished conversion. Obtained 8 rules.
P rules:
f834_0_isCyclic_NULL(v27, v28, v29) → f962_0_isCyclic_FieldAccess(v30, v31, v32) | &&(&&(&&(&&(&&(&&(&&(&&(>(+(v32, 1), 1), <=(+(v32, 2), v29)), >(+(v31, 1), 0)), <=(v31, v28)), >(+(v30, 1), 1)), <=(v30, v27)), >(+(v29, 1), 3)), >(+(v28, 1), 0)), >(+(v27, 1), 1))
f962_0_isCyclic_FieldAccess(v33, v34, v35) → f1002_0_isCyclic_FieldAccess(v36, v37, v38) | &&(&&(&&(&&(&&(&&(&&(&&(>(+(v38, 1), 1), <=(v38, v34)), >(+(v37, 1), 0)), <=(+(v37, 1), v35)), >(+(v36, 1), 1)), <=(v36, v33)), >(+(v35, 1), 1)), >(+(v34, 1), 1)), >(+(v33, 1), 1))
f1002_0_isCyclic_FieldAccess(v39, v40, v41) → f834_0_isCyclic_NULL(v42, v43, v44) | &&(&&(&&(&&(&&(&&(&&(&&(>(+(v44, 1), 0), <=(v44, v40)), >(+(v43, 1), 0)), <=(+(v43, 1), v41)), >(+(v42, 1), 1)), <=(v42, v39)), >(+(v41, 1), 1)), >(+(v40, 1), 0)), >(+(v39, 1), 1))
f1002_0_isCyclic_FieldAccess(v45, v46, v47) → f834_0_isCyclic_NULL(v48, v49, v50) | &&(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(v50, 1), 1), <=(v50, v47)), <=(v50, v46)), >(+(v49, 1), 0)), <=(+(v49, 1), v47)), <=(+(v49, 1), v46)), >(+(v48, 1), 1)), <=(v48, v45)), >(+(v47, 1), 1)), >(+(v46, 1), 1)), >(+(v45, 1), 1))
f1002_0_isCyclic_FieldAccess(v51, v52, v53) → f834_0_isCyclic_NULL(v54, v55, v56) | &&(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(v56, 1), 0), <=(v56, v52)), >(+(v55, 1), 0)), <=(+(v55, 1), v53)), <=(+(v55, 1), v51)), >(+(v54, 1), 1)), <=(v54, v53)), <=(v54, v51)), >(+(v53, 1), 1)), >(+(v52, 1), 0)), >(+(v51, 1), 1))
f1002_0_isCyclic_FieldAccess(v57, v58, v59) → f834_0_isCyclic_NULL(v60, v61, v62) | &&(&&(&&(&&(&&(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(v62, 1), 1), <=(v62, v59)), <=(v62, v58)), <=(v62, v57)), >(+(v61, 1), 0)), <=(+(v61, 1), v59)), <=(+(v61, 1), v58)), <=(+(v61, 1), v57)), >(+(v60, 1), 1)), <=(v60, v59)), <=(v60, v58)), <=(v60, v57)), >(+(v59, 1), 1)), >(+(v58, 1), 1)), >(+(v57, 1), 1))
f962_0_isCyclic_FieldAccess(v63, v64, v65) → f1002_0_isCyclic_FieldAccess(v66, v67, v68) | &&(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(v68, 1), 1), <=(v68, v64)), >(+(v67, 1), 0)), <=(+(v67, 1), v65)), <=(+(v67, 1), v63)), >(+(v66, 1), 1)), <=(v66, v65)), <=(v66, v63)), >(+(v65, 1), 1)), >(+(v64, 1), 1)), >(+(v63, 1), 1))
f834_0_isCyclic_NULL(v69, v70, v71) → f962_0_isCyclic_FieldAccess(v72, v73, v74) | &&(&&(&&(&&(&&(&&(&&(&&(&&(&&(>(+(v74, 1), 1), <=(+(v74, 2), v71)), <=(+(v74, 2), v69)), >(+(v73, 1), 0)), <=(v73, v70)), >(+(v72, 1), 3)), <=(v72, v71)), <=(v72, v69)), >(+(v71, 1), 3)), >(+(v70, 1), 0)), >(+(v69, 1), 3))
Linear ranking:
where x = (x1, ... ,xn).
Therefore the following rule(s) have been dropped: