/export/starexec/sandbox/solver/bin/starexec_run_standard /export/starexec/sandbox/benchmark/theBenchmark.jar /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox/benchmark/theBenchmark.jar # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 867 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 148 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 50 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) IntTRS (20) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (21) YES (22) JBCTerminationSCC (23) SCCToQDPProof [SOUND, 221 ms] (24) QDP (25) UsableRulesReductionPairsProof [EQUIVALENT, 28 ms] (26) QDP (27) MRRProof [EQUIVALENT, 0 ms] (28) QDP (29) PisEmptyProof [EQUIVALENT, 0 ms] (30) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class CountMetaList { public static void main(String[] args) { Random.args = args; List l = createMetaList(); int count = countMetaList(l); } public static int countMetaList(List cur) { int res = 0; while (cur != null) { if (cur.value instanceof List) { List inner = (List) cur.value; cur.value = inner.next; cur = new List(inner.value, cur); } cur = cur.next; res++; } return res; } public static List createMetaList() { int count = Random.random(); List cur = null; for (int i = 0; i < count; i++) { int innerCount = Random.random(); List innerList = null; for (int j = innerCount; j > 0; j--) { innerList = new List(null, innerList); } cur = new List(innerList, cur); } return cur; } } class List { Object value; List next; public List(Object v, List n) { this.value = v; this.next = n; } } public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class CountMetaList { public static void main(String[] args) { Random.args = args; List l = createMetaList(); int count = countMetaList(l); } public static int countMetaList(List cur) { int res = 0; while (cur != null) { if (cur.value instanceof List) { List inner = (List) cur.value; cur.value = inner.next; cur = new List(inner.value, cur); } cur = cur.next; res++; } return res; } public static List createMetaList() { int count = Random.random(); List cur = null; for (int i = 0; i < count; i++) { int innerCount = Random.random(); List innerList = null; for (int j = innerCount; j > 0; j--) { innerList = new List(null, innerList); } cur = new List(innerList, cur); } return cur; } } class List { Object value; List next; public List(Object v, List n) { this.value = v; this.next = n; } } public class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: CountMetaList.main([Ljava/lang/String;)V: Graph of 89 nodes with 1 SCC. CountMetaList.createMetaList()LList;: Graph of 247 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: CountMetaList.createMetaList()LList; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 71 IRulesP rules: f3378_0_createMetaList_Load(EOS(STATIC_3378(java.lang.Object(ARRAY(i6)))), i491, i492, i492) -> f3381_0_createMetaList_GE(EOS(STATIC_3381(java.lang.Object(ARRAY(i6)))), i491, i492, i492, i491) :|: TRUE f3381_0_createMetaList_GE(EOS(STATIC_3381(java.lang.Object(ARRAY(i6)))), i491, i492, i492, i491) -> f3402_0_createMetaList_GE(EOS(STATIC_3402(java.lang.Object(ARRAY(i6)))), i491, i492, i492, i491) :|: i492 < i491 f3402_0_createMetaList_GE(EOS(STATIC_3402(java.lang.Object(ARRAY(i6)))), i491, i492, i492, i491) -> f3419_0_createMetaList_InvokeMethod(EOS(STATIC_3419(java.lang.Object(ARRAY(i6)))), i491, i492) :|: i492 < i491 f3419_0_createMetaList_InvokeMethod(EOS(STATIC_3419(java.lang.Object(ARRAY(i6)))), i491, i492) -> f3423_0_random_FieldAccess(EOS(STATIC_3423(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f3423_0_random_FieldAccess(EOS(STATIC_3423(java.lang.Object(ARRAY(i6)))), i491, i492) -> f3442_0_random_FieldAccess(EOS(STATIC_3442(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) :|: TRUE f3442_0_random_FieldAccess(EOS(STATIC_3442(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) -> f3469_0_random_ArrayAccess(EOS(STATIC_3469(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) :|: TRUE f3469_0_random_ArrayAccess(EOS(STATIC_3469(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) -> f3476_0_random_ArrayAccess(EOS(STATIC_3476(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) :|: TRUE f3476_0_random_ArrayAccess(EOS(STATIC_3476(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) -> f3481_0_random_ArrayAccess(EOS(STATIC_3481(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) :|: TRUE f3481_0_random_ArrayAccess(EOS(STATIC_3481(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(ARRAY(i6))) -> f3486_0_random_Store(EOS(STATIC_3486(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3486_0_random_Store(EOS(STATIC_3486(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3497_0_random_FieldAccess(EOS(STATIC_3497(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3497_0_random_FieldAccess(EOS(STATIC_3497(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3504_0_random_ConstantStackPush(EOS(STATIC_3504(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3504_0_random_ConstantStackPush(EOS(STATIC_3504(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3512_0_random_IntArithmetic(EOS(STATIC_3512(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3512_0_random_IntArithmetic(EOS(STATIC_3512(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3524_0_random_FieldAccess(EOS(STATIC_3524(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3524_0_random_FieldAccess(EOS(STATIC_3524(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3532_0_random_Load(EOS(STATIC_3532(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3532_0_random_Load(EOS(STATIC_3532(java.lang.Object(ARRAY(i6)))), i491, i492, o660) -> f3547_0_random_InvokeMethod(EOS(STATIC_3547(java.lang.Object(ARRAY(i6)))), i491, i492, o660) :|: TRUE f3547_0_random_InvokeMethod(EOS(STATIC_3547(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o679sub)) -> f3561_0_random_InvokeMethod(EOS(STATIC_3561(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o679sub)) :|: TRUE f3561_0_random_InvokeMethod(EOS(STATIC_3561(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) -> f3572_0_random_InvokeMethod(EOS(STATIC_3572(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) :|: TRUE f3572_0_random_InvokeMethod(EOS(STATIC_3572(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) -> f3583_0_length_Load(EOS(STATIC_3583(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) :|: TRUE f3583_0_length_Load(EOS(STATIC_3583(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) -> f3618_0_length_FieldAccess(EOS(STATIC_3618(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(o680sub)) :|: TRUE f3618_0_length_FieldAccess(EOS(STATIC_3618(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(java.lang.String(EOC, i560))) -> f3624_0_length_FieldAccess(EOS(STATIC_3624(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(java.lang.String(EOC, i560))) :|: i560 >= 0 f3624_0_length_FieldAccess(EOS(STATIC_3624(java.lang.Object(ARRAY(i6)))), i491, i492, java.lang.Object(java.lang.String(EOC, i560))) -> f3651_0_length_Return(EOS(STATIC_3651(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3651_0_length_Return(EOS(STATIC_3651(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3657_0_random_Return(EOS(STATIC_3657(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3657_0_random_Return(EOS(STATIC_3657(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3689_0_createMetaList_Store(EOS(STATIC_3689(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3689_0_createMetaList_Store(EOS(STATIC_3689(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3730_0_createMetaList_ConstantStackPush(EOS(STATIC_3730(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3730_0_createMetaList_ConstantStackPush(EOS(STATIC_3730(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3759_0_createMetaList_Store(EOS(STATIC_3759(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3759_0_createMetaList_Store(EOS(STATIC_3759(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3793_0_createMetaList_Load(EOS(STATIC_3793(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3793_0_createMetaList_Load(EOS(STATIC_3793(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3797_0_createMetaList_Store(EOS(STATIC_3797(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3797_0_createMetaList_Store(EOS(STATIC_3797(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f3814_0_createMetaList_Load(EOS(STATIC_3814(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f3814_0_createMetaList_Load(EOS(STATIC_3814(java.lang.Object(ARRAY(i6)))), i491, i492, i560) -> f4522_0_createMetaList_Load(EOS(STATIC_4522(java.lang.Object(ARRAY(i6)))), i491, i492, i560) :|: TRUE f4522_0_createMetaList_Load(EOS(STATIC_4522(java.lang.Object(ARRAY(i6)))), i491, i492, i686) -> f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6)))), i491, i492, i686, i686) :|: TRUE f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6)))), i491, i492, matching1, matching2) -> f4543_0_createMetaList_LE(EOS(STATIC_4543(java.lang.Object(ARRAY(i6)))), i491, i492, 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6)))), i491, i492, i702, i702) -> f4544_0_createMetaList_LE(EOS(STATIC_4544(java.lang.Object(ARRAY(i6)))), i491, i492, i702, i702) :|: TRUE f4543_0_createMetaList_LE(EOS(STATIC_4543(java.lang.Object(ARRAY(i6)))), i491, i492, matching1, matching2) -> f4554_0_createMetaList_New(EOS(STATIC_4554(java.lang.Object(ARRAY(i6)))), i491, i492) :|: 0 <= 0 && matching1 = 0 && matching2 = 0 f4554_0_createMetaList_New(EOS(STATIC_4554(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4559_0_createMetaList_Duplicate(EOS(STATIC_4559(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4559_0_createMetaList_Duplicate(EOS(STATIC_4559(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4565_0_createMetaList_Load(EOS(STATIC_4565(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4565_0_createMetaList_Load(EOS(STATIC_4565(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4572_0_createMetaList_Load(EOS(STATIC_4572(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4572_0_createMetaList_Load(EOS(STATIC_4572(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4579_0_createMetaList_InvokeMethod(EOS(STATIC_4579(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4579_0_createMetaList_InvokeMethod(EOS(STATIC_4579(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4585_0__init__Load(EOS(STATIC_4585(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4585_0__init__Load(EOS(STATIC_4585(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4590_0__init__InvokeMethod(EOS(STATIC_4590(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4590_0__init__InvokeMethod(EOS(STATIC_4590(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4602_0__init__Load(EOS(STATIC_4602(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4602_0__init__Load(EOS(STATIC_4602(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4606_0__init__Load(EOS(STATIC_4606(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4606_0__init__Load(EOS(STATIC_4606(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4611_0__init__FieldAccess(EOS(STATIC_4611(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4611_0__init__FieldAccess(EOS(STATIC_4611(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4618_0__init__Load(EOS(STATIC_4618(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4618_0__init__Load(EOS(STATIC_4618(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4627_0__init__Load(EOS(STATIC_4627(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4627_0__init__Load(EOS(STATIC_4627(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4634_0__init__FieldAccess(EOS(STATIC_4634(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4634_0__init__FieldAccess(EOS(STATIC_4634(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4640_0__init__Return(EOS(STATIC_4640(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4640_0__init__Return(EOS(STATIC_4640(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4649_0_createMetaList_Store(EOS(STATIC_4649(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4649_0_createMetaList_Store(EOS(STATIC_4649(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4655_0_createMetaList_Inc(EOS(STATIC_4655(java.lang.Object(ARRAY(i6)))), i491, i492) :|: TRUE f4655_0_createMetaList_Inc(EOS(STATIC_4655(java.lang.Object(ARRAY(i6)))), i491, i492) -> f4664_0_createMetaList_JMP(EOS(STATIC_4664(java.lang.Object(ARRAY(i6)))), i491, i492 + 1) :|: TRUE f4664_0_createMetaList_JMP(EOS(STATIC_4664(java.lang.Object(ARRAY(i6)))), i491, i718) -> f4703_0_createMetaList_Load(EOS(STATIC_4703(java.lang.Object(ARRAY(i6)))), i491, i718) :|: TRUE f4703_0_createMetaList_Load(EOS(STATIC_4703(java.lang.Object(ARRAY(i6)))), i491, i718) -> f3371_0_createMetaList_Load(EOS(STATIC_3371(java.lang.Object(ARRAY(i6)))), i491, i718) :|: TRUE f3371_0_createMetaList_Load(EOS(STATIC_3371(java.lang.Object(ARRAY(i6)))), i491, i492) -> f3378_0_createMetaList_Load(EOS(STATIC_3378(java.lang.Object(ARRAY(i6)))), i491, i492, i492) :|: TRUE f4544_0_createMetaList_LE(EOS(STATIC_4544(java.lang.Object(ARRAY(i6)))), i491, i492, i702, i702) -> f4555_0_createMetaList_New(EOS(STATIC_4555(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: i702 > 0 f4555_0_createMetaList_New(EOS(STATIC_4555(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4561_0_createMetaList_Duplicate(EOS(STATIC_4561(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4561_0_createMetaList_Duplicate(EOS(STATIC_4561(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4568_0_createMetaList_ConstantStackPush(EOS(STATIC_4568(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4568_0_createMetaList_ConstantStackPush(EOS(STATIC_4568(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4574_0_createMetaList_Load(EOS(STATIC_4574(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4574_0_createMetaList_Load(EOS(STATIC_4574(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4581_0_createMetaList_InvokeMethod(EOS(STATIC_4581(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4581_0_createMetaList_InvokeMethod(EOS(STATIC_4581(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4587_0__init__Load(EOS(STATIC_4587(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4587_0__init__Load(EOS(STATIC_4587(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4594_0__init__InvokeMethod(EOS(STATIC_4594(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4594_0__init__InvokeMethod(EOS(STATIC_4594(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4604_0__init__Load(EOS(STATIC_4604(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4604_0__init__Load(EOS(STATIC_4604(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4607_0__init__Load(EOS(STATIC_4607(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4607_0__init__Load(EOS(STATIC_4607(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4614_0__init__FieldAccess(EOS(STATIC_4614(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4614_0__init__FieldAccess(EOS(STATIC_4614(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4621_0__init__Load(EOS(STATIC_4621(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4621_0__init__Load(EOS(STATIC_4621(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4630_0__init__Load(EOS(STATIC_4630(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4630_0__init__Load(EOS(STATIC_4630(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4637_0__init__FieldAccess(EOS(STATIC_4637(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4637_0__init__FieldAccess(EOS(STATIC_4637(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4642_0__init__Return(EOS(STATIC_4642(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4642_0__init__Return(EOS(STATIC_4642(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4651_0_createMetaList_Store(EOS(STATIC_4651(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4651_0_createMetaList_Store(EOS(STATIC_4651(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4656_0_createMetaList_Inc(EOS(STATIC_4656(java.lang.Object(ARRAY(i6)))), i491, i492, i702) :|: TRUE f4656_0_createMetaList_Inc(EOS(STATIC_4656(java.lang.Object(ARRAY(i6)))), i491, i492, i702) -> f4666_0_createMetaList_JMP(EOS(STATIC_4666(java.lang.Object(ARRAY(i6)))), i491, i492, i702 + -1) :|: TRUE f4666_0_createMetaList_JMP(EOS(STATIC_4666(java.lang.Object(ARRAY(i6)))), i491, i492, i719) -> f4727_0_createMetaList_Load(EOS(STATIC_4727(java.lang.Object(ARRAY(i6)))), i491, i492, i719) :|: TRUE f4727_0_createMetaList_Load(EOS(STATIC_4727(java.lang.Object(ARRAY(i6)))), i491, i492, i719) -> f4522_0_createMetaList_Load(EOS(STATIC_4522(java.lang.Object(ARRAY(i6)))), i491, i492, i719) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6:0)))), i491:0, i492:0, i702:0, i702:0) -> f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6:0)))), i491:0, i492:0, i702:0 - 1, i702:0 - 1) :|: i702:0 > 0 f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6:0)))), i491:0, i492:0, 0, 0) -> f4539_0_createMetaList_LE(EOS(STATIC_4539(java.lang.Object(ARRAY(i6:0)))), i491:0, i492:0 + 1, i560:0, i560:0) :|: i492:0 + 1 < i491:0 && i560:0 > -1 Filtered duplicate arguments: f4539_0_createMetaList_LE(x1, x2, x3, x4, x5) -> f4539_0_createMetaList_LE(x1, x2, x3, x5) Filtered unneeded arguments: f4539_0_createMetaList_LE(x1, x2, x3, x4) -> f4539_0_createMetaList_LE(x2, x3, x4) Finished conversion. Obtained 2 rules.P rules: f4539_0_createMetaList_LE(i491:0, i492:0, i702:0) -> f4539_0_createMetaList_LE(i491:0, i492:0, i702:0 - 1) :|: i702:0 > 0 f4539_0_createMetaList_LE(i491:0, i492:0, cons_0) -> f4539_0_createMetaList_LE(i491:0, i492:0 + 1, i560:0) :|: i492:0 + 1 < i491:0 && i560:0 > -1 && cons_0 = 0 ---------------------------------------- (9) Obligation: Rules: f4539_0_createMetaList_LE(i491:0, i492:0, i702:0) -> f4539_0_createMetaList_LE(i491:0, i492:0, i702:0 - 1) :|: i702:0 > 0 f4539_0_createMetaList_LE(x, x1, x2) -> f4539_0_createMetaList_LE(x, x1 + 1, x3) :|: x1 + 1 < x && x3 > -1 && x2 = 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f4539_0_createMetaList_LE(i491:0, i492:0, i702:0) -> f4539_0_createMetaList_LE(i491:0, i492:0, arith) :|: i702:0 > 0 && arith = i702:0 - 1 f4539_0_createMetaList_LE(x4, x5, x6) -> f4539_0_createMetaList_LE(x4, x7, x8) :|: x5 + 1 < x4 && x8 > -1 && x6 = 0 && x7 = x5 + 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4539_0_createMetaList_LE(i491:0, i492:0, i702:0) -> f4539_0_createMetaList_LE(i491:0, i492:0, arith) :|: i702:0 > 0 && arith = i702:0 - 1 (2) f4539_0_createMetaList_LE(x4, x5, x6) -> f4539_0_createMetaList_LE(x4, x7, x8) :|: x5 + 1 < x4 && x8 > -1 && x6 = 0 && x7 = x5 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f4539_0_createMetaList_LE(i491:0, i492:0, i702:0) -> f4539_0_createMetaList_LE(i491:0, i492:0, arith) :|: i702:0 > 0 && arith = i702:0 - 1 (2) f4539_0_createMetaList_LE(x4, x5, x6) -> f4539_0_createMetaList_LE(x4, x7, x8) :|: x5 + 1 < x4 && x8 > -1 && x6 = 0 && x7 = x5 + 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f4539_0_createMetaList_LE(x4:0, x5:0, cons_0) -> f4539_0_createMetaList_LE(x4:0, x5:0 + 1, x8:0) :|: x5:0 + 1 < x4:0 && x8:0 > -1 && cons_0 = 0 f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0) -> f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0 - 1) :|: i702:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4539_0_createMetaList_LE(VARIABLE, VARIABLE, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f4539_0_createMetaList_LE(x4:0, x5:0, c) -> f4539_0_createMetaList_LE(x4:0, c1, x8:0) :|: c1 = x5:0 + 1 && c = 0 && (x5:0 + 1 < x4:0 && x8:0 > -1 && cons_0 = 0) f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0) -> f4539_0_createMetaList_LE(i491:0:0, i492:0:0, c2) :|: c2 = i702:0:0 - 1 && i702:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4539_0_createMetaList_LE(x, x1, x2)] = -1 + x - x1 The following rules are decreasing: f4539_0_createMetaList_LE(x4:0, x5:0, c) -> f4539_0_createMetaList_LE(x4:0, c1, x8:0) :|: c1 = x5:0 + 1 && c = 0 && (x5:0 + 1 < x4:0 && x8:0 > -1 && cons_0 = 0) The following rules are bounded: f4539_0_createMetaList_LE(x4:0, x5:0, c) -> f4539_0_createMetaList_LE(x4:0, c1, x8:0) :|: c1 = x5:0 + 1 && c = 0 && (x5:0 + 1 < x4:0 && x8:0 > -1 && cons_0 = 0) ---------------------------------------- (19) Obligation: Rules: f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0) -> f4539_0_createMetaList_LE(i491:0:0, i492:0:0, c2) :|: c2 = i702:0:0 - 1 && i702:0:0 > 0 ---------------------------------------- (20) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f4539_0_createMetaList_LE(x, x1, x2)] = x2 The following rules are decreasing: f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0) -> f4539_0_createMetaList_LE(i491:0:0, i492:0:0, c2) :|: c2 = i702:0:0 - 1 && i702:0:0 > 0 The following rules are bounded: f4539_0_createMetaList_LE(i491:0:0, i492:0:0, i702:0:0) -> f4539_0_createMetaList_LE(i491:0:0, i492:0:0, c2) :|: c2 = i702:0:0 - 1 && i702:0:0 > 0 ---------------------------------------- (21) YES ---------------------------------------- (22) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: CountMetaList.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [value, next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (23) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 56 rules for P and 0 rules for R.P rules: f4198_0_countMetaList_NULL(EOS(STATIC_4198), java.lang.Object(o869sub), java.lang.Object(o869sub)) -> f4204_0_countMetaList_NULL(EOS(STATIC_4204), java.lang.Object(o869sub), java.lang.Object(o869sub)) :|: TRUE f4204_0_countMetaList_NULL(EOS(STATIC_4204), java.lang.Object(o869sub), java.lang.Object(o869sub)) -> f4213_0_countMetaList_Load(EOS(STATIC_4213), java.lang.Object(o869sub)) :|: TRUE f4213_0_countMetaList_Load(EOS(STATIC_4213), java.lang.Object(o869sub)) -> f4221_0_countMetaList_FieldAccess(EOS(STATIC_4221), java.lang.Object(o869sub), java.lang.Object(o869sub)) :|: TRUE f4221_0_countMetaList_FieldAccess(EOS(STATIC_4221), java.lang.Object(List(EOC, o872, o874)), java.lang.Object(List(EOC, o872, o874))) -> f4227_0_countMetaList_FieldAccess(EOS(STATIC_4227), java.lang.Object(List(EOC, o872, o874)), java.lang.Object(List(EOC, o872, o874))) :|: TRUE f4227_0_countMetaList_FieldAccess(EOS(STATIC_4227), java.lang.Object(List(EOC, o872, o874)), java.lang.Object(List(EOC, o872, o874))) -> f4237_0_countMetaList_CheckCast(EOS(STATIC_4237), java.lang.Object(List(EOC, o872, o874)), o872) :|: TRUE f4237_0_countMetaList_CheckCast(EOS(STATIC_4237), java.lang.Object(List(EOC, java.lang.Object(o898sub), o874)), java.lang.Object(o898sub)) -> f4249_0_countMetaList_CheckCast(EOS(STATIC_4249), java.lang.Object(List(EOC, java.lang.Object(o898sub), o874)), java.lang.Object(o898sub)) :|: TRUE f4237_0_countMetaList_CheckCast(EOS(STATIC_4237), java.lang.Object(List(EOC, NULL, o874)), NULL) -> f4250_0_countMetaList_CheckCast(EOS(STATIC_4250), java.lang.Object(List(EOC, NULL, o874)), NULL) :|: TRUE f4249_0_countMetaList_CheckCast(EOS(STATIC_4249), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) -> f4264_0_countMetaList_CheckCast(EOS(STATIC_4264), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) :|: TRUE f4249_0_countMetaList_CheckCast(EOS(STATIC_4249), java.lang.Object(List(EOC, java.lang.Object(EOC), o874)), java.lang.Object(EOC)) -> f4265_0_countMetaList_CheckCast(EOS(STATIC_4265), java.lang.Object(List(EOC, java.lang.Object(EOC), o874)), java.lang.Object(EOC)) :|: TRUE f4264_0_countMetaList_CheckCast(EOS(STATIC_4264), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) -> f4284_0_countMetaList_EQ(EOS(STATIC_4284), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), 1) :|: TRUE f4284_0_countMetaList_EQ(EOS(STATIC_4284), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), matching1) -> f4307_0_countMetaList_Load(EOS(STATIC_4307), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) :|: 1 > 0 && matching1 = 1 f4307_0_countMetaList_Load(EOS(STATIC_4307), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) -> f4319_0_countMetaList_FieldAccess(EOS(STATIC_4319), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) :|: TRUE f4319_0_countMetaList_FieldAccess(EOS(STATIC_4319), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) -> f4336_0_countMetaList_CheckCast(EOS(STATIC_4336), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) :|: TRUE f4336_0_countMetaList_CheckCast(EOS(STATIC_4336), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) -> f4354_0_countMetaList_Store(EOS(STATIC_4354), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) :|: TRUE f4354_0_countMetaList_Store(EOS(STATIC_4354), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) -> f4365_0_countMetaList_Load(EOS(STATIC_4365), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) :|: TRUE f4365_0_countMetaList_Load(EOS(STATIC_4365), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) -> f4379_0_countMetaList_Load(EOS(STATIC_4379), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) :|: TRUE f4379_0_countMetaList_Load(EOS(STATIC_4379), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874))) -> f4385_0_countMetaList_FieldAccess(EOS(STATIC_4385), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub), java.lang.Object(List(EOC, java.lang.Object(o911sub), o874)), java.lang.Object(o911sub)) :|: TRUE f4385_0_countMetaList_FieldAccess(EOS(STATIC_4385), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997))) -> f4535_0_countMetaList_FieldAccess(EOS(STATIC_4535), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997))) :|: TRUE f4535_0_countMetaList_FieldAccess(EOS(STATIC_4535), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997))) -> f4540_0_countMetaList_FieldAccess(EOS(STATIC_4540), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), o997) :|: TRUE f4540_0_countMetaList_FieldAccess(EOS(STATIC_4540), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996, o997)), o874)), o997) -> f4552_0_countMetaList_New(EOS(STATIC_4552), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997))) :|: TRUE f4552_0_countMetaList_New(EOS(STATIC_4552), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997))) -> f4557_0_countMetaList_Duplicate(EOS(STATIC_4557), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, NULL, NULL))) :|: TRUE f4557_0_countMetaList_Duplicate(EOS(STATIC_4557), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, NULL, NULL))) -> f4563_0_countMetaList_Load(EOS(STATIC_4563), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL))) :|: TRUE f4563_0_countMetaList_Load(EOS(STATIC_4563), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, o997)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL))) -> f4570_0_countMetaList_FieldAccess(EOS(STATIC_4570), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, o996, o997))) :|: TRUE f4570_0_countMetaList_FieldAccess(EOS(STATIC_4570), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, o996, o997))) -> f4577_0_countMetaList_Load(EOS(STATIC_4577), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996) :|: TRUE f4577_0_countMetaList_Load(EOS(STATIC_4577), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996) -> f4583_0_countMetaList_InvokeMethod(EOS(STATIC_4583), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4583_0_countMetaList_InvokeMethod(EOS(STATIC_4583), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) -> f4588_0__init__Load(EOS(STATIC_4588), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4588_0__init__Load(EOS(STATIC_4588), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) -> f4596_0__init__InvokeMethod(EOS(STATIC_4596), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL))) :|: TRUE f4596_0__init__InvokeMethod(EOS(STATIC_4596), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL))) -> f4605_0__init__Load(EOS(STATIC_4605), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4605_0__init__Load(EOS(STATIC_4605), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874))) -> f4609_0__init__Load(EOS(STATIC_4609), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL))) :|: TRUE f4609_0__init__Load(EOS(STATIC_4609), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), o996, java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL))) -> f4616_0__init__FieldAccess(EOS(STATIC_4616), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), o996) :|: TRUE f4616_0__init__FieldAccess(EOS(STATIC_4616), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, NULL, NULL)), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, NULL, NULL)), o996) -> f4625_0__init__Load(EOS(STATIC_4625), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4625_0__init__Load(EOS(STATIC_4625), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874))) -> f4631_0__init__Load(EOS(STATIC_4631), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, NULL))) :|: TRUE f4631_0__init__Load(EOS(STATIC_4631), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874)), java.lang.Object(List(EOC, o996, NULL))) -> f4639_0__init__FieldAccess(EOS(STATIC_4639), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4639_0__init__FieldAccess(EOS(STATIC_4639), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o996, NULL)), java.lang.Object(List(EOC, o997, o874))) -> f4647_0__init__Return(EOS(STATIC_4647), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) :|: TRUE f4647_0__init__Return(EOS(STATIC_4647), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) -> f4653_0_countMetaList_Store(EOS(STATIC_4653), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) :|: TRUE f4653_0_countMetaList_Store(EOS(STATIC_4653), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) -> f4661_0_countMetaList_Load(EOS(STATIC_4661), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) :|: TRUE f4661_0_countMetaList_Load(EOS(STATIC_4661), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) -> f4671_0_countMetaList_FieldAccess(EOS(STATIC_4671), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) :|: TRUE f4671_0_countMetaList_FieldAccess(EOS(STATIC_4671), java.lang.Object(List(EOC, o996, java.lang.Object(List(EOC, o997, o874))))) -> f4732_0_countMetaList_Store(EOS(STATIC_4732), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4732_0_countMetaList_Store(EOS(STATIC_4732), java.lang.Object(List(EOC, o997, o874))) -> f4735_0_countMetaList_Inc(EOS(STATIC_4735), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4735_0_countMetaList_Inc(EOS(STATIC_4735), java.lang.Object(List(EOC, o997, o874))) -> f4736_0_countMetaList_JMP(EOS(STATIC_4736), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4736_0_countMetaList_JMP(EOS(STATIC_4736), java.lang.Object(List(EOC, o997, o874))) -> f4748_0_countMetaList_Load(EOS(STATIC_4748), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4748_0_countMetaList_Load(EOS(STATIC_4748), java.lang.Object(List(EOC, o997, o874))) -> f4189_0_countMetaList_Load(EOS(STATIC_4189), java.lang.Object(List(EOC, o997, o874))) :|: TRUE f4189_0_countMetaList_Load(EOS(STATIC_4189), o865) -> f4198_0_countMetaList_NULL(EOS(STATIC_4198), o865, o865) :|: TRUE f4265_0_countMetaList_CheckCast(EOS(STATIC_4265), java.lang.Object(List(EOC, java.lang.Object(EOC), o874)), java.lang.Object(EOC)) -> f4288_0_countMetaList_EQ(EOS(STATIC_4288), java.lang.Object(List(EOC, java.lang.Object(EOC), o874)), 0) :|: TRUE f4288_0_countMetaList_EQ(EOS(STATIC_4288), java.lang.Object(List(EOC, java.lang.Object(EOC), o874)), matching1) -> f4310_0_countMetaList_Load(EOS(STATIC_4310), java.lang.Object(List(EOC, java.lang.Object(EOC), o874))) :|: TRUE && matching1 = 0 f4310_0_countMetaList_Load(EOS(STATIC_4310), java.lang.Object(List(EOC, java.lang.Object(EOC), o874))) -> f4323_0_countMetaList_FieldAccess(EOS(STATIC_4323), java.lang.Object(List(EOC, java.lang.Object(EOC), o874))) :|: TRUE f4323_0_countMetaList_FieldAccess(EOS(STATIC_4323), java.lang.Object(List(EOC, java.lang.Object(EOC), o874))) -> f4341_0_countMetaList_Store(EOS(STATIC_4341), o874) :|: TRUE f4341_0_countMetaList_Store(EOS(STATIC_4341), o874) -> f4326_0_countMetaList_Store(EOS(STATIC_4326), o874) :|: TRUE f4326_0_countMetaList_Store(EOS(STATIC_4326), o874) -> f4343_0_countMetaList_Inc(EOS(STATIC_4343), o874) :|: TRUE f4343_0_countMetaList_Inc(EOS(STATIC_4343), o874) -> f4357_0_countMetaList_JMP(EOS(STATIC_4357), o874) :|: TRUE f4357_0_countMetaList_JMP(EOS(STATIC_4357), o874) -> f4374_0_countMetaList_Load(EOS(STATIC_4374), o874) :|: TRUE f4374_0_countMetaList_Load(EOS(STATIC_4374), o874) -> f4189_0_countMetaList_Load(EOS(STATIC_4189), o874) :|: TRUE f4250_0_countMetaList_CheckCast(EOS(STATIC_4250), java.lang.Object(List(EOC, NULL, o874)), NULL) -> f4267_0_countMetaList_EQ(EOS(STATIC_4267), java.lang.Object(List(EOC, NULL, o874)), 0) :|: TRUE f4267_0_countMetaList_EQ(EOS(STATIC_4267), java.lang.Object(List(EOC, NULL, o874)), matching1) -> f4291_0_countMetaList_Load(EOS(STATIC_4291), java.lang.Object(List(EOC, NULL, o874))) :|: TRUE && matching1 = 0 f4291_0_countMetaList_Load(EOS(STATIC_4291), java.lang.Object(List(EOC, NULL, o874))) -> f4313_0_countMetaList_FieldAccess(EOS(STATIC_4313), java.lang.Object(List(EOC, NULL, o874))) :|: TRUE f4313_0_countMetaList_FieldAccess(EOS(STATIC_4313), java.lang.Object(List(EOC, NULL, o874))) -> f4326_0_countMetaList_Store(EOS(STATIC_4326), o874) :|: TRUE R rules: Combined rules. Obtained 3 conditional rules for P and 0 conditional rules for R.P rules: f4198_0_countMetaList_NULL(EOS(STATIC_4198), java.lang.Object(List(EOC, NULL, o874:0)), java.lang.Object(List(EOC, NULL, o874:0))) -> f4198_0_countMetaList_NULL(EOS(STATIC_4198), o874:0, o874:0) :|: TRUE f4198_0_countMetaList_NULL(EOS(STATIC_4198), java.lang.Object(List(EOC, java.lang.Object(EOC), o874:0)), java.lang.Object(List(EOC, java.lang.Object(EOC), o874:0))) -> f4198_0_countMetaList_NULL(EOS(STATIC_4198), o874:0, o874:0) :|: TRUE f4198_0_countMetaList_NULL(EOS(STATIC_4198), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996:0, o997:0)), o874:0)), java.lang.Object(List(EOC, java.lang.Object(List(EOC, o996:0, o997:0)), o874:0))) -> f4198_0_countMetaList_NULL(EOS(STATIC_4198), java.lang.Object(List(EOC, o997:0, o874:0)), java.lang.Object(List(EOC, o997:0, o874:0))) :|: TRUE R rules: Filtered ground terms: f4198_0_countMetaList_NULL(x1, x2, x3) -> f4198_0_countMetaList_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2, x3) -> List(x2, x3) Filtered duplicate args: f4198_0_countMetaList_NULL(x1, x2) -> f4198_0_countMetaList_NULL(x2) Combined rules. Obtained 3 conditional rules for P and 0 conditional rules for R.P rules: F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(List(o996:0:0, o997:0:0)), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(o997:0:0, o874:0:0))) :|: TRUE F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(EOC), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) :|: TRUE F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(NULL, o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) :|: TRUE R rules: ---------------------------------------- (24) Obligation: Q DP problem: The TRS P consists of the following rules: F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(List(o996:0:0, o997:0:0)), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(o997:0:0, o874:0:0))) F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(EOC), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(NULL, o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (25) UsableRulesReductionPairsProof (EQUIVALENT) By using the usable rules with reduction pair processor [LPAR04] with a polynomial ordering [POLO], all dependency pairs and the corresponding usable rules [FROCOS05] can be oriented non-strictly. All non-usable rules are removed, and those dependency pairs and usable rules that have been oriented strictly or contain non-usable symbols in their left-hand side are removed as well. The following dependency pairs can be deleted: F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(EOC), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(NULL, o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(o874:0:0) No rules are removed from R. Used ordering: POLO with Polynomial interpretation [POLO]: POL(EOC) = 0 POL(F4198_0_COUNTMETALIST_NULL(x_1)) = 2*x_1 POL(List(x_1, x_2)) = 2*x_1 + x_2 POL(NULL) = 0 POL(java.lang.Object(x_1)) = x_1 ---------------------------------------- (26) Obligation: Q DP problem: The TRS P consists of the following rules: F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(List(o996:0:0, o997:0:0)), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(o997:0:0, o874:0:0))) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (27) MRRProof (EQUIVALENT) 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: F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(java.lang.Object(List(o996:0:0, o997:0:0)), o874:0:0))) -> F4198_0_COUNTMETALIST_NULL(java.lang.Object(List(o997:0:0, o874:0:0))) Used ordering: Knuth-Bendix order [KBO] with precedence:List_2 > java.lang.Object_1 > F4198_0_COUNTMETALIST_NULL_1 and weight map: F4198_0_COUNTMETALIST_NULL_1=1 java.lang.Object_1=1 List_2=0 The variable weight is 1 ---------------------------------------- (28) Obligation: Q DP problem: P is empty. R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (29) PisEmptyProof (EQUIVALENT) The TRS P is empty. Hence, there is no (P,Q,R) chain. ---------------------------------------- (30) YES