/export/starexec/sandbox2/solver/bin/starexec_run_standard /export/starexec/sandbox2/benchmark/theBenchmark.jar /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/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, 608 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 55 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 35 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 18 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 147 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 7 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 29 ms] (30) IRSwT (31) IRSwTToQDPProof [SOUND, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 82 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 17 ms] (45) IntTRS (46) PolynomialOrderProcessor [EQUIVALENT, 5 ms] (47) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class ListContentTail{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int m = IntList.nth(Random.random(),l); while (m > 0) { l = l.next; m = IntList.nth(Random.random(),l); } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } public static int nth(int n, IntList l){ while (n > 1 && l != null) { n--; l = l.next; } if (l == null) return 0; else return l.value; } } 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 ListContentTail{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int m = IntList.nth(Random.random(),l); while (m > 0) { l = l.next; m = IntList.nth(Random.random(),l); } } } class IntList { int value; IntList next; public IntList(int value, IntList next) { this.value = value; this.next = next; } public static IntList createIntList() { int i = Random.random(); IntList l = null; while (i > 0) { l = new IntList(Random.random(), l); i--; } return l; } public static int nth(int n, IntList l){ while (n > 1 && l != null) { n--; l = l.next; } if (l == null) return 0; else return l.value; } } 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: ListContentTail.main([Ljava/lang/String;)V: Graph of 256 nodes with 2 SCCs. IntList.createIntList()LIntList;: Graph of 187 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 3 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: IntList.createIntList()LIntList; 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 39 IRulesP rules: f1478_0_createIntList_LE(EOS(STATIC_1478(java.lang.Object(ARRAY(i6)))), i249, i249) -> f1494_0_createIntList_LE(EOS(STATIC_1494(java.lang.Object(ARRAY(i6)))), i249, i249) :|: TRUE f1494_0_createIntList_LE(EOS(STATIC_1494(java.lang.Object(ARRAY(i6)))), i249, i249) -> f1510_0_createIntList_New(EOS(STATIC_1510(java.lang.Object(ARRAY(i6)))), i249) :|: i249 > 0 f1510_0_createIntList_New(EOS(STATIC_1510(java.lang.Object(ARRAY(i6)))), i249) -> f1524_0_createIntList_Duplicate(EOS(STATIC_1524(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1524_0_createIntList_Duplicate(EOS(STATIC_1524(java.lang.Object(ARRAY(i6)))), i249) -> f1542_0_createIntList_InvokeMethod(EOS(STATIC_1542(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1542_0_createIntList_InvokeMethod(EOS(STATIC_1542(java.lang.Object(ARRAY(i6)))), i249) -> f1552_0_random_FieldAccess(EOS(STATIC_1552(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1552_0_random_FieldAccess(EOS(STATIC_1552(java.lang.Object(ARRAY(i6)))), i249) -> f1580_0_random_FieldAccess(EOS(STATIC_1580(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) :|: TRUE f1580_0_random_FieldAccess(EOS(STATIC_1580(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) -> f1583_0_random_ArrayAccess(EOS(STATIC_1583(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) :|: TRUE f1583_0_random_ArrayAccess(EOS(STATIC_1583(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) -> f1585_0_random_ArrayAccess(EOS(STATIC_1585(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) :|: TRUE f1585_0_random_ArrayAccess(EOS(STATIC_1585(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(ARRAY(i6))) -> f1589_0_random_Store(EOS(STATIC_1589(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1589_0_random_Store(EOS(STATIC_1589(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1598_0_random_FieldAccess(EOS(STATIC_1598(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1598_0_random_FieldAccess(EOS(STATIC_1598(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1602_0_random_ConstantStackPush(EOS(STATIC_1602(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1602_0_random_ConstantStackPush(EOS(STATIC_1602(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1608_0_random_IntArithmetic(EOS(STATIC_1608(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1608_0_random_IntArithmetic(EOS(STATIC_1608(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1619_0_random_FieldAccess(EOS(STATIC_1619(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1619_0_random_FieldAccess(EOS(STATIC_1619(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1626_0_random_Load(EOS(STATIC_1626(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1626_0_random_Load(EOS(STATIC_1626(java.lang.Object(ARRAY(i6)))), i249, o211) -> f1642_0_random_InvokeMethod(EOS(STATIC_1642(java.lang.Object(ARRAY(i6)))), i249, o211) :|: TRUE f1642_0_random_InvokeMethod(EOS(STATIC_1642(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o216sub)) -> f1649_0_random_InvokeMethod(EOS(STATIC_1649(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o216sub)) :|: TRUE f1649_0_random_InvokeMethod(EOS(STATIC_1649(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) -> f1652_0_random_InvokeMethod(EOS(STATIC_1652(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) :|: TRUE f1652_0_random_InvokeMethod(EOS(STATIC_1652(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) -> f1667_0_length_Load(EOS(STATIC_1667(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) :|: TRUE f1667_0_length_Load(EOS(STATIC_1667(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) -> f1693_0_length_FieldAccess(EOS(STATIC_1693(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(o217sub)) :|: TRUE f1693_0_length_FieldAccess(EOS(STATIC_1693(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(java.lang.String(EOC, i296))) -> f1705_0_length_FieldAccess(EOS(STATIC_1705(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(java.lang.String(EOC, i296))) :|: TRUE f1705_0_length_FieldAccess(EOS(STATIC_1705(java.lang.Object(ARRAY(i6)))), i249, java.lang.Object(java.lang.String(EOC, i296))) -> f1716_0_length_Return(EOS(STATIC_1716(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1716_0_length_Return(EOS(STATIC_1716(java.lang.Object(ARRAY(i6)))), i249) -> f1728_0_random_Return(EOS(STATIC_1728(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1728_0_random_Return(EOS(STATIC_1728(java.lang.Object(ARRAY(i6)))), i249) -> f1743_0_createIntList_Load(EOS(STATIC_1743(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1743_0_createIntList_Load(EOS(STATIC_1743(java.lang.Object(ARRAY(i6)))), i249) -> f1755_0_createIntList_InvokeMethod(EOS(STATIC_1755(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1755_0_createIntList_InvokeMethod(EOS(STATIC_1755(java.lang.Object(ARRAY(i6)))), i249) -> f1763_0__init__Load(EOS(STATIC_1763(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1763_0__init__Load(EOS(STATIC_1763(java.lang.Object(ARRAY(i6)))), i249) -> f1785_0__init__InvokeMethod(EOS(STATIC_1785(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1785_0__init__InvokeMethod(EOS(STATIC_1785(java.lang.Object(ARRAY(i6)))), i249) -> f1792_0__init__Load(EOS(STATIC_1792(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1792_0__init__Load(EOS(STATIC_1792(java.lang.Object(ARRAY(i6)))), i249) -> f1799_0__init__Load(EOS(STATIC_1799(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1799_0__init__Load(EOS(STATIC_1799(java.lang.Object(ARRAY(i6)))), i249) -> f1809_0__init__FieldAccess(EOS(STATIC_1809(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1809_0__init__FieldAccess(EOS(STATIC_1809(java.lang.Object(ARRAY(i6)))), i249) -> f1815_0__init__Load(EOS(STATIC_1815(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1815_0__init__Load(EOS(STATIC_1815(java.lang.Object(ARRAY(i6)))), i249) -> f1821_0__init__Load(EOS(STATIC_1821(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1821_0__init__Load(EOS(STATIC_1821(java.lang.Object(ARRAY(i6)))), i249) -> f1837_0__init__FieldAccess(EOS(STATIC_1837(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1837_0__init__FieldAccess(EOS(STATIC_1837(java.lang.Object(ARRAY(i6)))), i249) -> f1850_0__init__Return(EOS(STATIC_1850(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1850_0__init__Return(EOS(STATIC_1850(java.lang.Object(ARRAY(i6)))), i249) -> f1872_0_createIntList_Store(EOS(STATIC_1872(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1872_0_createIntList_Store(EOS(STATIC_1872(java.lang.Object(ARRAY(i6)))), i249) -> f1889_0_createIntList_Inc(EOS(STATIC_1889(java.lang.Object(ARRAY(i6)))), i249) :|: TRUE f1889_0_createIntList_Inc(EOS(STATIC_1889(java.lang.Object(ARRAY(i6)))), i249) -> f1898_0_createIntList_JMP(EOS(STATIC_1898(java.lang.Object(ARRAY(i6)))), i249 + -1) :|: TRUE f1898_0_createIntList_JMP(EOS(STATIC_1898(java.lang.Object(ARRAY(i6)))), i324) -> f1907_0_createIntList_Load(EOS(STATIC_1907(java.lang.Object(ARRAY(i6)))), i324) :|: TRUE f1907_0_createIntList_Load(EOS(STATIC_1907(java.lang.Object(ARRAY(i6)))), i324) -> f1424_0_createIntList_Load(EOS(STATIC_1424(java.lang.Object(ARRAY(i6)))), i324) :|: TRUE f1424_0_createIntList_Load(EOS(STATIC_1424(java.lang.Object(ARRAY(i6)))), i209) -> f1478_0_createIntList_LE(EOS(STATIC_1478(java.lang.Object(ARRAY(i6)))), i209, i209) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1478_0_createIntList_LE(EOS(STATIC_1478(java.lang.Object(ARRAY(i6:0)))), i249:0, i249:0) -> f1478_0_createIntList_LE(EOS(STATIC_1478(java.lang.Object(ARRAY(i6:0)))), i249:0 - 1, i249:0 - 1) :|: i249:0 > 0 Filtered duplicate arguments: f1478_0_createIntList_LE(x1, x2, x3) -> f1478_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f1478_0_createIntList_LE(x1, x2) -> f1478_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f1478_0_createIntList_LE(i249:0) -> f1478_0_createIntList_LE(i249:0 - 1) :|: i249:0 > 0 ---------------------------------------- (9) Obligation: Rules: f1478_0_createIntList_LE(i249:0) -> f1478_0_createIntList_LE(i249:0 - 1) :|: i249:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1478_0_createIntList_LE(i249:0) -> f1478_0_createIntList_LE(arith) :|: i249:0 > 0 && arith = i249:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1478_0_createIntList_LE(i249:0) -> f1478_0_createIntList_LE(arith) :|: i249:0 > 0 && arith = i249:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1478_0_createIntList_LE(i249:0) -> f1478_0_createIntList_LE(arith) :|: i249:0 > 0 && arith = i249:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1478_0_createIntList_LE(i249:0:0) -> f1478_0_createIntList_LE(i249:0:0 - 1) :|: i249:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1478_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1478_0_createIntList_LE(i249:0:0) -> f1478_0_createIntList_LE(c) :|: c = i249:0:0 - 1 && i249:0:0 > 0 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1478_0_createIntList_LE ] = f1478_0_createIntList_LE_1 The following rules are decreasing: f1478_0_createIntList_LE(i249:0:0) -> f1478_0_createIntList_LE(c) :|: c = i249:0:0 - 1 && i249:0:0 > 0 The following rules are bounded: f1478_0_createIntList_LE(i249:0:0) -> f1478_0_createIntList_LE(c) :|: c = i249:0:0 - 1 && i249:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListContentTail.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [next, value] *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 66 IRulesP rules: f2115_0_main_LE(EOS(STATIC_2115(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270, i374) -> f2118_0_main_LE(EOS(STATIC_2118(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270, i374) :|: TRUE f2118_0_main_LE(EOS(STATIC_2118(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270, i374) -> f2120_0_main_Load(EOS(STATIC_2120(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270) :|: i374 > 0 f2120_0_main_Load(EOS(STATIC_2120(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270) -> f2122_0_main_FieldAccess(EOS(STATIC_2122(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270) :|: TRUE f2122_0_main_FieldAccess(EOS(STATIC_2122(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), java.lang.Object(o286sub)) -> f2123_0_main_FieldAccess(EOS(STATIC_2123(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), java.lang.Object(o286sub)) :|: TRUE f2123_0_main_FieldAccess(EOS(STATIC_2123(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), java.lang.Object(IntList(EOC, o288, i375))) -> f2125_0_main_FieldAccess(EOS(STATIC_2125(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), java.lang.Object(IntList(EOC, o288, i375))) :|: TRUE f2125_0_main_FieldAccess(EOS(STATIC_2125(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), java.lang.Object(IntList(EOC, o288, i375))) -> f2127_0_main_Store(EOS(STATIC_2127(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) :|: TRUE f2127_0_main_Store(EOS(STATIC_2127(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) -> f2128_0_main_InvokeMethod(EOS(STATIC_2128(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) :|: TRUE f2128_0_main_InvokeMethod(EOS(STATIC_2128(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) -> f2130_0_random_FieldAccess(EOS(STATIC_2130(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) :|: TRUE f2130_0_random_FieldAccess(EOS(STATIC_2130(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288) -> f2132_0_random_FieldAccess(EOS(STATIC_2132(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) :|: TRUE f2132_0_random_FieldAccess(EOS(STATIC_2132(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) -> f2135_0_random_ArrayAccess(EOS(STATIC_2135(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) :|: TRUE f2135_0_random_ArrayAccess(EOS(STATIC_2135(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) -> f2139_0_random_ArrayAccess(EOS(STATIC_2139(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) :|: TRUE f2139_0_random_ArrayAccess(EOS(STATIC_2139(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(ARRAY(i265))) -> f2143_0_random_Store(EOS(STATIC_2143(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2143_0_random_Store(EOS(STATIC_2143(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2151_0_random_FieldAccess(EOS(STATIC_2151(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2151_0_random_FieldAccess(EOS(STATIC_2151(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2156_0_random_ConstantStackPush(EOS(STATIC_2156(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2156_0_random_ConstantStackPush(EOS(STATIC_2156(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2161_0_random_IntArithmetic(EOS(STATIC_2161(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2161_0_random_IntArithmetic(EOS(STATIC_2161(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2169_0_random_FieldAccess(EOS(STATIC_2169(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2169_0_random_FieldAccess(EOS(STATIC_2169(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2175_0_random_Load(EOS(STATIC_2175(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2175_0_random_Load(EOS(STATIC_2175(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) -> f2186_0_random_InvokeMethod(EOS(STATIC_2186(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, o290) :|: TRUE f2186_0_random_InvokeMethod(EOS(STATIC_2186(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o303sub)) -> f2192_0_random_InvokeMethod(EOS(STATIC_2192(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o303sub)) :|: TRUE f2192_0_random_InvokeMethod(EOS(STATIC_2192(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) -> f2205_0_random_InvokeMethod(EOS(STATIC_2205(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) :|: TRUE f2205_0_random_InvokeMethod(EOS(STATIC_2205(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) -> f2215_0_length_Load(EOS(STATIC_2215(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) :|: TRUE f2215_0_length_Load(EOS(STATIC_2215(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) -> f2236_0_length_FieldAccess(EOS(STATIC_2236(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(o304sub)) :|: TRUE f2236_0_length_FieldAccess(EOS(STATIC_2236(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(java.lang.String(EOC, i392))) -> f2247_0_length_FieldAccess(EOS(STATIC_2247(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(java.lang.String(EOC, i392))) :|: i392 >= 0 f2247_0_length_FieldAccess(EOS(STATIC_2247(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, java.lang.Object(java.lang.String(EOC, i392))) -> f2255_0_length_Return(EOS(STATIC_2255(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) :|: TRUE f2255_0_length_Return(EOS(STATIC_2255(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) -> f2262_0_random_Return(EOS(STATIC_2262(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) :|: TRUE f2262_0_random_Return(EOS(STATIC_2262(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) -> f2270_0_main_Load(EOS(STATIC_2270(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) :|: TRUE f2270_0_main_Load(EOS(STATIC_2270(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392) -> f2277_0_main_InvokeMethod(EOS(STATIC_2277(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392, o288) :|: TRUE f2277_0_main_InvokeMethod(EOS(STATIC_2277(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392, o288) -> f2285_0_nth_Load(EOS(STATIC_2285(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392, o288) :|: TRUE f2285_0_nth_Load(EOS(STATIC_2285(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392, o288) -> f2513_0_nth_Load(EOS(STATIC_2513(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o288, i392, o288) :|: TRUE f2513_0_nth_Load(EOS(STATIC_2513(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i456, o362) -> f2517_0_nth_ConstantStackPush(EOS(STATIC_2517(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i456, o362, i456) :|: TRUE f2517_0_nth_ConstantStackPush(EOS(STATIC_2517(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i456, o362, i456) -> f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i456, o362, i456, 1) :|: TRUE f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i470, o362, i470, matching1) -> f2529_0_nth_LE(EOS(STATIC_2529(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i470, o362, i470, 1) :|: TRUE && matching1 = 1 f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362, i471, matching1) -> f2530_0_nth_LE(EOS(STATIC_2530(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362, i471, 1) :|: TRUE && matching1 = 1 f2529_0_nth_LE(EOS(STATIC_2529(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i470, o362, i470, matching1) -> f2539_0_nth_Load(EOS(STATIC_2539(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, o362) :|: i470 <= 1 && matching1 = 1 f2539_0_nth_Load(EOS(STATIC_2539(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, o362) -> f2550_0_nth_NONNULL(EOS(STATIC_2550(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, o362, o362) :|: TRUE f2550_0_nth_NONNULL(EOS(STATIC_2550(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub), java.lang.Object(o381sub)) -> f2554_0_nth_NONNULL(EOS(STATIC_2554(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub), java.lang.Object(o381sub)) :|: TRUE f2550_0_nth_NONNULL(EOS(STATIC_2550(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL, NULL) -> f2555_0_nth_NONNULL(EOS(STATIC_2555(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL, NULL) :|: TRUE f2554_0_nth_NONNULL(EOS(STATIC_2554(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub), java.lang.Object(o381sub)) -> f2561_0_nth_Load(EOS(STATIC_2561(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub)) :|: TRUE f2561_0_nth_Load(EOS(STATIC_2561(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub)) -> f2567_0_nth_FieldAccess(EOS(STATIC_2567(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(o381sub)) :|: TRUE f2567_0_nth_FieldAccess(EOS(STATIC_2567(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(IntList(EOC, o392, i491))) -> f2573_0_nth_FieldAccess(EOS(STATIC_2573(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(IntList(EOC, o392, i491))) :|: TRUE f2573_0_nth_FieldAccess(EOS(STATIC_2573(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, java.lang.Object(IntList(EOC, o392, i491))) -> f2589_0_nth_Return(EOS(STATIC_2589(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) :|: TRUE f2589_0_nth_Return(EOS(STATIC_2589(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) -> f2616_0_main_Store(EOS(STATIC_2616(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) :|: TRUE f2616_0_main_Store(EOS(STATIC_2616(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) -> f2622_0_main_JMP(EOS(STATIC_2622(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) :|: TRUE f2622_0_main_JMP(EOS(STATIC_2622(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) -> f2692_0_main_Load(EOS(STATIC_2692(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) :|: TRUE f2692_0_main_Load(EOS(STATIC_2692(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) -> f2113_0_main_Load(EOS(STATIC_2113(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i491) :|: TRUE f2113_0_main_Load(EOS(STATIC_2113(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270, i366) -> f2115_0_main_LE(EOS(STATIC_2115(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o270, i366) :|: TRUE f2555_0_nth_NONNULL(EOS(STATIC_2555(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL, NULL) -> f2564_0_nth_ConstantStackPush(EOS(STATIC_2564(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363) :|: TRUE f2564_0_nth_ConstantStackPush(EOS(STATIC_2564(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363) -> f2569_0_nth_Return(EOS(STATIC_2569(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, 0) :|: TRUE f2569_0_nth_Return(EOS(STATIC_2569(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, matching1) -> f2575_0_main_Store(EOS(STATIC_2575(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, 0) :|: TRUE && matching1 = 0 f2575_0_main_Store(EOS(STATIC_2575(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, matching1) -> f2616_0_main_Store(EOS(STATIC_2616(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, 0) :|: TRUE && matching1 = 0 f2530_0_nth_LE(EOS(STATIC_2530(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362, i471, matching1) -> f2543_0_nth_Load(EOS(STATIC_2543(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362) :|: i471 > 1 && matching1 = 1 f2543_0_nth_Load(EOS(STATIC_2543(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362) -> f2552_0_nth_NULL(EOS(STATIC_2552(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, o362, o362) :|: TRUE f2552_0_nth_NULL(EOS(STATIC_2552(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, java.lang.Object(o384sub), java.lang.Object(o384sub)) -> f2557_0_nth_NULL(EOS(STATIC_2557(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, java.lang.Object(o384sub), java.lang.Object(o384sub)) :|: TRUE f2552_0_nth_NULL(EOS(STATIC_2552(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, NULL, NULL) -> f2558_0_nth_NULL(EOS(STATIC_2558(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, NULL, NULL) :|: TRUE f2557_0_nth_NULL(EOS(STATIC_2557(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, java.lang.Object(o384sub), java.lang.Object(o384sub)) -> f2565_0_nth_Inc(EOS(STATIC_2565(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, java.lang.Object(o384sub)) :|: TRUE f2565_0_nth_Inc(EOS(STATIC_2565(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, java.lang.Object(o384sub)) -> f2570_0_nth_Load(EOS(STATIC_2570(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471 + -1, java.lang.Object(o384sub)) :|: TRUE f2570_0_nth_Load(EOS(STATIC_2570(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, java.lang.Object(o384sub)) -> f2578_0_nth_FieldAccess(EOS(STATIC_2578(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, java.lang.Object(o384sub)) :|: TRUE f2578_0_nth_FieldAccess(EOS(STATIC_2578(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, java.lang.Object(IntList(EOC, o399, i497))) -> f2595_0_nth_FieldAccess(EOS(STATIC_2595(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, java.lang.Object(IntList(EOC, o399, i497))) :|: TRUE f2595_0_nth_FieldAccess(EOS(STATIC_2595(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, java.lang.Object(IntList(EOC, o399, i497))) -> f2620_0_nth_Store(EOS(STATIC_2620(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) :|: TRUE f2620_0_nth_Store(EOS(STATIC_2620(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) -> f2624_0_nth_JMP(EOS(STATIC_2624(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) :|: TRUE f2624_0_nth_JMP(EOS(STATIC_2624(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) -> f2693_0_nth_Load(EOS(STATIC_2693(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) :|: TRUE f2693_0_nth_Load(EOS(STATIC_2693(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) -> f2513_0_nth_Load(EOS(STATIC_2513(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i490, o399) :|: TRUE f2558_0_nth_NULL(EOS(STATIC_2558(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, i471, NULL, NULL) -> f2566_0_nth_Load(EOS(STATIC_2566(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL) :|: TRUE f2566_0_nth_Load(EOS(STATIC_2566(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL) -> f2571_0_nth_NONNULL(EOS(STATIC_2571(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL, NULL) :|: TRUE f2571_0_nth_NONNULL(EOS(STATIC_2571(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363, NULL, NULL) -> f2586_0_nth_ConstantStackPush(EOS(STATIC_2586(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363) :|: TRUE f2586_0_nth_ConstantStackPush(EOS(STATIC_2586(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363) -> f2564_0_nth_ConstantStackPush(EOS(STATIC_2564(java.lang.Object(ARRAY(i265)))), java.lang.Object(ARRAY(i265)), o363) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265:0)))), java.lang.Object(ARRAY(i265:0)), o363:0, i471:0, java.lang.Object(IntList(EOC, o399:0, i497:0)), i471:0, 1) -> f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265:0)))), java.lang.Object(ARRAY(i265:0)), o363:0, i471:0 - 1, o399:0, i471:0 - 1, 1) :|: i471:0 > 1 f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265:0)))), java.lang.Object(ARRAY(i265:0)), java.lang.Object(IntList(EOC, o288:0, i375:0)), i470:0, java.lang.Object(IntList(EOC, o392:0, i491:0)), i470:0, 1) -> f2522_0_nth_LE(EOS(STATIC_2522(java.lang.Object(ARRAY(i265:0)))), java.lang.Object(ARRAY(i265:0)), o288:0, i392:0, o288:0, i392:0, 1) :|: i491:0 > 0 && i392:0 > -1 && i470:0 < 2 Filtered constant ground arguments: f2522_0_nth_LE(x1, x2, x3, x4, x5, x6, x7) -> f2522_0_nth_LE(x1, x2, x3, x4, x5, x6) IntList(x1, x2, x3) -> IntList(x2, x3) Filtered duplicate arguments: f2522_0_nth_LE(x1, x2, x3, x4, x5, x6) -> f2522_0_nth_LE(x1, x2, x3, x5, x6) Filtered unneeded arguments: f2522_0_nth_LE(x1, x2, x3, x4, x5) -> f2522_0_nth_LE(x3, x4, x5) Finished conversion. Obtained 2 rules.P rules: f2522_0_nth_LE(o363:0, java.lang.Object(IntList(o399:0, i497:0)), i471:0) -> f2522_0_nth_LE(o363:0, o399:0, i471:0 - 1) :|: i471:0 > 1 f2522_0_nth_LE(java.lang.Object(IntList(o288:0, i375:0)), java.lang.Object(IntList(o392:0, i491:0)), i470:0) -> f2522_0_nth_LE(o288:0, o288:0, i392:0) :|: i392:0 > -1 && i470:0 < 2 && i491:0 > 0 ---------------------------------------- (22) Obligation: Rules: f2522_0_nth_LE(o363:0, java.lang.Object(IntList(o399:0, i497:0)), i471:0) -> f2522_0_nth_LE(o363:0, o399:0, i471:0 - 1) :|: i471:0 > 1 f2522_0_nth_LE(java.lang.Object(IntList(o288:0, i375:0)), java.lang.Object(IntList(o392:0, i491:0)), i470:0) -> f2522_0_nth_LE(o288:0, o288:0, i392:0) :|: i392:0 > -1 && i470:0 < 2 && i491:0 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2522_0_nth_LE(o363:0, java.lang.Object(IntList(o399:0, i497:0)), i471:0) -> f2522_0_nth_LE(o363:0, o399:0, arith) :|: i471:0 > 1 && arith = i471:0 - 1 f2522_0_nth_LE(java.lang.Object(IntList(o288:0, i375:0)), java.lang.Object(IntList(o392:0, i491:0)), i470:0) -> f2522_0_nth_LE(o288:0, o288:0, i392:0) :|: i392:0 > -1 && i470:0 < 2 && i491:0 > 0 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2522_0_nth_LE(o363:0, java.lang.Object(IntList(o399:0, i497:0)), i471:0) -> f2522_0_nth_LE(o363:0, o399:0, arith) :|: i471:0 > 1 && arith = i471:0 - 1 (2) f2522_0_nth_LE(java.lang.Object(IntList(o288:0, i375:0)), java.lang.Object(IntList(o392:0, i491:0)), i470:0) -> f2522_0_nth_LE(o288:0, o288:0, i392:0) :|: i392:0 > -1 && i470:0 < 2 && i491:0 > 0 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2522_0_nth_LE(o363:0, java.lang.Object(IntList(o399:0, i497:0)), i471:0) -> f2522_0_nth_LE(o363:0, o399:0, arith) :|: i471:0 > 1 && arith = i471:0 - 1 (2) f2522_0_nth_LE(java.lang.Object(IntList(o288:0, i375:0)), java.lang.Object(IntList(o392:0, i491:0)), i470:0) -> f2522_0_nth_LE(o288:0, o288:0, i392:0) :|: i392:0 > -1 && i470:0 < 2 && i491:0 > 0 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2522_0_nth_LE(o363:0:0, java.lang.Object(IntList(o399:0:0, i497:0:0)), i471:0:0) -> f2522_0_nth_LE(o363:0:0, o399:0:0, i471:0:0 - 1) :|: i471:0:0 > 1 f2522_0_nth_LE(java.lang.Object(IntList(o288:0:0, i375:0:0)), java.lang.Object(IntList(o392:0:0, i491:0:0)), i470:0:0) -> f2522_0_nth_LE(o288:0:0, o288:0:0, i392:0:0) :|: i392:0:0 > -1 && i470:0:0 < 2 && i491:0:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2522_0_nth_LE(VARIABLE, VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE, VARIABLE) Removed predefined arithmetic. ---------------------------------------- (30) Obligation: Rules: f2522_0_nth_LE(o363:0:0, java.lang.Object(IntList(o399:0:0, i497:0:0))) -> f2522_0_nth_LE(o363:0:0, o399:0:0) f2522_0_nth_LE(java.lang.Object(IntList(o288:0:0, i375:0:0)), java.lang.Object(IntList(o392:0:0, i491:0:0))) -> f2522_0_nth_LE(o288:0:0, o288:0:0) ---------------------------------------- (31) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (32) Obligation: Q DP problem: The TRS P consists of the following rules: f2522_0_nth_LE(o363:0:0, java.lang.Object(IntList(o399:0:0, i497:0:0))) -> f2522_0_nth_LE(o363:0:0, o399:0:0) f2522_0_nth_LE(java.lang.Object(IntList(o288:0:0, i375:0:0)), java.lang.Object(IntList(o392:0:0, i491:0:0))) -> f2522_0_nth_LE(o288:0:0, o288:0:0) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (33) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *f2522_0_nth_LE(o363:0:0, java.lang.Object(IntList(o399:0:0, i497:0:0))) -> f2522_0_nth_LE(o363:0:0, o399:0:0) The graph contains the following edges 1 >= 1, 2 > 2 *f2522_0_nth_LE(java.lang.Object(IntList(o288:0:0, i375:0:0)), java.lang.Object(IntList(o392:0:0, i491:0:0))) -> f2522_0_nth_LE(o288:0:0, o288:0:0) The graph contains the following edges 1 > 1, 1 > 2 ---------------------------------------- (34) YES ---------------------------------------- (35) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListContentTail.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [next] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (36) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 14 IRulesP rules: f2040_0_nth_ConstantStackPush(EOS(STATIC_2040), i358, o269, i358) -> f2042_0_nth_LE(EOS(STATIC_2042), i358, o269, i358, 1) :|: TRUE f2042_0_nth_LE(EOS(STATIC_2042), i362, o269, i362, matching1) -> f2044_0_nth_LE(EOS(STATIC_2044), i362, o269, i362, 1) :|: TRUE && matching1 = 1 f2044_0_nth_LE(EOS(STATIC_2044), i362, o269, i362, matching1) -> f2047_0_nth_Load(EOS(STATIC_2047), i362, o269) :|: i362 > 1 && matching1 = 1 f2047_0_nth_Load(EOS(STATIC_2047), i362, o269) -> f2052_0_nth_NULL(EOS(STATIC_2052), i362, o269, o269) :|: TRUE f2052_0_nth_NULL(EOS(STATIC_2052), i362, java.lang.Object(o275sub), java.lang.Object(o275sub)) -> f2056_0_nth_NULL(EOS(STATIC_2056), i362, java.lang.Object(o275sub), java.lang.Object(o275sub)) :|: TRUE f2056_0_nth_NULL(EOS(STATIC_2056), i362, java.lang.Object(o275sub), java.lang.Object(o275sub)) -> f2060_0_nth_Inc(EOS(STATIC_2060), i362, java.lang.Object(o275sub)) :|: TRUE f2060_0_nth_Inc(EOS(STATIC_2060), i362, java.lang.Object(o275sub)) -> f2068_0_nth_Load(EOS(STATIC_2068), i362 + -1, java.lang.Object(o275sub)) :|: TRUE f2068_0_nth_Load(EOS(STATIC_2068), i364, java.lang.Object(o275sub)) -> f2078_0_nth_FieldAccess(EOS(STATIC_2078), i364, java.lang.Object(o275sub)) :|: TRUE f2078_0_nth_FieldAccess(EOS(STATIC_2078), i364, java.lang.Object(IntList(EOC, o282))) -> f2085_0_nth_FieldAccess(EOS(STATIC_2085), i364, java.lang.Object(IntList(EOC, o282))) :|: TRUE f2085_0_nth_FieldAccess(EOS(STATIC_2085), i364, java.lang.Object(IntList(EOC, o282))) -> f2112_0_nth_Store(EOS(STATIC_2112), i364, o282) :|: TRUE f2112_0_nth_Store(EOS(STATIC_2112), i364, o282) -> f2114_0_nth_JMP(EOS(STATIC_2114), i364, o282) :|: TRUE f2114_0_nth_JMP(EOS(STATIC_2114), i364, o282) -> f2116_0_nth_Load(EOS(STATIC_2116), i364, o282) :|: TRUE f2116_0_nth_Load(EOS(STATIC_2116), i364, o282) -> f2038_0_nth_Load(EOS(STATIC_2038), i364, o282) :|: TRUE f2038_0_nth_Load(EOS(STATIC_2038), i358, o269) -> f2040_0_nth_ConstantStackPush(EOS(STATIC_2040), i358, o269, i358) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2040_0_nth_ConstantStackPush(EOS(STATIC_2040), i358:0, java.lang.Object(IntList(EOC, o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(EOS(STATIC_2040), i358:0 - 1, o282:0, i358:0 - 1) :|: i358:0 > 1 Filtered constant ground arguments: f2040_0_nth_ConstantStackPush(x1, x2, x3, x4) -> f2040_0_nth_ConstantStackPush(x2, x3, x4) EOS(x1) -> EOS IntList(x1, x2) -> IntList(x2) Filtered duplicate arguments: f2040_0_nth_ConstantStackPush(x1, x2, x3) -> f2040_0_nth_ConstantStackPush(x2, x3) Finished conversion. Obtained 1 rules.P rules: f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(o282:0, i358:0 - 1) :|: i358:0 > 1 ---------------------------------------- (37) Obligation: Rules: f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(o282:0, i358:0 - 1) :|: i358:0 > 1 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(o282:0, arith) :|: i358:0 > 1 && arith = i358:0 - 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(o282:0, arith) :|: i358:0 > 1 && arith = i358:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0)), i358:0) -> f2040_0_nth_ConstantStackPush(o282:0, arith) :|: i358:0 > 1 && arith = i358:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f2040_0_nth_ConstantStackPush(java.lang.Object(IntList(o282:0:0)), i358:0:0) -> f2040_0_nth_ConstantStackPush(o282:0:0, i358:0:0 - 1) :|: i358:0:0 > 1 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2040_0_nth_ConstantStackPush(VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f2040_0_nth_ConstantStackPush(c, i358:0:0) -> f2040_0_nth_ConstantStackPush(o282:0:0, c1) :|: c1 = i358:0:0 - 1 && c = 0 && i358:0:0 > 1 ---------------------------------------- (46) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2040_0_nth_ConstantStackPush(x, x1)] = x1 The following rules are decreasing: f2040_0_nth_ConstantStackPush(c, i358:0:0) -> f2040_0_nth_ConstantStackPush(o282:0:0, c1) :|: c1 = i358:0:0 - 1 && c = 0 && i358:0:0 > 1 The following rules are bounded: f2040_0_nth_ConstantStackPush(c, i358:0:0) -> f2040_0_nth_ConstantStackPush(o282:0:0, c1) :|: c1 = i358:0:0 - 1 && c = 0 && i358:0:0 > 1 ---------------------------------------- (47) YES