/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: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 607 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 58 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 8 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 14 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 67 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, 3 ms] (30) IntTRS (31) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (32) YES (33) JBCTerminationSCC (34) SCCToIRSProof [SOUND, 31 ms] (35) IRSwT (36) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (37) IRSwT (38) IRSwTTerminationDigraphProof [EQUIVALENT, 28 ms] (39) IRSwT (40) IntTRSCompressionProof [EQUIVALENT, 0 ms] (41) IRSwT (42) TempFilterProof [SOUND, 3 ms] (43) IntTRS (44) PolynomialOrderProcessor [EQUIVALENT, 0 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 192 nodes with 2 SCCs. IntList.createIntList()LIntList;: Graph of 277 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: f2436_0_createIntList_LE(EOS(STATIC_2436(java.lang.Object(ARRAY(i6)))), i529, i529) -> f2459_0_createIntList_LE(EOS(STATIC_2459(java.lang.Object(ARRAY(i6)))), i529, i529) :|: TRUE f2459_0_createIntList_LE(EOS(STATIC_2459(java.lang.Object(ARRAY(i6)))), i529, i529) -> f2470_0_createIntList_New(EOS(STATIC_2470(java.lang.Object(ARRAY(i6)))), i529) :|: i529 > 0 f2470_0_createIntList_New(EOS(STATIC_2470(java.lang.Object(ARRAY(i6)))), i529) -> f2487_0_createIntList_Duplicate(EOS(STATIC_2487(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2487_0_createIntList_Duplicate(EOS(STATIC_2487(java.lang.Object(ARRAY(i6)))), i529) -> f2503_0_createIntList_InvokeMethod(EOS(STATIC_2503(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2503_0_createIntList_InvokeMethod(EOS(STATIC_2503(java.lang.Object(ARRAY(i6)))), i529) -> f2534_0_random_FieldAccess(EOS(STATIC_2534(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2534_0_random_FieldAccess(EOS(STATIC_2534(java.lang.Object(ARRAY(i6)))), i529) -> f2542_0_random_FieldAccess(EOS(STATIC_2542(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) :|: TRUE f2542_0_random_FieldAccess(EOS(STATIC_2542(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) -> f2545_0_random_ArrayAccess(EOS(STATIC_2545(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) :|: TRUE f2545_0_random_ArrayAccess(EOS(STATIC_2545(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) -> f2549_0_random_ArrayAccess(EOS(STATIC_2549(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) :|: TRUE f2549_0_random_ArrayAccess(EOS(STATIC_2549(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(ARRAY(i6))) -> f2623_0_random_Store(EOS(STATIC_2623(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2623_0_random_Store(EOS(STATIC_2623(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2628_0_random_FieldAccess(EOS(STATIC_2628(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2628_0_random_FieldAccess(EOS(STATIC_2628(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2633_0_random_ConstantStackPush(EOS(STATIC_2633(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2633_0_random_ConstantStackPush(EOS(STATIC_2633(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2640_0_random_IntArithmetic(EOS(STATIC_2640(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2640_0_random_IntArithmetic(EOS(STATIC_2640(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2646_0_random_FieldAccess(EOS(STATIC_2646(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2646_0_random_FieldAccess(EOS(STATIC_2646(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2652_0_random_Load(EOS(STATIC_2652(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2652_0_random_Load(EOS(STATIC_2652(java.lang.Object(ARRAY(i6)))), i529, o339) -> f2683_0_random_InvokeMethod(EOS(STATIC_2683(java.lang.Object(ARRAY(i6)))), i529, o339) :|: TRUE f2683_0_random_InvokeMethod(EOS(STATIC_2683(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o363sub)) -> f2698_0_random_InvokeMethod(EOS(STATIC_2698(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o363sub)) :|: TRUE f2698_0_random_InvokeMethod(EOS(STATIC_2698(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) -> f2704_0_random_InvokeMethod(EOS(STATIC_2704(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) :|: TRUE f2704_0_random_InvokeMethod(EOS(STATIC_2704(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) -> f2728_0_length_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) :|: TRUE f2728_0_length_Load(EOS(STATIC_2728(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) -> f2845_0_length_FieldAccess(EOS(STATIC_2845(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(o365sub)) :|: TRUE f2845_0_length_FieldAccess(EOS(STATIC_2845(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(java.lang.String(EOC, i641))) -> f2885_0_length_FieldAccess(EOS(STATIC_2885(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(java.lang.String(EOC, i641))) :|: TRUE f2885_0_length_FieldAccess(EOS(STATIC_2885(java.lang.Object(ARRAY(i6)))), i529, java.lang.Object(java.lang.String(EOC, i641))) -> f2892_0_length_Return(EOS(STATIC_2892(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2892_0_length_Return(EOS(STATIC_2892(java.lang.Object(ARRAY(i6)))), i529) -> f2907_0_random_Return(EOS(STATIC_2907(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2907_0_random_Return(EOS(STATIC_2907(java.lang.Object(ARRAY(i6)))), i529) -> f2927_0_createIntList_Load(EOS(STATIC_2927(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2927_0_createIntList_Load(EOS(STATIC_2927(java.lang.Object(ARRAY(i6)))), i529) -> f2948_0_createIntList_InvokeMethod(EOS(STATIC_2948(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2948_0_createIntList_InvokeMethod(EOS(STATIC_2948(java.lang.Object(ARRAY(i6)))), i529) -> f2966_0__init__Load(EOS(STATIC_2966(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f2966_0__init__Load(EOS(STATIC_2966(java.lang.Object(ARRAY(i6)))), i529) -> f3105_0__init__InvokeMethod(EOS(STATIC_3105(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3105_0__init__InvokeMethod(EOS(STATIC_3105(java.lang.Object(ARRAY(i6)))), i529) -> f3128_0__init__Load(EOS(STATIC_3128(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3128_0__init__Load(EOS(STATIC_3128(java.lang.Object(ARRAY(i6)))), i529) -> f3167_0__init__Load(EOS(STATIC_3167(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3167_0__init__Load(EOS(STATIC_3167(java.lang.Object(ARRAY(i6)))), i529) -> f3172_0__init__FieldAccess(EOS(STATIC_3172(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3172_0__init__FieldAccess(EOS(STATIC_3172(java.lang.Object(ARRAY(i6)))), i529) -> f3190_0__init__Load(EOS(STATIC_3190(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3190_0__init__Load(EOS(STATIC_3190(java.lang.Object(ARRAY(i6)))), i529) -> f3206_0__init__Load(EOS(STATIC_3206(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3206_0__init__Load(EOS(STATIC_3206(java.lang.Object(ARRAY(i6)))), i529) -> f3223_0__init__FieldAccess(EOS(STATIC_3223(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3223_0__init__FieldAccess(EOS(STATIC_3223(java.lang.Object(ARRAY(i6)))), i529) -> f3244_0__init__Return(EOS(STATIC_3244(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3244_0__init__Return(EOS(STATIC_3244(java.lang.Object(ARRAY(i6)))), i529) -> f3257_0_createIntList_Store(EOS(STATIC_3257(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3257_0_createIntList_Store(EOS(STATIC_3257(java.lang.Object(ARRAY(i6)))), i529) -> f3260_0_createIntList_Inc(EOS(STATIC_3260(java.lang.Object(ARRAY(i6)))), i529) :|: TRUE f3260_0_createIntList_Inc(EOS(STATIC_3260(java.lang.Object(ARRAY(i6)))), i529) -> f3263_0_createIntList_JMP(EOS(STATIC_3263(java.lang.Object(ARRAY(i6)))), i529 + -1) :|: TRUE f3263_0_createIntList_JMP(EOS(STATIC_3263(java.lang.Object(ARRAY(i6)))), i721) -> f3266_0_createIntList_Load(EOS(STATIC_3266(java.lang.Object(ARRAY(i6)))), i721) :|: TRUE f3266_0_createIntList_Load(EOS(STATIC_3266(java.lang.Object(ARRAY(i6)))), i721) -> f2358_0_createIntList_Load(EOS(STATIC_2358(java.lang.Object(ARRAY(i6)))), i721) :|: TRUE f2358_0_createIntList_Load(EOS(STATIC_2358(java.lang.Object(ARRAY(i6)))), i485) -> f2436_0_createIntList_LE(EOS(STATIC_2436(java.lang.Object(ARRAY(i6)))), i485, i485) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2436_0_createIntList_LE(EOS(STATIC_2436(java.lang.Object(ARRAY(i6:0)))), i529:0, i529:0) -> f2436_0_createIntList_LE(EOS(STATIC_2436(java.lang.Object(ARRAY(i6:0)))), i529:0 - 1, i529:0 - 1) :|: i529:0 > 0 Filtered duplicate arguments: f2436_0_createIntList_LE(x1, x2, x3) -> f2436_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f2436_0_createIntList_LE(x1, x2) -> f2436_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2436_0_createIntList_LE(i529:0) -> f2436_0_createIntList_LE(i529:0 - 1) :|: i529:0 > 0 ---------------------------------------- (9) Obligation: Rules: f2436_0_createIntList_LE(i529:0) -> f2436_0_createIntList_LE(i529:0 - 1) :|: i529:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f2436_0_createIntList_LE(i529:0) -> f2436_0_createIntList_LE(arith) :|: i529:0 > 0 && arith = i529:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2436_0_createIntList_LE(i529:0) -> f2436_0_createIntList_LE(arith) :|: i529:0 > 0 && arith = i529:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2436_0_createIntList_LE(i529:0) -> f2436_0_createIntList_LE(arith) :|: i529:0 > 0 && arith = i529:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f2436_0_createIntList_LE(i529:0:0) -> f2436_0_createIntList_LE(i529:0:0 - 1) :|: i529:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2436_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f2436_0_createIntList_LE(i529:0:0) -> f2436_0_createIntList_LE(c) :|: c = i529:0:0 - 1 && i529:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2436_0_createIntList_LE(x)] = x The following rules are decreasing: f2436_0_createIntList_LE(i529:0:0) -> f2436_0_createIntList_LE(c) :|: c = i529:0:0 - 1 && i529:0:0 > 0 The following rules are bounded: f2436_0_createIntList_LE(i529:0:0) -> f2436_0_createIntList_LE(c) :|: c = i529:0:0 - 1 && i529: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: f2686_0_main_LE(EOS(STATIC_2686), i588, i588) -> f2701_0_main_LE(EOS(STATIC_2701), i588, i588) :|: TRUE f2701_0_main_LE(EOS(STATIC_2701), i588, i588) -> f2718_0_main_Inc(EOS(STATIC_2718), i588) :|: i588 > 0 f2718_0_main_Inc(EOS(STATIC_2718), i588) -> f2731_0_main_JMP(EOS(STATIC_2731), i588 + -1) :|: TRUE f2731_0_main_JMP(EOS(STATIC_2731), i595) -> f2752_0_main_Load(EOS(STATIC_2752), i595) :|: TRUE f2752_0_main_Load(EOS(STATIC_2752), i595) -> f2658_0_main_Load(EOS(STATIC_2658), i595) :|: TRUE f2658_0_main_Load(EOS(STATIC_2658), i571) -> f2686_0_main_LE(EOS(STATIC_2686), i571, i571) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2686_0_main_LE(EOS(STATIC_2686), i588:0, i588:0) -> f2686_0_main_LE(EOS(STATIC_2686), i588:0 - 1, i588:0 - 1) :|: i588:0 > 0 Filtered constant ground arguments: f2686_0_main_LE(x1, x2, x3) -> f2686_0_main_LE(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f2686_0_main_LE(x1, x2) -> f2686_0_main_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2686_0_main_LE(i588:0) -> f2686_0_main_LE(i588:0 - 1) :|: i588:0 > 0 ---------------------------------------- (22) Obligation: Rules: f2686_0_main_LE(i588:0) -> f2686_0_main_LE(i588:0 - 1) :|: i588:0 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2686_0_main_LE(i588:0) -> f2686_0_main_LE(arith) :|: i588:0 > 0 && arith = i588:0 - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2686_0_main_LE(i588:0) -> f2686_0_main_LE(arith) :|: i588:0 > 0 && arith = i588:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2686_0_main_LE(i588:0) -> f2686_0_main_LE(arith) :|: i588:0 > 0 && arith = i588:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2686_0_main_LE(i588:0:0) -> f2686_0_main_LE(i588:0:0 - 1) :|: i588:0:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2686_0_main_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f2686_0_main_LE(i588:0:0) -> f2686_0_main_LE(c) :|: c = i588:0:0 - 1 && i588:0:0 > 0 ---------------------------------------- (31) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2686_0_main_LE(x)] = x The following rules are decreasing: f2686_0_main_LE(i588:0:0) -> f2686_0_main_LE(c) :|: c = i588:0:0 - 1 && i588:0:0 > 0 The following rules are bounded: f2686_0_main_LE(i588:0:0) -> f2686_0_main_LE(c) :|: c = i588:0:0 - 1 && i588: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: f2540_0_nth_ConstantStackPush(EOS(STATIC_2540), i545, o329, i545) -> f2543_0_nth_LE(EOS(STATIC_2543), i545, o329, i545, 1) :|: TRUE f2543_0_nth_LE(EOS(STATIC_2543), i557, o329, i557, matching1) -> f2547_0_nth_LE(EOS(STATIC_2547), i557, o329, i557, 1) :|: TRUE && matching1 = 1 f2547_0_nth_LE(EOS(STATIC_2547), i557, o329, i557, matching1) -> f2621_0_nth_Inc(EOS(STATIC_2621), i557, o329) :|: i557 > 1 && matching1 = 1 f2621_0_nth_Inc(EOS(STATIC_2621), i557, o329) -> f2626_0_nth_Load(EOS(STATIC_2626), i557 + -1, o329) :|: TRUE f2626_0_nth_Load(EOS(STATIC_2626), i570, o329) -> f2631_0_nth_FieldAccess(EOS(STATIC_2631), i570, o329) :|: TRUE f2631_0_nth_FieldAccess(EOS(STATIC_2631), i570, java.lang.Object(o345sub)) -> f2637_0_nth_FieldAccess(EOS(STATIC_2637), i570, java.lang.Object(o345sub)) :|: TRUE f2637_0_nth_FieldAccess(EOS(STATIC_2637), i570, java.lang.Object(IntList(EOC, o347))) -> f2643_0_nth_FieldAccess(EOS(STATIC_2643), i570, java.lang.Object(IntList(EOC, o347))) :|: TRUE f2643_0_nth_FieldAccess(EOS(STATIC_2643), i570, java.lang.Object(IntList(EOC, o347))) -> f2649_0_nth_Store(EOS(STATIC_2649), i570, o347) :|: TRUE f2649_0_nth_Store(EOS(STATIC_2649), i570, o347) -> f2663_0_nth_JMP(EOS(STATIC_2663), i570, o347) :|: TRUE f2663_0_nth_JMP(EOS(STATIC_2663), i570, o347) -> f2696_0_nth_Load(EOS(STATIC_2696), i570, o347) :|: TRUE f2696_0_nth_Load(EOS(STATIC_2696), i570, o347) -> f2537_0_nth_Load(EOS(STATIC_2537), i570, o347) :|: TRUE f2537_0_nth_Load(EOS(STATIC_2537), i545, o329) -> f2540_0_nth_ConstantStackPush(EOS(STATIC_2540), i545, o329, i545) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2540_0_nth_ConstantStackPush(EOS(STATIC_2540), i545:0, java.lang.Object(IntList(EOC, o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(EOS(STATIC_2540), i545:0 - 1, o347:0, i545:0 - 1) :|: i545:0 > 1 Filtered constant ground arguments: f2540_0_nth_ConstantStackPush(x1, x2, x3, x4) -> f2540_0_nth_ConstantStackPush(x2, x3, x4) EOS(x1) -> EOS IntList(x1, x2) -> IntList(x2) Filtered duplicate arguments: f2540_0_nth_ConstantStackPush(x1, x2, x3) -> f2540_0_nth_ConstantStackPush(x2, x3) Finished conversion. Obtained 1 rules.P rules: f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(o347:0, i545:0 - 1) :|: i545:0 > 1 ---------------------------------------- (35) Obligation: Rules: f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(o347:0, i545:0 - 1) :|: i545:0 > 1 ---------------------------------------- (36) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (37) Obligation: Rules: f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(o347:0, arith) :|: i545:0 > 1 && arith = i545:0 - 1 ---------------------------------------- (38) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(o347:0, arith) :|: i545:0 > 1 && arith = i545:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (39) Obligation: Termination digraph: Nodes: (1) f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0)), i545:0) -> f2540_0_nth_ConstantStackPush(o347:0, arith) :|: i545:0 > 1 && arith = i545:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (40) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (41) Obligation: Rules: f2540_0_nth_ConstantStackPush(java.lang.Object(IntList(o347:0:0)), i545:0:0) -> f2540_0_nth_ConstantStackPush(o347:0:0, i545:0:0 - 1) :|: i545:0:0 > 1 ---------------------------------------- (42) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2540_0_nth_ConstantStackPush(VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (43) Obligation: Rules: f2540_0_nth_ConstantStackPush(c, i545:0:0) -> f2540_0_nth_ConstantStackPush(o347:0:0, c1) :|: c1 = i545:0:0 - 1 && c = 0 && i545:0:0 > 1 ---------------------------------------- (44) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2540_0_nth_ConstantStackPush(x, x1)] = x1 The following rules are decreasing: f2540_0_nth_ConstantStackPush(c, i545:0:0) -> f2540_0_nth_ConstantStackPush(o347:0:0, c1) :|: c1 = i545:0:0 - 1 && c = 0 && i545:0:0 > 1 The following rules are bounded: f2540_0_nth_ConstantStackPush(c, i545:0:0) -> f2540_0_nth_ConstantStackPush(o347:0:0, c1) :|: c1 = i545:0:0 - 1 && c = 0 && i545:0:0 > 1 ---------------------------------------- (45) YES