/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, 582 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 57 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 19 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 16 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 8 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 6 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 12 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (32) YES (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 21 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 20 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 24 ms] (43) IntTRS (44) RankingReductionPairProof [EQUIVALENT, 15 ms] (45) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class ListContentArbitrary{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int n = Random.random(); int m = l.nth(n); while (m > 0) m--; } } 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 int nth(int n){ IntList l = this; while (n > 1) { n--; l = l.next; } 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 ListContentArbitrary{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); int n = Random.random(); int m = l.nth(n); while (m > 0) m--; } } 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 int nth(int n){ IntList l = this; while (n > 1) { n--; l = l.next; } 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: ListContentArbitrary.main([Ljava/lang/String;)V: Graph of 187 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: f1752_0_createIntList_LE(EOS(STATIC_1752(java.lang.Object(ARRAY(i6)))), i314, i314) -> f1774_0_createIntList_LE(EOS(STATIC_1774(java.lang.Object(ARRAY(i6)))), i314, i314) :|: TRUE f1774_0_createIntList_LE(EOS(STATIC_1774(java.lang.Object(ARRAY(i6)))), i314, i314) -> f1798_0_createIntList_New(EOS(STATIC_1798(java.lang.Object(ARRAY(i6)))), i314) :|: i314 > 0 f1798_0_createIntList_New(EOS(STATIC_1798(java.lang.Object(ARRAY(i6)))), i314) -> f1809_0_createIntList_Duplicate(EOS(STATIC_1809(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f1809_0_createIntList_Duplicate(EOS(STATIC_1809(java.lang.Object(ARRAY(i6)))), i314) -> f1815_0_createIntList_InvokeMethod(EOS(STATIC_1815(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f1815_0_createIntList_InvokeMethod(EOS(STATIC_1815(java.lang.Object(ARRAY(i6)))), i314) -> f1833_0_random_FieldAccess(EOS(STATIC_1833(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f1833_0_random_FieldAccess(EOS(STATIC_1833(java.lang.Object(ARRAY(i6)))), i314) -> f1877_0_random_FieldAccess(EOS(STATIC_1877(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) :|: TRUE f1877_0_random_FieldAccess(EOS(STATIC_1877(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) -> f1887_0_random_ArrayAccess(EOS(STATIC_1887(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) :|: TRUE f1887_0_random_ArrayAccess(EOS(STATIC_1887(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) -> f1890_0_random_ArrayAccess(EOS(STATIC_1890(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) :|: TRUE f1890_0_random_ArrayAccess(EOS(STATIC_1890(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(ARRAY(i6))) -> f1896_0_random_Store(EOS(STATIC_1896(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1896_0_random_Store(EOS(STATIC_1896(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1904_0_random_FieldAccess(EOS(STATIC_1904(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1904_0_random_FieldAccess(EOS(STATIC_1904(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1910_0_random_ConstantStackPush(EOS(STATIC_1910(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1910_0_random_ConstantStackPush(EOS(STATIC_1910(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1919_0_random_IntArithmetic(EOS(STATIC_1919(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1919_0_random_IntArithmetic(EOS(STATIC_1919(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1930_0_random_FieldAccess(EOS(STATIC_1930(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1930_0_random_FieldAccess(EOS(STATIC_1930(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1935_0_random_Load(EOS(STATIC_1935(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1935_0_random_Load(EOS(STATIC_1935(java.lang.Object(ARRAY(i6)))), i314, o197) -> f1951_0_random_InvokeMethod(EOS(STATIC_1951(java.lang.Object(ARRAY(i6)))), i314, o197) :|: TRUE f1951_0_random_InvokeMethod(EOS(STATIC_1951(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o207sub)) -> f1961_0_random_InvokeMethod(EOS(STATIC_1961(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o207sub)) :|: TRUE f1961_0_random_InvokeMethod(EOS(STATIC_1961(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) -> f1969_0_random_InvokeMethod(EOS(STATIC_1969(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) :|: TRUE f1969_0_random_InvokeMethod(EOS(STATIC_1969(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) -> f1984_0_length_Load(EOS(STATIC_1984(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) :|: TRUE f1984_0_length_Load(EOS(STATIC_1984(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) -> f1996_0_length_FieldAccess(EOS(STATIC_1996(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(o208sub)) :|: TRUE f1996_0_length_FieldAccess(EOS(STATIC_1996(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(java.lang.String(EOC, i373))) -> f2002_0_length_FieldAccess(EOS(STATIC_2002(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(java.lang.String(EOC, i373))) :|: TRUE f2002_0_length_FieldAccess(EOS(STATIC_2002(java.lang.Object(ARRAY(i6)))), i314, java.lang.Object(java.lang.String(EOC, i373))) -> f2026_0_length_Return(EOS(STATIC_2026(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2026_0_length_Return(EOS(STATIC_2026(java.lang.Object(ARRAY(i6)))), i314) -> f2031_0_random_Return(EOS(STATIC_2031(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2031_0_random_Return(EOS(STATIC_2031(java.lang.Object(ARRAY(i6)))), i314) -> f2037_0_createIntList_Load(EOS(STATIC_2037(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2037_0_createIntList_Load(EOS(STATIC_2037(java.lang.Object(ARRAY(i6)))), i314) -> f2041_0_createIntList_InvokeMethod(EOS(STATIC_2041(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2041_0_createIntList_InvokeMethod(EOS(STATIC_2041(java.lang.Object(ARRAY(i6)))), i314) -> f2102_0__init__Load(EOS(STATIC_2102(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2102_0__init__Load(EOS(STATIC_2102(java.lang.Object(ARRAY(i6)))), i314) -> f2134_0__init__InvokeMethod(EOS(STATIC_2134(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2134_0__init__InvokeMethod(EOS(STATIC_2134(java.lang.Object(ARRAY(i6)))), i314) -> f2140_0__init__Load(EOS(STATIC_2140(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2140_0__init__Load(EOS(STATIC_2140(java.lang.Object(ARRAY(i6)))), i314) -> f2185_0__init__Load(EOS(STATIC_2185(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2185_0__init__Load(EOS(STATIC_2185(java.lang.Object(ARRAY(i6)))), i314) -> f2230_0__init__FieldAccess(EOS(STATIC_2230(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2230_0__init__FieldAccess(EOS(STATIC_2230(java.lang.Object(ARRAY(i6)))), i314) -> f2245_0__init__Load(EOS(STATIC_2245(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2245_0__init__Load(EOS(STATIC_2245(java.lang.Object(ARRAY(i6)))), i314) -> f2296_0__init__Load(EOS(STATIC_2296(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2296_0__init__Load(EOS(STATIC_2296(java.lang.Object(ARRAY(i6)))), i314) -> f2305_0__init__FieldAccess(EOS(STATIC_2305(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2305_0__init__FieldAccess(EOS(STATIC_2305(java.lang.Object(ARRAY(i6)))), i314) -> f2327_0__init__Return(EOS(STATIC_2327(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2327_0__init__Return(EOS(STATIC_2327(java.lang.Object(ARRAY(i6)))), i314) -> f2377_0_createIntList_Store(EOS(STATIC_2377(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2377_0_createIntList_Store(EOS(STATIC_2377(java.lang.Object(ARRAY(i6)))), i314) -> f2392_0_createIntList_Inc(EOS(STATIC_2392(java.lang.Object(ARRAY(i6)))), i314) :|: TRUE f2392_0_createIntList_Inc(EOS(STATIC_2392(java.lang.Object(ARRAY(i6)))), i314) -> f2414_0_createIntList_JMP(EOS(STATIC_2414(java.lang.Object(ARRAY(i6)))), i314 + -1) :|: TRUE f2414_0_createIntList_JMP(EOS(STATIC_2414(java.lang.Object(ARRAY(i6)))), i450) -> f2430_0_createIntList_Load(EOS(STATIC_2430(java.lang.Object(ARRAY(i6)))), i450) :|: TRUE f2430_0_createIntList_Load(EOS(STATIC_2430(java.lang.Object(ARRAY(i6)))), i450) -> f1682_0_createIntList_Load(EOS(STATIC_1682(java.lang.Object(ARRAY(i6)))), i450) :|: TRUE f1682_0_createIntList_Load(EOS(STATIC_1682(java.lang.Object(ARRAY(i6)))), i273) -> f1752_0_createIntList_LE(EOS(STATIC_1752(java.lang.Object(ARRAY(i6)))), i273, i273) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1752_0_createIntList_LE(EOS(STATIC_1752(java.lang.Object(ARRAY(i6:0)))), i314:0, i314:0) -> f1752_0_createIntList_LE(EOS(STATIC_1752(java.lang.Object(ARRAY(i6:0)))), i314:0 - 1, i314:0 - 1) :|: i314:0 > 0 Filtered duplicate arguments: f1752_0_createIntList_LE(x1, x2, x3) -> f1752_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f1752_0_createIntList_LE(x1, x2) -> f1752_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f1752_0_createIntList_LE(i314:0) -> f1752_0_createIntList_LE(i314:0 - 1) :|: i314:0 > 0 ---------------------------------------- (9) Obligation: Rules: f1752_0_createIntList_LE(i314:0) -> f1752_0_createIntList_LE(i314:0 - 1) :|: i314:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1752_0_createIntList_LE(i314:0) -> f1752_0_createIntList_LE(arith) :|: i314:0 > 0 && arith = i314:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1752_0_createIntList_LE(i314:0) -> f1752_0_createIntList_LE(arith) :|: i314:0 > 0 && arith = i314:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1752_0_createIntList_LE(i314:0) -> f1752_0_createIntList_LE(arith) :|: i314:0 > 0 && arith = i314:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1752_0_createIntList_LE(i314:0:0) -> f1752_0_createIntList_LE(i314:0:0 - 1) :|: i314:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1752_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1752_0_createIntList_LE(i314:0:0) -> f1752_0_createIntList_LE(c) :|: c = i314:0:0 - 1 && i314:0:0 > 0 ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1752_0_createIntList_LE ] = f1752_0_createIntList_LE_1 The following rules are decreasing: f1752_0_createIntList_LE(i314:0:0) -> f1752_0_createIntList_LE(c) :|: c = i314:0:0 - 1 && i314:0:0 > 0 The following rules are bounded: f1752_0_createIntList_LE(i314:0:0) -> f1752_0_createIntList_LE(c) :|: c = i314:0:0 - 1 && i314:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListContentArbitrary.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 6 IRulesP rules: f2638_0_main_LE(EOS(STATIC_2638), i523, i523) -> f2668_0_main_LE(EOS(STATIC_2668), i523, i523) :|: TRUE f2668_0_main_LE(EOS(STATIC_2668), i523, i523) -> f2671_0_main_Inc(EOS(STATIC_2671), i523) :|: i523 > 0 f2671_0_main_Inc(EOS(STATIC_2671), i523) -> f2711_0_main_JMP(EOS(STATIC_2711), i523 + -1) :|: TRUE f2711_0_main_JMP(EOS(STATIC_2711), i530) -> f2713_0_main_Load(EOS(STATIC_2713), i530) :|: TRUE f2713_0_main_Load(EOS(STATIC_2713), i530) -> f2623_0_main_Load(EOS(STATIC_2623), i530) :|: TRUE f2623_0_main_Load(EOS(STATIC_2623), i508) -> f2638_0_main_LE(EOS(STATIC_2638), i508, i508) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2638_0_main_LE(EOS(STATIC_2638), i523:0, i523:0) -> f2638_0_main_LE(EOS(STATIC_2638), i523:0 - 1, i523:0 - 1) :|: i523:0 > 0 Filtered constant ground arguments: f2638_0_main_LE(x1, x2, x3) -> f2638_0_main_LE(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f2638_0_main_LE(x1, x2) -> f2638_0_main_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2638_0_main_LE(i523:0) -> f2638_0_main_LE(i523:0 - 1) :|: i523:0 > 0 ---------------------------------------- (22) Obligation: Rules: f2638_0_main_LE(i523:0) -> f2638_0_main_LE(i523:0 - 1) :|: i523:0 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2638_0_main_LE(i523:0) -> f2638_0_main_LE(arith) :|: i523:0 > 0 && arith = i523:0 - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2638_0_main_LE(i523:0) -> f2638_0_main_LE(arith) :|: i523:0 > 0 && arith = i523:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2638_0_main_LE(i523:0) -> f2638_0_main_LE(arith) :|: i523:0 > 0 && arith = i523:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2638_0_main_LE(i523:0:0) -> f2638_0_main_LE(i523:0:0 - 1) :|: i523:0:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2638_0_main_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f2638_0_main_LE(i523:0:0) -> f2638_0_main_LE(c) :|: c = i523:0:0 - 1 && i523:0:0 > 0 ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2638_0_main_LE(x)] = x The following rules are decreasing: f2638_0_main_LE(i523:0:0) -> f2638_0_main_LE(c) :|: c = i523:0:0 - 1 && i523:0:0 > 0 The following rules are bounded: f2638_0_main_LE(i523:0:0) -> f2638_0_main_LE(c) :|: c = i523:0:0 - 1 && i523:0:0 > 0 ---------------------------------------- (32) YES ---------------------------------------- (33) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListContentArbitrary.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: ---------------------------------------- (34) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 12 IRulesP rules: f2567_0_nth_ConstantStackPush(EOS(STATIC_2567), i498, o255, i498) -> f2569_0_nth_LE(EOS(STATIC_2569), i498, o255, i498, 1) :|: TRUE f2569_0_nth_LE(EOS(STATIC_2569), i506, o255, i506, matching1) -> f2572_0_nth_LE(EOS(STATIC_2572), i506, o255, i506, 1) :|: TRUE && matching1 = 1 f2572_0_nth_LE(EOS(STATIC_2572), i506, o255, i506, matching1) -> f2575_0_nth_Inc(EOS(STATIC_2575), i506, o255) :|: i506 > 1 && matching1 = 1 f2575_0_nth_Inc(EOS(STATIC_2575), i506, o255) -> f2578_0_nth_Load(EOS(STATIC_2578), i506 + -1, o255) :|: TRUE f2578_0_nth_Load(EOS(STATIC_2578), i507, o255) -> f2582_0_nth_FieldAccess(EOS(STATIC_2582), i507, o255) :|: TRUE f2582_0_nth_FieldAccess(EOS(STATIC_2582), i507, java.lang.Object(o262sub)) -> f2590_0_nth_FieldAccess(EOS(STATIC_2590), i507, java.lang.Object(o262sub)) :|: TRUE f2590_0_nth_FieldAccess(EOS(STATIC_2590), i507, java.lang.Object(IntList(EOC, o264))) -> f2602_0_nth_FieldAccess(EOS(STATIC_2602), i507, java.lang.Object(IntList(EOC, o264))) :|: TRUE f2602_0_nth_FieldAccess(EOS(STATIC_2602), i507, java.lang.Object(IntList(EOC, o264))) -> f2617_0_nth_Store(EOS(STATIC_2617), i507, o264) :|: TRUE f2617_0_nth_Store(EOS(STATIC_2617), i507, o264) -> f2628_0_nth_JMP(EOS(STATIC_2628), i507, o264) :|: TRUE f2628_0_nth_JMP(EOS(STATIC_2628), i507, o264) -> f2646_0_nth_Load(EOS(STATIC_2646), i507, o264) :|: TRUE f2646_0_nth_Load(EOS(STATIC_2646), i507, o264) -> f2565_0_nth_Load(EOS(STATIC_2565), i507, o264) :|: TRUE f2565_0_nth_Load(EOS(STATIC_2565), i498, o255) -> f2567_0_nth_ConstantStackPush(EOS(STATIC_2567), i498, o255, i498) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2567_0_nth_ConstantStackPush(EOS(STATIC_2567), i498:0, java.lang.Object(IntList(EOC, o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(EOS(STATIC_2567), i498:0 - 1, o264:0, i498:0 - 1) :|: i498:0 > 1 Filtered constant ground arguments: f2567_0_nth_ConstantStackPush(x1, x2, x3, x4) -> f2567_0_nth_ConstantStackPush(x2, x3, x4) EOS(x1) -> EOS IntList(x1, x2) -> IntList(x2) Filtered duplicate arguments: f2567_0_nth_ConstantStackPush(x1, x2, x3) -> f2567_0_nth_ConstantStackPush(x2, x3) Finished conversion. Obtained 1 rules.P rules: f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(o264:0, i498:0 - 1) :|: i498:0 > 1 ---------------------------------------- (35) Obligation: Rules: f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(o264:0, i498:0 - 1) :|: i498:0 > 1 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(o264:0, arith) :|: i498:0 > 1 && arith = i498:0 - 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(o264:0, arith) :|: i498:0 > 1 && arith = i498:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0)), i498:0) -> f2567_0_nth_ConstantStackPush(o264:0, arith) :|: i498:0 > 1 && arith = i498:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f2567_0_nth_ConstantStackPush(java.lang.Object(IntList(o264:0:0)), i498:0:0) -> f2567_0_nth_ConstantStackPush(o264:0:0, i498:0:0 - 1) :|: i498:0:0 > 1 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2567_0_nth_ConstantStackPush(VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f2567_0_nth_ConstantStackPush(c, i498:0:0) -> f2567_0_nth_ConstantStackPush(o264:0:0, c1) :|: c1 = i498:0:0 - 1 && c = 0 && i498:0:0 > 1 ---------------------------------------- (44) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2567_0_nth_ConstantStackPush ] = f2567_0_nth_ConstantStackPush_2 The following rules are decreasing: f2567_0_nth_ConstantStackPush(c, i498:0:0) -> f2567_0_nth_ConstantStackPush(o264:0:0, c1) :|: c1 = i498:0:0 - 1 && c = 0 && i498:0:0 > 1 The following rules are bounded: f2567_0_nth_ConstantStackPush(c, i498:0:0) -> f2567_0_nth_ConstantStackPush(o264:0:0, c1) :|: c1 = i498:0:0 - 1 && c = 0 && i498:0:0 > 1 ---------------------------------------- (45) YES