/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: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 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, 612 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 0 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 15 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 8 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 114 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 23 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 27 ms] (30) IRSwT (31) IRSwTToQDPProof [SOUND, 0 ms] (32) QDP (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] (34) YES (35) JBCTerminationSCC (36) SCCToIRSProof [SOUND, 0 ms] (37) IRSwT (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (39) IRSwT (40) IRSwTTerminationDigraphProof [EQUIVALENT, 21 ms] (41) IRSwT (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] (43) IRSwT (44) TempFilterProof [SOUND, 27 ms] (45) IntTRS (46) PolynomialOrderProcessor [EQUIVALENT, 0 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 261 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: f1976_0_createIntList_LE(EOS(STATIC_1976(java.lang.Object(ARRAY(i6)))), i404, i404) -> f2026_0_createIntList_LE(EOS(STATIC_2026(java.lang.Object(ARRAY(i6)))), i404, i404) :|: TRUE f2026_0_createIntList_LE(EOS(STATIC_2026(java.lang.Object(ARRAY(i6)))), i404, i404) -> f2032_0_createIntList_New(EOS(STATIC_2032(java.lang.Object(ARRAY(i6)))), i404) :|: i404 > 0 f2032_0_createIntList_New(EOS(STATIC_2032(java.lang.Object(ARRAY(i6)))), i404) -> f2038_0_createIntList_Duplicate(EOS(STATIC_2038(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2038_0_createIntList_Duplicate(EOS(STATIC_2038(java.lang.Object(ARRAY(i6)))), i404) -> f2045_0_createIntList_InvokeMethod(EOS(STATIC_2045(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2045_0_createIntList_InvokeMethod(EOS(STATIC_2045(java.lang.Object(ARRAY(i6)))), i404) -> f2048_0_random_FieldAccess(EOS(STATIC_2048(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2048_0_random_FieldAccess(EOS(STATIC_2048(java.lang.Object(ARRAY(i6)))), i404) -> f2139_0_random_FieldAccess(EOS(STATIC_2139(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) :|: TRUE f2139_0_random_FieldAccess(EOS(STATIC_2139(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) -> f2168_0_random_ArrayAccess(EOS(STATIC_2168(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) :|: TRUE f2168_0_random_ArrayAccess(EOS(STATIC_2168(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) -> f2174_0_random_ArrayAccess(EOS(STATIC_2174(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) :|: TRUE f2174_0_random_ArrayAccess(EOS(STATIC_2174(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(ARRAY(i6))) -> f2184_0_random_Store(EOS(STATIC_2184(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2184_0_random_Store(EOS(STATIC_2184(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2196_0_random_FieldAccess(EOS(STATIC_2196(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2196_0_random_FieldAccess(EOS(STATIC_2196(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2210_0_random_ConstantStackPush(EOS(STATIC_2210(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2210_0_random_ConstantStackPush(EOS(STATIC_2210(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2232_0_random_IntArithmetic(EOS(STATIC_2232(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2232_0_random_IntArithmetic(EOS(STATIC_2232(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2238_0_random_FieldAccess(EOS(STATIC_2238(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2238_0_random_FieldAccess(EOS(STATIC_2238(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2324_0_random_Load(EOS(STATIC_2324(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2324_0_random_Load(EOS(STATIC_2324(java.lang.Object(ARRAY(i6)))), i404, o389) -> f2351_0_random_InvokeMethod(EOS(STATIC_2351(java.lang.Object(ARRAY(i6)))), i404, o389) :|: TRUE f2351_0_random_InvokeMethod(EOS(STATIC_2351(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o420sub)) -> f2355_0_random_InvokeMethod(EOS(STATIC_2355(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o420sub)) :|: TRUE f2355_0_random_InvokeMethod(EOS(STATIC_2355(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) -> f2359_0_random_InvokeMethod(EOS(STATIC_2359(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) :|: TRUE f2359_0_random_InvokeMethod(EOS(STATIC_2359(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) -> f2373_0_length_Load(EOS(STATIC_2373(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) :|: TRUE f2373_0_length_Load(EOS(STATIC_2373(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) -> f2392_0_length_FieldAccess(EOS(STATIC_2392(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(o421sub)) :|: TRUE f2392_0_length_FieldAccess(EOS(STATIC_2392(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(java.lang.String(EOC, i486))) -> f2400_0_length_FieldAccess(EOS(STATIC_2400(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(java.lang.String(EOC, i486))) :|: TRUE f2400_0_length_FieldAccess(EOS(STATIC_2400(java.lang.Object(ARRAY(i6)))), i404, java.lang.Object(java.lang.String(EOC, i486))) -> f2403_0_length_Return(EOS(STATIC_2403(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2403_0_length_Return(EOS(STATIC_2403(java.lang.Object(ARRAY(i6)))), i404) -> f2409_0_random_Return(EOS(STATIC_2409(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2409_0_random_Return(EOS(STATIC_2409(java.lang.Object(ARRAY(i6)))), i404) -> f2418_0_createIntList_Load(EOS(STATIC_2418(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2418_0_createIntList_Load(EOS(STATIC_2418(java.lang.Object(ARRAY(i6)))), i404) -> f2420_0_createIntList_InvokeMethod(EOS(STATIC_2420(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2420_0_createIntList_InvokeMethod(EOS(STATIC_2420(java.lang.Object(ARRAY(i6)))), i404) -> f2432_0__init__Load(EOS(STATIC_2432(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2432_0__init__Load(EOS(STATIC_2432(java.lang.Object(ARRAY(i6)))), i404) -> f2453_0__init__InvokeMethod(EOS(STATIC_2453(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2453_0__init__InvokeMethod(EOS(STATIC_2453(java.lang.Object(ARRAY(i6)))), i404) -> f2470_0__init__Load(EOS(STATIC_2470(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2470_0__init__Load(EOS(STATIC_2470(java.lang.Object(ARRAY(i6)))), i404) -> f2477_0__init__Load(EOS(STATIC_2477(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2477_0__init__Load(EOS(STATIC_2477(java.lang.Object(ARRAY(i6)))), i404) -> f2491_0__init__FieldAccess(EOS(STATIC_2491(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2491_0__init__FieldAccess(EOS(STATIC_2491(java.lang.Object(ARRAY(i6)))), i404) -> f2510_0__init__Load(EOS(STATIC_2510(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2510_0__init__Load(EOS(STATIC_2510(java.lang.Object(ARRAY(i6)))), i404) -> f2531_0__init__Load(EOS(STATIC_2531(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2531_0__init__Load(EOS(STATIC_2531(java.lang.Object(ARRAY(i6)))), i404) -> f2552_0__init__FieldAccess(EOS(STATIC_2552(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2552_0__init__FieldAccess(EOS(STATIC_2552(java.lang.Object(ARRAY(i6)))), i404) -> f2577_0__init__Return(EOS(STATIC_2577(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2577_0__init__Return(EOS(STATIC_2577(java.lang.Object(ARRAY(i6)))), i404) -> f2602_0_createIntList_Store(EOS(STATIC_2602(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2602_0_createIntList_Store(EOS(STATIC_2602(java.lang.Object(ARRAY(i6)))), i404) -> f2619_0_createIntList_Inc(EOS(STATIC_2619(java.lang.Object(ARRAY(i6)))), i404) :|: TRUE f2619_0_createIntList_Inc(EOS(STATIC_2619(java.lang.Object(ARRAY(i6)))), i404) -> f2631_0_createIntList_JMP(EOS(STATIC_2631(java.lang.Object(ARRAY(i6)))), i404 + -1) :|: TRUE f2631_0_createIntList_JMP(EOS(STATIC_2631(java.lang.Object(ARRAY(i6)))), i520) -> f2680_0_createIntList_Load(EOS(STATIC_2680(java.lang.Object(ARRAY(i6)))), i520) :|: TRUE f2680_0_createIntList_Load(EOS(STATIC_2680(java.lang.Object(ARRAY(i6)))), i520) -> f1967_0_createIntList_Load(EOS(STATIC_1967(java.lang.Object(ARRAY(i6)))), i520) :|: TRUE f1967_0_createIntList_Load(EOS(STATIC_1967(java.lang.Object(ARRAY(i6)))), i371) -> f1976_0_createIntList_LE(EOS(STATIC_1976(java.lang.Object(ARRAY(i6)))), i371, i371) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f1976_0_createIntList_LE(EOS(STATIC_1976(java.lang.Object(ARRAY(i6:0)))), i404:0, i404:0) -> f1976_0_createIntList_LE(EOS(STATIC_1976(java.lang.Object(ARRAY(i6:0)))), i404:0 - 1, i404:0 - 1) :|: i404:0 > 0 Filtered duplicate arguments: f1976_0_createIntList_LE(x1, x2, x3) -> f1976_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f1976_0_createIntList_LE(x1, x2) -> f1976_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f1976_0_createIntList_LE(i404:0) -> f1976_0_createIntList_LE(i404:0 - 1) :|: i404:0 > 0 ---------------------------------------- (9) Obligation: Rules: f1976_0_createIntList_LE(i404:0) -> f1976_0_createIntList_LE(i404:0 - 1) :|: i404:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1976_0_createIntList_LE(i404:0) -> f1976_0_createIntList_LE(arith) :|: i404:0 > 0 && arith = i404:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1976_0_createIntList_LE(i404:0) -> f1976_0_createIntList_LE(arith) :|: i404:0 > 0 && arith = i404:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1976_0_createIntList_LE(i404:0) -> f1976_0_createIntList_LE(arith) :|: i404:0 > 0 && arith = i404:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1976_0_createIntList_LE(i404:0:0) -> f1976_0_createIntList_LE(i404:0:0 - 1) :|: i404:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1976_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1976_0_createIntList_LE(i404:0:0) -> f1976_0_createIntList_LE(c) :|: c = i404:0:0 - 1 && i404:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1976_0_createIntList_LE(x)] = x The following rules are decreasing: f1976_0_createIntList_LE(i404:0:0) -> f1976_0_createIntList_LE(c) :|: c = i404:0:0 - 1 && i404:0:0 > 0 The following rules are bounded: f1976_0_createIntList_LE(i404:0:0) -> f1976_0_createIntList_LE(c) :|: c = i404:0:0 - 1 && i404: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: f2353_0_main_LE(EOS(STATIC_2353(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352, i464) -> f2358_0_main_LE(EOS(STATIC_2358(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352, i464) :|: TRUE f2358_0_main_LE(EOS(STATIC_2358(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352, i464) -> f2370_0_main_Load(EOS(STATIC_2370(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352) :|: i464 > 0 f2370_0_main_Load(EOS(STATIC_2370(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352) -> f2376_0_main_FieldAccess(EOS(STATIC_2376(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352) :|: TRUE f2376_0_main_FieldAccess(EOS(STATIC_2376(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), java.lang.Object(o423sub)) -> f2380_0_main_FieldAccess(EOS(STATIC_2380(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), java.lang.Object(o423sub)) :|: TRUE f2380_0_main_FieldAccess(EOS(STATIC_2380(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), java.lang.Object(IntList(EOC, o435, i482))) -> f2398_0_main_FieldAccess(EOS(STATIC_2398(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), java.lang.Object(IntList(EOC, o435, i482))) :|: TRUE f2398_0_main_FieldAccess(EOS(STATIC_2398(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), java.lang.Object(IntList(EOC, o435, i482))) -> f2402_0_main_Store(EOS(STATIC_2402(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) :|: TRUE f2402_0_main_Store(EOS(STATIC_2402(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) -> f2406_0_main_InvokeMethod(EOS(STATIC_2406(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) :|: TRUE f2406_0_main_InvokeMethod(EOS(STATIC_2406(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) -> f2416_0_random_FieldAccess(EOS(STATIC_2416(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) :|: TRUE f2416_0_random_FieldAccess(EOS(STATIC_2416(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435) -> f2426_0_random_FieldAccess(EOS(STATIC_2426(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) :|: TRUE f2426_0_random_FieldAccess(EOS(STATIC_2426(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) -> f2439_0_random_ArrayAccess(EOS(STATIC_2439(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) :|: TRUE f2439_0_random_ArrayAccess(EOS(STATIC_2439(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) -> f2451_0_random_ArrayAccess(EOS(STATIC_2451(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) :|: TRUE f2451_0_random_ArrayAccess(EOS(STATIC_2451(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(ARRAY(i289))) -> f2462_0_random_Store(EOS(STATIC_2462(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2462_0_random_Store(EOS(STATIC_2462(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2475_0_random_FieldAccess(EOS(STATIC_2475(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2475_0_random_FieldAccess(EOS(STATIC_2475(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2485_0_random_ConstantStackPush(EOS(STATIC_2485(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2485_0_random_ConstantStackPush(EOS(STATIC_2485(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2503_0_random_IntArithmetic(EOS(STATIC_2503(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2503_0_random_IntArithmetic(EOS(STATIC_2503(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2525_0_random_FieldAccess(EOS(STATIC_2525(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2525_0_random_FieldAccess(EOS(STATIC_2525(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2544_0_random_Load(EOS(STATIC_2544(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2544_0_random_Load(EOS(STATIC_2544(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) -> f2570_0_random_InvokeMethod(EOS(STATIC_2570(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, o443) :|: TRUE f2570_0_random_InvokeMethod(EOS(STATIC_2570(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o450sub)) -> f2590_0_random_InvokeMethod(EOS(STATIC_2590(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o450sub)) :|: TRUE f2590_0_random_InvokeMethod(EOS(STATIC_2590(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) -> f2614_0_random_InvokeMethod(EOS(STATIC_2614(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) :|: TRUE f2614_0_random_InvokeMethod(EOS(STATIC_2614(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) -> f2624_0_length_Load(EOS(STATIC_2624(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) :|: TRUE f2624_0_length_Load(EOS(STATIC_2624(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) -> f2706_0_length_FieldAccess(EOS(STATIC_2706(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(o453sub)) :|: TRUE f2706_0_length_FieldAccess(EOS(STATIC_2706(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(java.lang.String(EOC, i548))) -> f2717_0_length_FieldAccess(EOS(STATIC_2717(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(java.lang.String(EOC, i548))) :|: i548 >= 0 f2717_0_length_FieldAccess(EOS(STATIC_2717(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, java.lang.Object(java.lang.String(EOC, i548))) -> f2722_0_length_Return(EOS(STATIC_2722(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) :|: TRUE f2722_0_length_Return(EOS(STATIC_2722(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) -> f2736_0_random_Return(EOS(STATIC_2736(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) :|: TRUE f2736_0_random_Return(EOS(STATIC_2736(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) -> f2757_0_main_Load(EOS(STATIC_2757(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) :|: TRUE f2757_0_main_Load(EOS(STATIC_2757(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548) -> f2760_0_main_InvokeMethod(EOS(STATIC_2760(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548, o435) :|: TRUE f2760_0_main_InvokeMethod(EOS(STATIC_2760(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548, o435) -> f2764_0_nth_Load(EOS(STATIC_2764(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548, o435) :|: TRUE f2764_0_nth_Load(EOS(STATIC_2764(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548, o435) -> f2980_0_nth_Load(EOS(STATIC_2980(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o435, i548, o435) :|: TRUE f2980_0_nth_Load(EOS(STATIC_2980(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i604, o521) -> f2982_0_nth_ConstantStackPush(EOS(STATIC_2982(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i604, o521, i604) :|: TRUE f2982_0_nth_ConstantStackPush(EOS(STATIC_2982(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i604, o521, i604) -> f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i604, o521, i604, 1) :|: TRUE f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i614, o521, i614, matching1) -> f3001_0_nth_LE(EOS(STATIC_3001(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i614, o521, i614, 1) :|: TRUE && matching1 = 1 f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521, i615, matching1) -> f3002_0_nth_LE(EOS(STATIC_3002(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521, i615, 1) :|: TRUE && matching1 = 1 f3001_0_nth_LE(EOS(STATIC_3001(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i614, o521, i614, matching1) -> f3011_0_nth_Load(EOS(STATIC_3011(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, o521) :|: i614 <= 1 && matching1 = 1 f3011_0_nth_Load(EOS(STATIC_3011(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, o521) -> f3013_0_nth_NONNULL(EOS(STATIC_3013(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, o521, o521) :|: TRUE f3013_0_nth_NONNULL(EOS(STATIC_3013(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub), java.lang.Object(o540sub)) -> f3015_0_nth_NONNULL(EOS(STATIC_3015(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub), java.lang.Object(o540sub)) :|: TRUE f3013_0_nth_NONNULL(EOS(STATIC_3013(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL, NULL) -> f3016_0_nth_NONNULL(EOS(STATIC_3016(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL, NULL) :|: TRUE f3015_0_nth_NONNULL(EOS(STATIC_3015(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub), java.lang.Object(o540sub)) -> f3019_0_nth_Load(EOS(STATIC_3019(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub)) :|: TRUE f3019_0_nth_Load(EOS(STATIC_3019(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub)) -> f3023_0_nth_FieldAccess(EOS(STATIC_3023(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(o540sub)) :|: TRUE f3023_0_nth_FieldAccess(EOS(STATIC_3023(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(IntList(EOC, o549, i629))) -> f3027_0_nth_FieldAccess(EOS(STATIC_3027(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(IntList(EOC, o549, i629))) :|: TRUE f3027_0_nth_FieldAccess(EOS(STATIC_3027(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, java.lang.Object(IntList(EOC, o549, i629))) -> f3031_0_nth_Return(EOS(STATIC_3031(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) :|: TRUE f3031_0_nth_Return(EOS(STATIC_3031(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) -> f3044_0_main_Store(EOS(STATIC_3044(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) :|: TRUE f3044_0_main_Store(EOS(STATIC_3044(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) -> f3049_0_main_JMP(EOS(STATIC_3049(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) :|: TRUE f3049_0_main_JMP(EOS(STATIC_3049(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) -> f3061_0_main_Load(EOS(STATIC_3061(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) :|: TRUE f3061_0_main_Load(EOS(STATIC_3061(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) -> f2329_0_main_Load(EOS(STATIC_2329(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i629) :|: TRUE f2329_0_main_Load(EOS(STATIC_2329(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352, i449) -> f2353_0_main_LE(EOS(STATIC_2353(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o352, i449) :|: TRUE f3016_0_nth_NONNULL(EOS(STATIC_3016(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL, NULL) -> f3020_0_nth_ConstantStackPush(EOS(STATIC_3020(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522) :|: TRUE f3020_0_nth_ConstantStackPush(EOS(STATIC_3020(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522) -> f3024_0_nth_Return(EOS(STATIC_3024(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, 0) :|: TRUE f3024_0_nth_Return(EOS(STATIC_3024(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, matching1) -> f3028_0_main_Store(EOS(STATIC_3028(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, 0) :|: TRUE && matching1 = 0 f3028_0_main_Store(EOS(STATIC_3028(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, matching1) -> f3044_0_main_Store(EOS(STATIC_3044(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, 0) :|: TRUE && matching1 = 0 f3002_0_nth_LE(EOS(STATIC_3002(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521, i615, matching1) -> f3012_0_nth_Load(EOS(STATIC_3012(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521) :|: i615 > 1 && matching1 = 1 f3012_0_nth_Load(EOS(STATIC_3012(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521) -> f3014_0_nth_NULL(EOS(STATIC_3014(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, o521, o521) :|: TRUE f3014_0_nth_NULL(EOS(STATIC_3014(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, java.lang.Object(o541sub), java.lang.Object(o541sub)) -> f3017_0_nth_NULL(EOS(STATIC_3017(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, java.lang.Object(o541sub), java.lang.Object(o541sub)) :|: TRUE f3014_0_nth_NULL(EOS(STATIC_3014(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, NULL, NULL) -> f3018_0_nth_NULL(EOS(STATIC_3018(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, NULL, NULL) :|: TRUE f3017_0_nth_NULL(EOS(STATIC_3017(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, java.lang.Object(o541sub), java.lang.Object(o541sub)) -> f3021_0_nth_Inc(EOS(STATIC_3021(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, java.lang.Object(o541sub)) :|: TRUE f3021_0_nth_Inc(EOS(STATIC_3021(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, java.lang.Object(o541sub)) -> f3025_0_nth_Load(EOS(STATIC_3025(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615 + -1, java.lang.Object(o541sub)) :|: TRUE f3025_0_nth_Load(EOS(STATIC_3025(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, java.lang.Object(o541sub)) -> f3029_0_nth_FieldAccess(EOS(STATIC_3029(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, java.lang.Object(o541sub)) :|: TRUE f3029_0_nth_FieldAccess(EOS(STATIC_3029(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, java.lang.Object(IntList(EOC, o556, i635))) -> f3033_0_nth_FieldAccess(EOS(STATIC_3033(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, java.lang.Object(IntList(EOC, o556, i635))) :|: TRUE f3033_0_nth_FieldAccess(EOS(STATIC_3033(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, java.lang.Object(IntList(EOC, o556, i635))) -> f3048_0_nth_Store(EOS(STATIC_3048(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) :|: TRUE f3048_0_nth_Store(EOS(STATIC_3048(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) -> f3050_0_nth_JMP(EOS(STATIC_3050(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) :|: TRUE f3050_0_nth_JMP(EOS(STATIC_3050(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) -> f3068_0_nth_Load(EOS(STATIC_3068(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) :|: TRUE f3068_0_nth_Load(EOS(STATIC_3068(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) -> f2980_0_nth_Load(EOS(STATIC_2980(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i628, o556) :|: TRUE f3018_0_nth_NULL(EOS(STATIC_3018(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, i615, NULL, NULL) -> f3022_0_nth_Load(EOS(STATIC_3022(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL) :|: TRUE f3022_0_nth_Load(EOS(STATIC_3022(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL) -> f3026_0_nth_NONNULL(EOS(STATIC_3026(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL, NULL) :|: TRUE f3026_0_nth_NONNULL(EOS(STATIC_3026(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522, NULL, NULL) -> f3030_0_nth_ConstantStackPush(EOS(STATIC_3030(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522) :|: TRUE f3030_0_nth_ConstantStackPush(EOS(STATIC_3030(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522) -> f3020_0_nth_ConstantStackPush(EOS(STATIC_3020(java.lang.Object(ARRAY(i289)))), java.lang.Object(ARRAY(i289)), o522) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289:0)))), java.lang.Object(ARRAY(i289:0)), java.lang.Object(IntList(EOC, o435:0, i482:0)), i614:0, java.lang.Object(IntList(EOC, o549:0, i629:0)), i614:0, 1) -> f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289:0)))), java.lang.Object(ARRAY(i289:0)), o435:0, i548:0, o435:0, i548:0, 1) :|: i629:0 > 0 && i548:0 > -1 && i614:0 < 2 f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289:0)))), java.lang.Object(ARRAY(i289:0)), o522:0, i615:0, java.lang.Object(IntList(EOC, o556:0, i635:0)), i615:0, 1) -> f2993_0_nth_LE(EOS(STATIC_2993(java.lang.Object(ARRAY(i289:0)))), java.lang.Object(ARRAY(i289:0)), o522:0, i615:0 - 1, o556:0, i615:0 - 1, 1) :|: i615:0 > 1 Filtered constant ground arguments: f2993_0_nth_LE(x1, x2, x3, x4, x5, x6, x7) -> f2993_0_nth_LE(x1, x2, x3, x4, x5, x6) IntList(x1, x2, x3) -> IntList(x2, x3) Filtered duplicate arguments: f2993_0_nth_LE(x1, x2, x3, x4, x5, x6) -> f2993_0_nth_LE(x1, x2, x3, x5, x6) Filtered unneeded arguments: f2993_0_nth_LE(x1, x2, x3, x4, x5) -> f2993_0_nth_LE(x3, x4, x5) Finished conversion. Obtained 2 rules.P rules: f2993_0_nth_LE(java.lang.Object(IntList(o435:0, i482:0)), java.lang.Object(IntList(o549:0, i629:0)), i614:0) -> f2993_0_nth_LE(o435:0, o435:0, i548:0) :|: i548:0 > -1 && i614:0 < 2 && i629:0 > 0 f2993_0_nth_LE(o522:0, java.lang.Object(IntList(o556:0, i635:0)), i615:0) -> f2993_0_nth_LE(o522:0, o556:0, i615:0 - 1) :|: i615:0 > 1 ---------------------------------------- (22) Obligation: Rules: f2993_0_nth_LE(java.lang.Object(IntList(o435:0, i482:0)), java.lang.Object(IntList(o549:0, i629:0)), i614:0) -> f2993_0_nth_LE(o435:0, o435:0, i548:0) :|: i548:0 > -1 && i614:0 < 2 && i629:0 > 0 f2993_0_nth_LE(o522:0, java.lang.Object(IntList(o556:0, i635:0)), i615:0) -> f2993_0_nth_LE(o522:0, o556:0, i615:0 - 1) :|: i615:0 > 1 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2993_0_nth_LE(java.lang.Object(IntList(o435:0, i482:0)), java.lang.Object(IntList(o549:0, i629:0)), i614:0) -> f2993_0_nth_LE(o435:0, o435:0, i548:0) :|: i548:0 > -1 && i614:0 < 2 && i629:0 > 0 f2993_0_nth_LE(o522:0, java.lang.Object(IntList(o556:0, i635:0)), i615:0) -> f2993_0_nth_LE(o522:0, o556:0, arith) :|: i615:0 > 1 && arith = i615:0 - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2993_0_nth_LE(java.lang.Object(IntList(o435:0, i482:0)), java.lang.Object(IntList(o549:0, i629:0)), i614:0) -> f2993_0_nth_LE(o435:0, o435:0, i548:0) :|: i548:0 > -1 && i614:0 < 2 && i629:0 > 0 (2) f2993_0_nth_LE(o522:0, java.lang.Object(IntList(o556:0, i635:0)), i615:0) -> f2993_0_nth_LE(o522:0, o556:0, arith) :|: i615:0 > 1 && arith = i615:0 - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2993_0_nth_LE(java.lang.Object(IntList(o435:0, i482:0)), java.lang.Object(IntList(o549:0, i629:0)), i614:0) -> f2993_0_nth_LE(o435:0, o435:0, i548:0) :|: i548:0 > -1 && i614:0 < 2 && i629:0 > 0 (2) f2993_0_nth_LE(o522:0, java.lang.Object(IntList(o556:0, i635:0)), i615:0) -> f2993_0_nth_LE(o522:0, o556:0, arith) :|: i615:0 > 1 && arith = i615:0 - 1 Arcs: (1) -> (1), (2) (2) -> (1), (2) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2993_0_nth_LE(java.lang.Object(IntList(o435:0:0, i482:0:0)), java.lang.Object(IntList(o549:0:0, i629:0:0)), i614:0:0) -> f2993_0_nth_LE(o435:0:0, o435:0:0, i548:0:0) :|: i548:0:0 > -1 && i614:0:0 < 2 && i629:0:0 > 0 f2993_0_nth_LE(o522:0:0, java.lang.Object(IntList(o556:0:0, i635:0:0)), i615:0:0) -> f2993_0_nth_LE(o522:0:0, o556:0:0, i615:0:0 - 1) :|: i615:0:0 > 1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2993_0_nth_LE(VARIABLE, VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE, VARIABLE) Removed predefined arithmetic. ---------------------------------------- (30) Obligation: Rules: f2993_0_nth_LE(java.lang.Object(IntList(o435:0:0, i482:0:0)), java.lang.Object(IntList(o549:0:0, i629:0:0))) -> f2993_0_nth_LE(o435:0:0, o435:0:0) f2993_0_nth_LE(o522:0:0, java.lang.Object(IntList(o556:0:0, i635:0:0))) -> f2993_0_nth_LE(o522:0:0, o556: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: f2993_0_nth_LE(java.lang.Object(IntList(o435:0:0, i482:0:0)), java.lang.Object(IntList(o549:0:0, i629:0:0))) -> f2993_0_nth_LE(o435:0:0, o435:0:0) f2993_0_nth_LE(o522:0:0, java.lang.Object(IntList(o556:0:0, i635:0:0))) -> f2993_0_nth_LE(o522:0:0, o556: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: *f2993_0_nth_LE(java.lang.Object(IntList(o435:0:0, i482:0:0)), java.lang.Object(IntList(o549:0:0, i629:0:0))) -> f2993_0_nth_LE(o435:0:0, o435:0:0) The graph contains the following edges 1 > 1, 1 > 2 *f2993_0_nth_LE(o522:0:0, java.lang.Object(IntList(o556:0:0, i635:0:0))) -> f2993_0_nth_LE(o522:0:0, o556:0:0) The graph contains the following edges 1 >= 1, 2 > 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: f2046_0_nth_ConstantStackPush(EOS(STATIC_2046), i408, o351, i408) -> f2049_0_nth_LE(EOS(STATIC_2049), i408, o351, i408, 1) :|: TRUE f2049_0_nth_LE(EOS(STATIC_2049), i420, o351, i420, matching1) -> f2134_0_nth_LE(EOS(STATIC_2134), i420, o351, i420, 1) :|: TRUE && matching1 = 1 f2134_0_nth_LE(EOS(STATIC_2134), i420, o351, i420, matching1) -> f2160_0_nth_Load(EOS(STATIC_2160), i420, o351) :|: i420 > 1 && matching1 = 1 f2160_0_nth_Load(EOS(STATIC_2160), i420, o351) -> f2172_0_nth_NULL(EOS(STATIC_2172), i420, o351, o351) :|: TRUE f2172_0_nth_NULL(EOS(STATIC_2172), i420, java.lang.Object(o388sub), java.lang.Object(o388sub)) -> f2182_0_nth_NULL(EOS(STATIC_2182), i420, java.lang.Object(o388sub), java.lang.Object(o388sub)) :|: TRUE f2182_0_nth_NULL(EOS(STATIC_2182), i420, java.lang.Object(o388sub), java.lang.Object(o388sub)) -> f2191_0_nth_Inc(EOS(STATIC_2191), i420, java.lang.Object(o388sub)) :|: TRUE f2191_0_nth_Inc(EOS(STATIC_2191), i420, java.lang.Object(o388sub)) -> f2204_0_nth_Load(EOS(STATIC_2204), i420 + -1, java.lang.Object(o388sub)) :|: TRUE f2204_0_nth_Load(EOS(STATIC_2204), i443, java.lang.Object(o388sub)) -> f2219_0_nth_FieldAccess(EOS(STATIC_2219), i443, java.lang.Object(o388sub)) :|: TRUE f2219_0_nth_FieldAccess(EOS(STATIC_2219), i443, java.lang.Object(IntList(EOC, o401))) -> f2237_0_nth_FieldAccess(EOS(STATIC_2237), i443, java.lang.Object(IntList(EOC, o401))) :|: TRUE f2237_0_nth_FieldAccess(EOS(STATIC_2237), i443, java.lang.Object(IntList(EOC, o401))) -> f2320_0_nth_Store(EOS(STATIC_2320), i443, o401) :|: TRUE f2320_0_nth_Store(EOS(STATIC_2320), i443, o401) -> f2330_0_nth_JMP(EOS(STATIC_2330), i443, o401) :|: TRUE f2330_0_nth_JMP(EOS(STATIC_2330), i443, o401) -> f2354_0_nth_Load(EOS(STATIC_2354), i443, o401) :|: TRUE f2354_0_nth_Load(EOS(STATIC_2354), i443, o401) -> f2042_0_nth_Load(EOS(STATIC_2042), i443, o401) :|: TRUE f2042_0_nth_Load(EOS(STATIC_2042), i408, o351) -> f2046_0_nth_ConstantStackPush(EOS(STATIC_2046), i408, o351, i408) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2046_0_nth_ConstantStackPush(EOS(STATIC_2046), i408:0, java.lang.Object(IntList(EOC, o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(EOS(STATIC_2046), i408:0 - 1, o401:0, i408:0 - 1) :|: i408:0 > 1 Filtered constant ground arguments: f2046_0_nth_ConstantStackPush(x1, x2, x3, x4) -> f2046_0_nth_ConstantStackPush(x2, x3, x4) EOS(x1) -> EOS IntList(x1, x2) -> IntList(x2) Filtered duplicate arguments: f2046_0_nth_ConstantStackPush(x1, x2, x3) -> f2046_0_nth_ConstantStackPush(x2, x3) Finished conversion. Obtained 1 rules.P rules: f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(o401:0, i408:0 - 1) :|: i408:0 > 1 ---------------------------------------- (37) Obligation: Rules: f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(o401:0, i408:0 - 1) :|: i408:0 > 1 ---------------------------------------- (38) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (39) Obligation: Rules: f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(o401:0, arith) :|: i408:0 > 1 && arith = i408:0 - 1 ---------------------------------------- (40) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(o401:0, arith) :|: i408:0 > 1 && arith = i408:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (41) Obligation: Termination digraph: Nodes: (1) f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0)), i408:0) -> f2046_0_nth_ConstantStackPush(o401:0, arith) :|: i408:0 > 1 && arith = i408:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (42) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (43) Obligation: Rules: f2046_0_nth_ConstantStackPush(java.lang.Object(IntList(o401:0:0)), i408:0:0) -> f2046_0_nth_ConstantStackPush(o401:0:0, i408:0:0 - 1) :|: i408:0:0 > 1 ---------------------------------------- (44) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2046_0_nth_ConstantStackPush(VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(VARIABLE) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (45) Obligation: Rules: f2046_0_nth_ConstantStackPush(c, i408:0:0) -> f2046_0_nth_ConstantStackPush(o401:0:0, c1) :|: c1 = i408:0:0 - 1 && c = 0 && i408:0:0 > 1 ---------------------------------------- (46) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2046_0_nth_ConstantStackPush(x, x1)] = x1 The following rules are decreasing: f2046_0_nth_ConstantStackPush(c, i408:0:0) -> f2046_0_nth_ConstantStackPush(o401:0:0, c1) :|: c1 = i408:0:0 - 1 && c = 0 && i408:0:0 > 1 The following rules are bounded: f2046_0_nth_ConstantStackPush(c, i408:0:0) -> f2046_0_nth_ConstantStackPush(o401:0:0, c1) :|: c1 = i408:0:0 - 1 && c = 0 && i408:0:0 > 1 ---------------------------------------- (47) YES