/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, 458 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 74 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 33 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 35 ms] (17) IntTRS (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 50 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 17 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 10 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 0 ms] (32) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class ListContent{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); while (l.value > 0) l.value--; } } 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 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 ListContent{ public static void main(String[] args) { Random.args = args; IntList l = IntList.createIntList(); while (l.value > 0) l.value--; } } 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 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: ListContent.main([Ljava/lang/String;)V: Graph of 60 nodes with 1 SCC. IntList.createIntList()LIntList;: Graph of 187 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: 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: f2284_0_createIntList_LE(EOS(STATIC_2284(java.lang.Object(ARRAY(i6)))), i383, i383) -> f2293_0_createIntList_LE(EOS(STATIC_2293(java.lang.Object(ARRAY(i6)))), i383, i383) :|: TRUE f2293_0_createIntList_LE(EOS(STATIC_2293(java.lang.Object(ARRAY(i6)))), i383, i383) -> f2296_0_createIntList_New(EOS(STATIC_2296(java.lang.Object(ARRAY(i6)))), i383) :|: i383 > 0 f2296_0_createIntList_New(EOS(STATIC_2296(java.lang.Object(ARRAY(i6)))), i383) -> f2298_0_createIntList_Duplicate(EOS(STATIC_2298(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2298_0_createIntList_Duplicate(EOS(STATIC_2298(java.lang.Object(ARRAY(i6)))), i383) -> f2300_0_createIntList_InvokeMethod(EOS(STATIC_2300(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2300_0_createIntList_InvokeMethod(EOS(STATIC_2300(java.lang.Object(ARRAY(i6)))), i383) -> f2301_0_random_FieldAccess(EOS(STATIC_2301(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2301_0_random_FieldAccess(EOS(STATIC_2301(java.lang.Object(ARRAY(i6)))), i383) -> f2305_0_random_FieldAccess(EOS(STATIC_2305(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) :|: TRUE f2305_0_random_FieldAccess(EOS(STATIC_2305(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) -> f2307_0_random_ArrayAccess(EOS(STATIC_2307(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) :|: TRUE f2307_0_random_ArrayAccess(EOS(STATIC_2307(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) -> f2312_0_random_ArrayAccess(EOS(STATIC_2312(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) :|: TRUE f2312_0_random_ArrayAccess(EOS(STATIC_2312(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(ARRAY(i6))) -> f2318_0_random_Store(EOS(STATIC_2318(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2318_0_random_Store(EOS(STATIC_2318(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2328_0_random_FieldAccess(EOS(STATIC_2328(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2328_0_random_FieldAccess(EOS(STATIC_2328(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2335_0_random_ConstantStackPush(EOS(STATIC_2335(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2335_0_random_ConstantStackPush(EOS(STATIC_2335(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2347_0_random_IntArithmetic(EOS(STATIC_2347(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2347_0_random_IntArithmetic(EOS(STATIC_2347(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2359_0_random_FieldAccess(EOS(STATIC_2359(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2359_0_random_FieldAccess(EOS(STATIC_2359(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2366_0_random_Load(EOS(STATIC_2366(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2366_0_random_Load(EOS(STATIC_2366(java.lang.Object(ARRAY(i6)))), i383, o204) -> f2381_0_random_InvokeMethod(EOS(STATIC_2381(java.lang.Object(ARRAY(i6)))), i383, o204) :|: TRUE f2381_0_random_InvokeMethod(EOS(STATIC_2381(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o213sub)) -> f2390_0_random_InvokeMethod(EOS(STATIC_2390(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o213sub)) :|: TRUE f2390_0_random_InvokeMethod(EOS(STATIC_2390(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) -> f2397_0_random_InvokeMethod(EOS(STATIC_2397(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) :|: TRUE f2397_0_random_InvokeMethod(EOS(STATIC_2397(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) -> f2405_0_length_Load(EOS(STATIC_2405(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) :|: TRUE f2405_0_length_Load(EOS(STATIC_2405(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) -> f2471_0_length_FieldAccess(EOS(STATIC_2471(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(o214sub)) :|: TRUE f2471_0_length_FieldAccess(EOS(STATIC_2471(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(java.lang.String(EOC, i430))) -> f2482_0_length_FieldAccess(EOS(STATIC_2482(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(java.lang.String(EOC, i430))) :|: TRUE f2482_0_length_FieldAccess(EOS(STATIC_2482(java.lang.Object(ARRAY(i6)))), i383, java.lang.Object(java.lang.String(EOC, i430))) -> f2490_0_length_Return(EOS(STATIC_2490(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2490_0_length_Return(EOS(STATIC_2490(java.lang.Object(ARRAY(i6)))), i383) -> f2498_0_random_Return(EOS(STATIC_2498(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2498_0_random_Return(EOS(STATIC_2498(java.lang.Object(ARRAY(i6)))), i383) -> f2508_0_createIntList_Load(EOS(STATIC_2508(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2508_0_createIntList_Load(EOS(STATIC_2508(java.lang.Object(ARRAY(i6)))), i383) -> f2522_0_createIntList_InvokeMethod(EOS(STATIC_2522(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2522_0_createIntList_InvokeMethod(EOS(STATIC_2522(java.lang.Object(ARRAY(i6)))), i383) -> f2535_0__init__Load(EOS(STATIC_2535(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2535_0__init__Load(EOS(STATIC_2535(java.lang.Object(ARRAY(i6)))), i383) -> f2605_0__init__InvokeMethod(EOS(STATIC_2605(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2605_0__init__InvokeMethod(EOS(STATIC_2605(java.lang.Object(ARRAY(i6)))), i383) -> f2618_0__init__Load(EOS(STATIC_2618(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2618_0__init__Load(EOS(STATIC_2618(java.lang.Object(ARRAY(i6)))), i383) -> f2632_0__init__Load(EOS(STATIC_2632(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2632_0__init__Load(EOS(STATIC_2632(java.lang.Object(ARRAY(i6)))), i383) -> f2640_0__init__FieldAccess(EOS(STATIC_2640(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2640_0__init__FieldAccess(EOS(STATIC_2640(java.lang.Object(ARRAY(i6)))), i383) -> f2653_0__init__Load(EOS(STATIC_2653(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2653_0__init__Load(EOS(STATIC_2653(java.lang.Object(ARRAY(i6)))), i383) -> f2664_0__init__Load(EOS(STATIC_2664(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2664_0__init__Load(EOS(STATIC_2664(java.lang.Object(ARRAY(i6)))), i383) -> f2674_0__init__FieldAccess(EOS(STATIC_2674(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2674_0__init__FieldAccess(EOS(STATIC_2674(java.lang.Object(ARRAY(i6)))), i383) -> f2687_0__init__Return(EOS(STATIC_2687(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2687_0__init__Return(EOS(STATIC_2687(java.lang.Object(ARRAY(i6)))), i383) -> f2788_0_createIntList_Store(EOS(STATIC_2788(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2788_0_createIntList_Store(EOS(STATIC_2788(java.lang.Object(ARRAY(i6)))), i383) -> f2798_0_createIntList_Inc(EOS(STATIC_2798(java.lang.Object(ARRAY(i6)))), i383) :|: TRUE f2798_0_createIntList_Inc(EOS(STATIC_2798(java.lang.Object(ARRAY(i6)))), i383) -> f2807_0_createIntList_JMP(EOS(STATIC_2807(java.lang.Object(ARRAY(i6)))), i383 + -1) :|: TRUE f2807_0_createIntList_JMP(EOS(STATIC_2807(java.lang.Object(ARRAY(i6)))), i478) -> f2845_0_createIntList_Load(EOS(STATIC_2845(java.lang.Object(ARRAY(i6)))), i478) :|: TRUE f2845_0_createIntList_Load(EOS(STATIC_2845(java.lang.Object(ARRAY(i6)))), i478) -> f2261_0_createIntList_Load(EOS(STATIC_2261(java.lang.Object(ARRAY(i6)))), i478) :|: TRUE f2261_0_createIntList_Load(EOS(STATIC_2261(java.lang.Object(ARRAY(i6)))), i346) -> f2284_0_createIntList_LE(EOS(STATIC_2284(java.lang.Object(ARRAY(i6)))), i346, i346) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2284_0_createIntList_LE(EOS(STATIC_2284(java.lang.Object(ARRAY(i6:0)))), i383:0, i383:0) -> f2284_0_createIntList_LE(EOS(STATIC_2284(java.lang.Object(ARRAY(i6:0)))), i383:0 - 1, i383:0 - 1) :|: i383:0 > 0 Filtered duplicate arguments: f2284_0_createIntList_LE(x1, x2, x3) -> f2284_0_createIntList_LE(x1, x3) Filtered unneeded arguments: f2284_0_createIntList_LE(x1, x2) -> f2284_0_createIntList_LE(x2) Finished conversion. Obtained 1 rules.P rules: f2284_0_createIntList_LE(i383:0) -> f2284_0_createIntList_LE(i383:0 - 1) :|: i383:0 > 0 ---------------------------------------- (9) Obligation: Rules: f2284_0_createIntList_LE(i383:0) -> f2284_0_createIntList_LE(i383:0 - 1) :|: i383:0 > 0 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f2284_0_createIntList_LE(i383:0) -> f2284_0_createIntList_LE(arith) :|: i383:0 > 0 && arith = i383:0 - 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2284_0_createIntList_LE(i383:0) -> f2284_0_createIntList_LE(arith) :|: i383:0 > 0 && arith = i383:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f2284_0_createIntList_LE(i383:0) -> f2284_0_createIntList_LE(arith) :|: i383:0 > 0 && arith = i383:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f2284_0_createIntList_LE(i383:0:0) -> f2284_0_createIntList_LE(i383:0:0 - 1) :|: i383:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2284_0_createIntList_LE(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f2284_0_createIntList_LE(i383:0:0) -> f2284_0_createIntList_LE(c) :|: c = i383:0:0 - 1 && i383:0:0 > 0 ---------------------------------------- (18) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2284_0_createIntList_LE(x)] = x The following rules are decreasing: f2284_0_createIntList_LE(i383:0:0) -> f2284_0_createIntList_LE(c) :|: c = i383:0:0 - 1 && i383:0:0 > 0 The following rules are bounded: f2284_0_createIntList_LE(i383:0:0) -> f2284_0_createIntList_LE(c) :|: c = i383:0:0 - 1 && i383:0:0 > 0 ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: ListContent.main([Ljava/lang/String;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *IntList: [value] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 14 IRulesP rules: f2309_0_main_FieldAccess(EOS(STATIC_2309), java.lang.Object(o203sub), java.lang.Object(o203sub)) -> f2314_0_main_FieldAccess(EOS(STATIC_2314), java.lang.Object(o203sub), java.lang.Object(o203sub)) :|: TRUE f2314_0_main_FieldAccess(EOS(STATIC_2314), java.lang.Object(IntList(EOC, i396)), java.lang.Object(IntList(EOC, i396))) -> f2324_0_main_FieldAccess(EOS(STATIC_2324), java.lang.Object(IntList(EOC, i396)), java.lang.Object(IntList(EOC, i396))) :|: TRUE f2324_0_main_FieldAccess(EOS(STATIC_2324), java.lang.Object(IntList(EOC, i396)), java.lang.Object(IntList(EOC, i396))) -> f2332_0_main_LE(EOS(STATIC_2332), java.lang.Object(IntList(EOC, i396)), i396) :|: TRUE f2332_0_main_LE(EOS(STATIC_2332), java.lang.Object(IntList(EOC, i401)), i401) -> f2342_0_main_LE(EOS(STATIC_2342), java.lang.Object(IntList(EOC, i401)), i401) :|: TRUE f2342_0_main_LE(EOS(STATIC_2342), java.lang.Object(IntList(EOC, i401)), i401) -> f2354_0_main_Load(EOS(STATIC_2354), java.lang.Object(IntList(EOC, i401))) :|: i401 > 0 f2354_0_main_Load(EOS(STATIC_2354), java.lang.Object(IntList(EOC, i401))) -> f2362_0_main_Duplicate(EOS(STATIC_2362), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401))) :|: TRUE f2362_0_main_Duplicate(EOS(STATIC_2362), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401))) -> f2371_0_main_FieldAccess(EOS(STATIC_2371), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401))) :|: TRUE f2371_0_main_FieldAccess(EOS(STATIC_2371), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401))) -> f2385_0_main_ConstantStackPush(EOS(STATIC_2385), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i401) :|: TRUE f2385_0_main_ConstantStackPush(EOS(STATIC_2385), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i401) -> f2394_0_main_IntArithmetic(EOS(STATIC_2394), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i401, 1) :|: TRUE f2394_0_main_IntArithmetic(EOS(STATIC_2394), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i401, matching1) -> f2403_0_main_FieldAccess(EOS(STATIC_2403), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i401 - 1) :|: i401 > 0 && matching1 = 1 f2403_0_main_FieldAccess(EOS(STATIC_2403), java.lang.Object(IntList(EOC, i401)), java.lang.Object(IntList(EOC, i401)), i411) -> f2407_0_main_JMP(EOS(STATIC_2407), java.lang.Object(IntList(EOC, i411))) :|: TRUE f2407_0_main_JMP(EOS(STATIC_2407), java.lang.Object(IntList(EOC, i411))) -> f2462_0_main_Load(EOS(STATIC_2462), java.lang.Object(IntList(EOC, i411))) :|: TRUE f2462_0_main_Load(EOS(STATIC_2462), java.lang.Object(IntList(EOC, i411))) -> f2306_0_main_Load(EOS(STATIC_2306), java.lang.Object(IntList(EOC, i411))) :|: TRUE f2306_0_main_Load(EOS(STATIC_2306), o197) -> f2309_0_main_FieldAccess(EOS(STATIC_2309), o197, o197) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2309_0_main_FieldAccess(EOS(STATIC_2309), java.lang.Object(IntList(EOC, i396:0)), java.lang.Object(IntList(EOC, i396:0))) -> f2309_0_main_FieldAccess(EOS(STATIC_2309), java.lang.Object(IntList(EOC, i396:0 - 1)), java.lang.Object(IntList(EOC, i396:0 - 1))) :|: i396:0 > 0 Filtered constant ground arguments: f2309_0_main_FieldAccess(x1, x2, x3) -> f2309_0_main_FieldAccess(x2, x3) EOS(x1) -> EOS IntList(x1, x2) -> IntList(x2) Filtered duplicate arguments: f2309_0_main_FieldAccess(x1, x2) -> f2309_0_main_FieldAccess(x2) Finished conversion. Obtained 1 rules.P rules: f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0)), i396:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0 - 1)), i396:0 - 1) :|: i396:0 > 0 ---------------------------------------- (22) Obligation: Rules: f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0)), i396:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0 - 1)), i396:0 - 1) :|: i396:0 > 0 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0)), i396:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(arith)), arith) :|: i396:0 > 0 && arith = i396:0 - 1 && arith = i396:0 - 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0)), i396:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(arith)), arith) :|: i396:0 > 0 && arith = i396:0 - 1 && arith = i396:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0)), i396:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(arith)), arith) :|: i396:0 > 0 && arith = i396:0 - 1 && arith = i396:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0:0)), i396:0:0) -> f2309_0_main_FieldAccess(java.lang.Object(IntList(i396:0:0 - 1)), i396:0:0 - 1) :|: i396:0:0 > 0 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2309_0_main_FieldAccess(VARIABLE, INTEGER) java.lang.Object(VARIABLE) IntList(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f2309_0_main_FieldAccess(c, i396:0:0) -> f2309_0_main_FieldAccess(c1, c2) :|: c2 = i396:0:0 - 1 && (c1 = 0 && c = 0) && i396:0:0 > 0 ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f2309_0_main_FieldAccess ] = f2309_0_main_FieldAccess_2 The following rules are decreasing: f2309_0_main_FieldAccess(c, i396:0:0) -> f2309_0_main_FieldAccess(c1, c2) :|: c2 = i396:0:0 - 1 && (c1 = 0 && c = 0) && i396:0:0 > 0 The following rules are bounded: f2309_0_main_FieldAccess(c, i396:0:0) -> f2309_0_main_FieldAccess(c1, c2) :|: c2 = i396:0:0 - 1 && (c1 = 0 && c = 0) && i396:0:0 > 0 ---------------------------------------- (32) YES