10.48/3.74 YES 10.48/3.76 proof of /export/starexec/sandbox/benchmark/theBenchmark.jar 10.48/3.76 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 10.48/3.76 10.48/3.76 10.48/3.76 termination of the given Bare JBC problem could be proven: 10.48/3.76 10.48/3.76 (0) Bare JBC problem 10.48/3.76 (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] 10.48/3.76 (2) JBC problem 10.48/3.76 (3) JBCToGraph [EQUIVALENT, 583 ms] 10.48/3.76 (4) JBCTerminationGraph 10.48/3.76 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 10.48/3.76 (6) AND 10.48/3.76 (7) JBCTerminationSCC 10.48/3.76 (8) SCCToIRSProof [SOUND, 1 ms] 10.48/3.76 (9) IRSwT 10.48/3.76 (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.48/3.76 (11) IRSwT 10.48/3.76 (12) IRSwTTerminationDigraphProof [EQUIVALENT, 26 ms] 10.48/3.76 (13) IRSwT 10.48/3.76 (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.48/3.76 (15) IRSwT 10.48/3.76 (16) TempFilterProof [SOUND, 9 ms] 10.48/3.76 (17) IntTRS 10.48/3.76 (18) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 10.48/3.76 (19) YES 10.48/3.76 (20) JBCTerminationSCC 10.48/3.76 (21) SCCToIRSProof [SOUND, 115 ms] 10.48/3.76 (22) IRSwT 10.48/3.76 (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.48/3.76 (24) IRSwT 10.48/3.76 (25) IRSwTTerminationDigraphProof [EQUIVALENT, 9 ms] 10.48/3.76 (26) IRSwT 10.48/3.76 (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.48/3.76 (28) IRSwT 10.48/3.76 (29) TempFilterProof [SOUND, 28 ms] 10.48/3.76 (30) IRSwT 10.48/3.76 (31) IRSwTToQDPProof [SOUND, 0 ms] 10.48/3.76 (32) QDP 10.48/3.76 (33) QDPSizeChangeProof [EQUIVALENT, 0 ms] 10.48/3.76 (34) YES 10.48/3.76 (35) JBCTerminationSCC 10.48/3.76 (36) SCCToIRSProof [SOUND, 0 ms] 10.48/3.76 (37) IRSwT 10.48/3.76 (38) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 10.48/3.76 (39) IRSwT 10.48/3.76 (40) IRSwTTerminationDigraphProof [EQUIVALENT, 18 ms] 10.48/3.76 (41) IRSwT 10.48/3.76 (42) IntTRSCompressionProof [EQUIVALENT, 0 ms] 10.48/3.76 (43) IRSwT 10.48/3.76 (44) TempFilterProof [SOUND, 9 ms] 10.48/3.76 (45) IntTRS 10.48/3.76 (46) PolynomialOrderProcessor [EQUIVALENT, 0 ms] 10.48/3.76 (47) YES 10.48/3.76 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (0) 10.48/3.76 Obligation: 10.48/3.76 need to prove termination of the following program: 10.48/3.76 public class ListContentTail{ 10.48/3.76 10.48/3.76 public static void main(String[] args) { 10.48/3.76 Random.args = args; 10.48/3.76 IntList l = IntList.createIntList(); 10.48/3.76 10.48/3.76 int m = IntList.nth(Random.random(),l); 10.48/3.76 10.48/3.76 while (m > 0) { 10.48/3.76 10.48/3.76 l = l.next; 10.48/3.76 m = IntList.nth(Random.random(),l); 10.48/3.76 } 10.48/3.76 } 10.48/3.76 } 10.48/3.76 10.48/3.76 class IntList { 10.48/3.76 int value; 10.48/3.76 IntList next; 10.48/3.76 10.48/3.76 public IntList(int value, IntList next) { 10.48/3.76 this.value = value; 10.48/3.76 this.next = next; 10.48/3.76 } 10.48/3.76 10.48/3.76 public static IntList createIntList() { 10.48/3.76 10.48/3.76 int i = Random.random(); 10.48/3.76 IntList l = null; 10.48/3.76 10.48/3.76 while (i > 0) { 10.48/3.76 l = new IntList(Random.random(), l); 10.48/3.76 i--; 10.48/3.76 } 10.48/3.76 10.48/3.76 return l; 10.48/3.76 } 10.48/3.76 10.48/3.76 public static int nth(int n, IntList l){ 10.48/3.76 10.48/3.76 while (n > 1 && l != null) { 10.48/3.76 n--; 10.48/3.76 l = l.next; 10.48/3.76 } 10.48/3.76 10.48/3.76 if (l == null) return 0; 10.48/3.76 else return l.value; 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 public class Random { 10.48/3.76 static String[] args; 10.48/3.76 static int index = 0; 10.48/3.76 10.48/3.76 public static int random() { 10.48/3.76 String string = args[index]; 10.48/3.76 index++; 10.48/3.76 return string.length(); 10.48/3.76 } 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (1) BareJBCToJBCProof (EQUIVALENT) 10.48/3.76 initialized classpath 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (2) 10.48/3.76 Obligation: 10.48/3.76 need to prove termination of the following program: 10.48/3.76 public class ListContentTail{ 10.48/3.76 10.48/3.76 public static void main(String[] args) { 10.48/3.76 Random.args = args; 10.48/3.76 IntList l = IntList.createIntList(); 10.48/3.76 10.48/3.76 int m = IntList.nth(Random.random(),l); 10.48/3.76 10.48/3.76 while (m > 0) { 10.48/3.76 10.48/3.76 l = l.next; 10.48/3.76 m = IntList.nth(Random.random(),l); 10.48/3.76 } 10.48/3.76 } 10.48/3.76 } 10.48/3.76 10.48/3.76 class IntList { 10.48/3.76 int value; 10.48/3.76 IntList next; 10.48/3.76 10.48/3.76 public IntList(int value, IntList next) { 10.48/3.76 this.value = value; 10.48/3.76 this.next = next; 10.48/3.76 } 10.48/3.76 10.48/3.76 public static IntList createIntList() { 10.48/3.76 10.48/3.76 int i = Random.random(); 10.48/3.76 IntList l = null; 10.48/3.76 10.48/3.76 while (i > 0) { 10.48/3.76 l = new IntList(Random.random(), l); 10.48/3.76 i--; 10.48/3.76 } 10.48/3.76 10.48/3.76 return l; 10.48/3.76 } 10.48/3.76 10.48/3.76 public static int nth(int n, IntList l){ 10.48/3.76 10.48/3.76 while (n > 1 && l != null) { 10.48/3.76 n--; 10.48/3.76 l = l.next; 10.48/3.76 } 10.48/3.76 10.48/3.76 if (l == null) return 0; 10.48/3.76 else return l.value; 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 public class Random { 10.48/3.76 static String[] args; 10.48/3.76 static int index = 0; 10.48/3.76 10.48/3.76 public static int random() { 10.48/3.76 String string = args[index]; 10.48/3.76 index++; 10.48/3.76 return string.length(); 10.48/3.76 } 10.48/3.76 } 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (3) JBCToGraph (EQUIVALENT) 10.48/3.76 Constructed TerminationGraph. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (4) 10.48/3.76 Obligation: 10.48/3.76 Termination Graph based on JBC Program: 10.48/3.76 ListContentTail.main([Ljava/lang/String;)V: Graph of 256 nodes with 2 SCCs. 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 IntList.createIntList()LIntList;: Graph of 187 nodes with 1 SCC. 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (5) TerminationGraphToSCCProof (SOUND) 10.48/3.76 Splitted TerminationGraph to 3 SCCss. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (6) 10.48/3.76 Complex Obligation (AND) 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (7) 10.48/3.76 Obligation: 10.48/3.76 SCC of termination graph based on JBC Program. 10.48/3.76 SCC contains nodes from the following methods: IntList.createIntList()LIntList; 10.48/3.76 SCC calls the following helper methods: 10.48/3.76 Performed SCC analyses: 10.48/3.76 *Used field analysis yielded the following read fields: 10.48/3.76 *java.lang.String: [count] 10.48/3.76 *Marker field analysis yielded the following relations that could be markers: 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (8) SCCToIRSProof (SOUND) 10.48/3.76 Transformed FIGraph SCCs to intTRSs. Log: 10.48/3.76 Generated rules. Obtained 39 IRulesP rules: 10.48/3.76 f1498_0_createIntList_LE(EOS(STATIC_1498(java.lang.Object(ARRAY(i6)))), i265, i265) -> f1511_0_createIntList_LE(EOS(STATIC_1511(java.lang.Object(ARRAY(i6)))), i265, i265) :|: TRUE 10.48/3.76 f1511_0_createIntList_LE(EOS(STATIC_1511(java.lang.Object(ARRAY(i6)))), i265, i265) -> f1519_0_createIntList_New(EOS(STATIC_1519(java.lang.Object(ARRAY(i6)))), i265) :|: i265 > 0 10.48/3.76 f1519_0_createIntList_New(EOS(STATIC_1519(java.lang.Object(ARRAY(i6)))), i265) -> f1531_0_createIntList_Duplicate(EOS(STATIC_1531(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1531_0_createIntList_Duplicate(EOS(STATIC_1531(java.lang.Object(ARRAY(i6)))), i265) -> f1551_0_createIntList_InvokeMethod(EOS(STATIC_1551(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1551_0_createIntList_InvokeMethod(EOS(STATIC_1551(java.lang.Object(ARRAY(i6)))), i265) -> f1566_0_random_FieldAccess(EOS(STATIC_1566(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1566_0_random_FieldAccess(EOS(STATIC_1566(java.lang.Object(ARRAY(i6)))), i265) -> f1640_0_random_FieldAccess(EOS(STATIC_1640(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) :|: TRUE 10.48/3.76 f1640_0_random_FieldAccess(EOS(STATIC_1640(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) -> f1647_0_random_ArrayAccess(EOS(STATIC_1647(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) :|: TRUE 10.48/3.76 f1647_0_random_ArrayAccess(EOS(STATIC_1647(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) -> f1650_0_random_ArrayAccess(EOS(STATIC_1650(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) :|: TRUE 10.48/3.76 f1650_0_random_ArrayAccess(EOS(STATIC_1650(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(ARRAY(i6))) -> f1657_0_random_Store(EOS(STATIC_1657(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1657_0_random_Store(EOS(STATIC_1657(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1665_0_random_FieldAccess(EOS(STATIC_1665(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1665_0_random_FieldAccess(EOS(STATIC_1665(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1671_0_random_ConstantStackPush(EOS(STATIC_1671(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1671_0_random_ConstantStackPush(EOS(STATIC_1671(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1680_0_random_IntArithmetic(EOS(STATIC_1680(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1680_0_random_IntArithmetic(EOS(STATIC_1680(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1692_0_random_FieldAccess(EOS(STATIC_1692(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1692_0_random_FieldAccess(EOS(STATIC_1692(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1695_0_random_Load(EOS(STATIC_1695(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1695_0_random_Load(EOS(STATIC_1695(java.lang.Object(ARRAY(i6)))), i265, o250) -> f1702_0_random_InvokeMethod(EOS(STATIC_1702(java.lang.Object(ARRAY(i6)))), i265, o250) :|: TRUE 10.48/3.76 f1702_0_random_InvokeMethod(EOS(STATIC_1702(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o257sub)) -> f1708_0_random_InvokeMethod(EOS(STATIC_1708(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o257sub)) :|: TRUE 10.48/3.76 f1708_0_random_InvokeMethod(EOS(STATIC_1708(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) -> f1715_0_random_InvokeMethod(EOS(STATIC_1715(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) :|: TRUE 10.48/3.76 f1715_0_random_InvokeMethod(EOS(STATIC_1715(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) -> f1727_0_length_Load(EOS(STATIC_1727(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) :|: TRUE 10.48/3.76 f1727_0_length_Load(EOS(STATIC_1727(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) -> f1736_0_length_FieldAccess(EOS(STATIC_1736(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(o258sub)) :|: TRUE 10.48/3.76 f1736_0_length_FieldAccess(EOS(STATIC_1736(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(java.lang.String(EOC, i317))) -> f1742_0_length_FieldAccess(EOS(STATIC_1742(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(java.lang.String(EOC, i317))) :|: TRUE 10.48/3.76 f1742_0_length_FieldAccess(EOS(STATIC_1742(java.lang.Object(ARRAY(i6)))), i265, java.lang.Object(java.lang.String(EOC, i317))) -> f1746_0_length_Return(EOS(STATIC_1746(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1746_0_length_Return(EOS(STATIC_1746(java.lang.Object(ARRAY(i6)))), i265) -> f1749_0_random_Return(EOS(STATIC_1749(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1749_0_random_Return(EOS(STATIC_1749(java.lang.Object(ARRAY(i6)))), i265) -> f1755_0_createIntList_Load(EOS(STATIC_1755(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1755_0_createIntList_Load(EOS(STATIC_1755(java.lang.Object(ARRAY(i6)))), i265) -> f1759_0_createIntList_InvokeMethod(EOS(STATIC_1759(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1759_0_createIntList_InvokeMethod(EOS(STATIC_1759(java.lang.Object(ARRAY(i6)))), i265) -> f1764_0__init__Load(EOS(STATIC_1764(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1764_0__init__Load(EOS(STATIC_1764(java.lang.Object(ARRAY(i6)))), i265) -> f1794_0__init__InvokeMethod(EOS(STATIC_1794(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1794_0__init__InvokeMethod(EOS(STATIC_1794(java.lang.Object(ARRAY(i6)))), i265) -> f1812_0__init__Load(EOS(STATIC_1812(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1812_0__init__Load(EOS(STATIC_1812(java.lang.Object(ARRAY(i6)))), i265) -> f1832_0__init__Load(EOS(STATIC_1832(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1832_0__init__Load(EOS(STATIC_1832(java.lang.Object(ARRAY(i6)))), i265) -> f1853_0__init__FieldAccess(EOS(STATIC_1853(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1853_0__init__FieldAccess(EOS(STATIC_1853(java.lang.Object(ARRAY(i6)))), i265) -> f1881_0__init__Load(EOS(STATIC_1881(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1881_0__init__Load(EOS(STATIC_1881(java.lang.Object(ARRAY(i6)))), i265) -> f1908_0__init__Load(EOS(STATIC_1908(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1908_0__init__Load(EOS(STATIC_1908(java.lang.Object(ARRAY(i6)))), i265) -> f1934_0__init__FieldAccess(EOS(STATIC_1934(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1934_0__init__FieldAccess(EOS(STATIC_1934(java.lang.Object(ARRAY(i6)))), i265) -> f1941_0__init__Return(EOS(STATIC_1941(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1941_0__init__Return(EOS(STATIC_1941(java.lang.Object(ARRAY(i6)))), i265) -> f1948_0_createIntList_Store(EOS(STATIC_1948(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1948_0_createIntList_Store(EOS(STATIC_1948(java.lang.Object(ARRAY(i6)))), i265) -> f1957_0_createIntList_Inc(EOS(STATIC_1957(java.lang.Object(ARRAY(i6)))), i265) :|: TRUE 10.48/3.76 f1957_0_createIntList_Inc(EOS(STATIC_1957(java.lang.Object(ARRAY(i6)))), i265) -> f1966_0_createIntList_JMP(EOS(STATIC_1966(java.lang.Object(ARRAY(i6)))), i265 + -1) :|: TRUE 10.48/3.76 f1966_0_createIntList_JMP(EOS(STATIC_1966(java.lang.Object(ARRAY(i6)))), i340) -> f1989_0_createIntList_Load(EOS(STATIC_1989(java.lang.Object(ARRAY(i6)))), i340) :|: TRUE 10.48/3.76 f1989_0_createIntList_Load(EOS(STATIC_1989(java.lang.Object(ARRAY(i6)))), i340) -> f1459_0_createIntList_Load(EOS(STATIC_1459(java.lang.Object(ARRAY(i6)))), i340) :|: TRUE 10.48/3.76 f1459_0_createIntList_Load(EOS(STATIC_1459(java.lang.Object(ARRAY(i6)))), i238) -> f1498_0_createIntList_LE(EOS(STATIC_1498(java.lang.Object(ARRAY(i6)))), i238, i238) :|: TRUE 10.48/3.76 Combined rules. Obtained 1 IRulesP rules: 10.48/3.76 f1498_0_createIntList_LE(EOS(STATIC_1498(java.lang.Object(ARRAY(i6:0)))), i265:0, i265:0) -> f1498_0_createIntList_LE(EOS(STATIC_1498(java.lang.Object(ARRAY(i6:0)))), i265:0 - 1, i265:0 - 1) :|: i265:0 > 0 10.48/3.76 Filtered duplicate arguments: 10.48/3.76 f1498_0_createIntList_LE(x1, x2, x3) -> f1498_0_createIntList_LE(x1, x3) 10.48/3.76 Filtered unneeded arguments: 10.48/3.76 f1498_0_createIntList_LE(x1, x2) -> f1498_0_createIntList_LE(x2) 10.48/3.76 Finished conversion. Obtained 1 rules.P rules: 10.48/3.76 f1498_0_createIntList_LE(i265:0) -> f1498_0_createIntList_LE(i265:0 - 1) :|: i265:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (9) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f1498_0_createIntList_LE(i265:0) -> f1498_0_createIntList_LE(i265:0 - 1) :|: i265:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (10) IRSFormatTransformerProof (EQUIVALENT) 10.48/3.76 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (11) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f1498_0_createIntList_LE(i265:0) -> f1498_0_createIntList_LE(arith) :|: i265:0 > 0 && arith = i265:0 - 1 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (12) IRSwTTerminationDigraphProof (EQUIVALENT) 10.48/3.76 Constructed termination digraph! 10.48/3.76 Nodes: 10.48/3.76 (1) f1498_0_createIntList_LE(i265:0) -> f1498_0_createIntList_LE(arith) :|: i265:0 > 0 && arith = i265:0 - 1 10.48/3.76 10.48/3.76 Arcs: 10.48/3.76 (1) -> (1) 10.48/3.76 10.48/3.76 This digraph is fully evaluated! 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (13) 10.48/3.76 Obligation: 10.48/3.76 10.48/3.76 Termination digraph: 10.48/3.76 Nodes: 10.48/3.76 (1) f1498_0_createIntList_LE(i265:0) -> f1498_0_createIntList_LE(arith) :|: i265:0 > 0 && arith = i265:0 - 1 10.48/3.76 10.48/3.76 Arcs: 10.48/3.76 (1) -> (1) 10.48/3.76 10.48/3.76 This digraph is fully evaluated! 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (14) IntTRSCompressionProof (EQUIVALENT) 10.48/3.76 Compressed rules. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (15) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f1498_0_createIntList_LE(i265:0:0) -> f1498_0_createIntList_LE(i265:0:0 - 1) :|: i265:0:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (16) TempFilterProof (SOUND) 10.48/3.76 Used the following sort dictionary for filtering: 10.48/3.76 f1498_0_createIntList_LE(INTEGER) 10.48/3.76 Replaced non-predefined constructor symbols by 0. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (17) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f1498_0_createIntList_LE(i265:0:0) -> f1498_0_createIntList_LE(c) :|: c = i265:0:0 - 1 && i265:0:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (18) PolynomialOrderProcessor (EQUIVALENT) 10.48/3.76 Found the following polynomial interpretation: 10.48/3.76 [f1498_0_createIntList_LE(x)] = x 10.48/3.76 10.48/3.76 The following rules are decreasing: 10.48/3.76 f1498_0_createIntList_LE(i265:0:0) -> f1498_0_createIntList_LE(c) :|: c = i265:0:0 - 1 && i265:0:0 > 0 10.48/3.76 The following rules are bounded: 10.48/3.76 f1498_0_createIntList_LE(i265:0:0) -> f1498_0_createIntList_LE(c) :|: c = i265:0:0 - 1 && i265:0:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (19) 10.48/3.76 YES 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (20) 10.48/3.76 Obligation: 10.48/3.76 SCC of termination graph based on JBC Program. 10.48/3.76 SCC contains nodes from the following methods: ListContentTail.main([Ljava/lang/String;)V 10.48/3.76 SCC calls the following helper methods: 10.48/3.76 Performed SCC analyses: 10.48/3.76 *Used field analysis yielded the following read fields: 10.48/3.76 *IntList: [next, value] 10.48/3.76 *java.lang.String: [count] 10.48/3.76 *Marker field analysis yielded the following relations that could be markers: 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (21) SCCToIRSProof (SOUND) 10.48/3.76 Transformed FIGraph SCCs to intTRSs. Log: 10.48/3.76 Generated rules. Obtained 66 IRulesP rules: 10.48/3.76 f2240_0_main_LE(EOS(STATIC_2240(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316, i413) -> f2243_0_main_LE(EOS(STATIC_2243(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316, i413) :|: TRUE 10.48/3.76 f2243_0_main_LE(EOS(STATIC_2243(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316, i413) -> f2245_0_main_Load(EOS(STATIC_2245(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316) :|: i413 > 0 10.48/3.76 f2245_0_main_Load(EOS(STATIC_2245(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316) -> f2247_0_main_FieldAccess(EOS(STATIC_2247(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316) :|: TRUE 10.48/3.76 f2247_0_main_FieldAccess(EOS(STATIC_2247(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), java.lang.Object(o357sub)) -> f2248_0_main_FieldAccess(EOS(STATIC_2248(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), java.lang.Object(o357sub)) :|: TRUE 10.48/3.76 f2248_0_main_FieldAccess(EOS(STATIC_2248(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), java.lang.Object(IntList(EOC, o359, i414))) -> f2250_0_main_FieldAccess(EOS(STATIC_2250(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), java.lang.Object(IntList(EOC, o359, i414))) :|: TRUE 10.48/3.76 f2250_0_main_FieldAccess(EOS(STATIC_2250(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), java.lang.Object(IntList(EOC, o359, i414))) -> f2252_0_main_Store(EOS(STATIC_2252(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) :|: TRUE 10.48/3.76 f2252_0_main_Store(EOS(STATIC_2252(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) -> f2253_0_main_InvokeMethod(EOS(STATIC_2253(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) :|: TRUE 10.48/3.76 f2253_0_main_InvokeMethod(EOS(STATIC_2253(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) -> f2255_0_random_FieldAccess(EOS(STATIC_2255(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) :|: TRUE 10.48/3.76 f2255_0_random_FieldAccess(EOS(STATIC_2255(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359) -> f2257_0_random_FieldAccess(EOS(STATIC_2257(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) :|: TRUE 10.48/3.76 f2257_0_random_FieldAccess(EOS(STATIC_2257(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) -> f2259_0_random_ArrayAccess(EOS(STATIC_2259(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) :|: TRUE 10.48/3.76 f2259_0_random_ArrayAccess(EOS(STATIC_2259(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) -> f2261_0_random_ArrayAccess(EOS(STATIC_2261(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) :|: TRUE 10.48/3.76 f2261_0_random_ArrayAccess(EOS(STATIC_2261(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(ARRAY(i286))) -> f2263_0_random_Store(EOS(STATIC_2263(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2263_0_random_Store(EOS(STATIC_2263(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2266_0_random_FieldAccess(EOS(STATIC_2266(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2266_0_random_FieldAccess(EOS(STATIC_2266(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2268_0_random_ConstantStackPush(EOS(STATIC_2268(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2268_0_random_ConstantStackPush(EOS(STATIC_2268(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2270_0_random_IntArithmetic(EOS(STATIC_2270(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2270_0_random_IntArithmetic(EOS(STATIC_2270(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2273_0_random_FieldAccess(EOS(STATIC_2273(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2273_0_random_FieldAccess(EOS(STATIC_2273(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2275_0_random_Load(EOS(STATIC_2275(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2275_0_random_Load(EOS(STATIC_2275(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) -> f2278_0_random_InvokeMethod(EOS(STATIC_2278(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, o361) :|: TRUE 10.48/3.76 f2278_0_random_InvokeMethod(EOS(STATIC_2278(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o366sub)) -> f2281_0_random_InvokeMethod(EOS(STATIC_2281(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o366sub)) :|: TRUE 10.48/3.76 f2281_0_random_InvokeMethod(EOS(STATIC_2281(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) -> f2284_0_random_InvokeMethod(EOS(STATIC_2284(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) :|: TRUE 10.48/3.76 f2284_0_random_InvokeMethod(EOS(STATIC_2284(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) -> f2288_0_length_Load(EOS(STATIC_2288(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) :|: TRUE 10.48/3.76 f2288_0_length_Load(EOS(STATIC_2288(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) -> f2295_0_length_FieldAccess(EOS(STATIC_2295(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(o367sub)) :|: TRUE 10.48/3.76 f2295_0_length_FieldAccess(EOS(STATIC_2295(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(java.lang.String(EOC, i430))) -> f2308_0_length_FieldAccess(EOS(STATIC_2308(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(java.lang.String(EOC, i430))) :|: i430 >= 0 10.48/3.76 f2308_0_length_FieldAccess(EOS(STATIC_2308(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, java.lang.Object(java.lang.String(EOC, i430))) -> f2317_0_length_Return(EOS(STATIC_2317(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) :|: TRUE 10.48/3.76 f2317_0_length_Return(EOS(STATIC_2317(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) -> f2327_0_random_Return(EOS(STATIC_2327(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) :|: TRUE 10.48/3.76 f2327_0_random_Return(EOS(STATIC_2327(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) -> f2337_0_main_Load(EOS(STATIC_2337(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) :|: TRUE 10.48/3.76 f2337_0_main_Load(EOS(STATIC_2337(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430) -> f2346_0_main_InvokeMethod(EOS(STATIC_2346(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430, o359) :|: TRUE 10.48/3.76 f2346_0_main_InvokeMethod(EOS(STATIC_2346(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430, o359) -> f2356_0_nth_Load(EOS(STATIC_2356(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430, o359) :|: TRUE 10.48/3.76 f2356_0_nth_Load(EOS(STATIC_2356(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430, o359) -> f2553_0_nth_Load(EOS(STATIC_2553(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o359, i430, o359) :|: TRUE 10.48/3.76 f2553_0_nth_Load(EOS(STATIC_2553(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i480, o419) -> f2566_0_nth_ConstantStackPush(EOS(STATIC_2566(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i480, o419, i480) :|: TRUE 10.48/3.76 f2566_0_nth_ConstantStackPush(EOS(STATIC_2566(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i480, o419, i480) -> f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i480, o419, i480, 1) :|: TRUE 10.48/3.76 f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i492, o419, i492, matching1) -> f2595_0_nth_LE(EOS(STATIC_2595(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i492, o419, i492, 1) :|: TRUE && matching1 = 1 10.48/3.76 f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419, i493, matching1) -> f2597_0_nth_LE(EOS(STATIC_2597(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419, i493, 1) :|: TRUE && matching1 = 1 10.48/3.76 f2595_0_nth_LE(EOS(STATIC_2595(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i492, o419, i492, matching1) -> f2606_0_nth_Load(EOS(STATIC_2606(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, o419) :|: i492 <= 1 && matching1 = 1 10.48/3.76 f2606_0_nth_Load(EOS(STATIC_2606(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, o419) -> f2624_0_nth_NONNULL(EOS(STATIC_2624(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, o419, o419) :|: TRUE 10.48/3.76 f2624_0_nth_NONNULL(EOS(STATIC_2624(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub), java.lang.Object(o436sub)) -> f2634_0_nth_NONNULL(EOS(STATIC_2634(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub), java.lang.Object(o436sub)) :|: TRUE 10.48/3.76 f2624_0_nth_NONNULL(EOS(STATIC_2624(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL, NULL) -> f2635_0_nth_NONNULL(EOS(STATIC_2635(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL, NULL) :|: TRUE 10.48/3.76 f2634_0_nth_NONNULL(EOS(STATIC_2634(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub), java.lang.Object(o436sub)) -> f2643_0_nth_Load(EOS(STATIC_2643(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub)) :|: TRUE 10.48/3.76 f2643_0_nth_Load(EOS(STATIC_2643(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub)) -> f2655_0_nth_FieldAccess(EOS(STATIC_2655(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(o436sub)) :|: TRUE 10.48/3.76 f2655_0_nth_FieldAccess(EOS(STATIC_2655(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(IntList(EOC, o445, i508))) -> f2670_0_nth_FieldAccess(EOS(STATIC_2670(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(IntList(EOC, o445, i508))) :|: TRUE 10.48/3.76 f2670_0_nth_FieldAccess(EOS(STATIC_2670(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, java.lang.Object(IntList(EOC, o445, i508))) -> f2689_0_nth_Return(EOS(STATIC_2689(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) :|: TRUE 10.48/3.76 f2689_0_nth_Return(EOS(STATIC_2689(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) -> f2720_0_main_Store(EOS(STATIC_2720(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) :|: TRUE 10.48/3.76 f2720_0_main_Store(EOS(STATIC_2720(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) -> f2727_0_main_JMP(EOS(STATIC_2727(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) :|: TRUE 10.48/3.76 f2727_0_main_JMP(EOS(STATIC_2727(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) -> f2743_0_main_Load(EOS(STATIC_2743(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) :|: TRUE 10.48/3.76 f2743_0_main_Load(EOS(STATIC_2743(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) -> f2238_0_main_Load(EOS(STATIC_2238(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i508) :|: TRUE 10.48/3.76 f2238_0_main_Load(EOS(STATIC_2238(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316, i408) -> f2240_0_main_LE(EOS(STATIC_2240(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o316, i408) :|: TRUE 10.48/3.76 f2635_0_nth_NONNULL(EOS(STATIC_2635(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL, NULL) -> f2645_0_nth_ConstantStackPush(EOS(STATIC_2645(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420) :|: TRUE 10.48/3.76 f2645_0_nth_ConstantStackPush(EOS(STATIC_2645(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420) -> f2658_0_nth_Return(EOS(STATIC_2658(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, 0) :|: TRUE 10.48/3.76 f2658_0_nth_Return(EOS(STATIC_2658(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, matching1) -> f2673_0_main_Store(EOS(STATIC_2673(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, 0) :|: TRUE && matching1 = 0 10.48/3.76 f2673_0_main_Store(EOS(STATIC_2673(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, matching1) -> f2720_0_main_Store(EOS(STATIC_2720(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, 0) :|: TRUE && matching1 = 0 10.48/3.76 f2597_0_nth_LE(EOS(STATIC_2597(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419, i493, matching1) -> f2615_0_nth_Load(EOS(STATIC_2615(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419) :|: i493 > 1 && matching1 = 1 10.48/3.76 f2615_0_nth_Load(EOS(STATIC_2615(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419) -> f2631_0_nth_NULL(EOS(STATIC_2631(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, o419, o419) :|: TRUE 10.48/3.76 f2631_0_nth_NULL(EOS(STATIC_2631(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, java.lang.Object(o437sub), java.lang.Object(o437sub)) -> f2638_0_nth_NULL(EOS(STATIC_2638(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, java.lang.Object(o437sub), java.lang.Object(o437sub)) :|: TRUE 10.48/3.76 f2631_0_nth_NULL(EOS(STATIC_2631(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, NULL, NULL) -> f2639_0_nth_NULL(EOS(STATIC_2639(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, NULL, NULL) :|: TRUE 10.48/3.76 f2638_0_nth_NULL(EOS(STATIC_2638(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, java.lang.Object(o437sub), java.lang.Object(o437sub)) -> f2646_0_nth_Inc(EOS(STATIC_2646(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, java.lang.Object(o437sub)) :|: TRUE 10.48/3.76 f2646_0_nth_Inc(EOS(STATIC_2646(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, java.lang.Object(o437sub)) -> f2662_0_nth_Load(EOS(STATIC_2662(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493 + -1, java.lang.Object(o437sub)) :|: TRUE 10.48/3.76 f2662_0_nth_Load(EOS(STATIC_2662(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, java.lang.Object(o437sub)) -> f2680_0_nth_FieldAccess(EOS(STATIC_2680(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, java.lang.Object(o437sub)) :|: TRUE 10.48/3.76 f2680_0_nth_FieldAccess(EOS(STATIC_2680(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, java.lang.Object(IntList(EOC, o453, i515))) -> f2695_0_nth_FieldAccess(EOS(STATIC_2695(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, java.lang.Object(IntList(EOC, o453, i515))) :|: TRUE 10.48/3.76 f2695_0_nth_FieldAccess(EOS(STATIC_2695(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, java.lang.Object(IntList(EOC, o453, i515))) -> f2724_0_nth_Store(EOS(STATIC_2724(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) :|: TRUE 10.48/3.76 f2724_0_nth_Store(EOS(STATIC_2724(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) -> f2730_0_nth_JMP(EOS(STATIC_2730(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) :|: TRUE 10.48/3.76 f2730_0_nth_JMP(EOS(STATIC_2730(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) -> f2745_0_nth_Load(EOS(STATIC_2745(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) :|: TRUE 10.48/3.76 f2745_0_nth_Load(EOS(STATIC_2745(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) -> f2553_0_nth_Load(EOS(STATIC_2553(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i507, o453) :|: TRUE 10.48/3.76 f2639_0_nth_NULL(EOS(STATIC_2639(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, i493, NULL, NULL) -> f2648_0_nth_Load(EOS(STATIC_2648(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL) :|: TRUE 10.48/3.76 f2648_0_nth_Load(EOS(STATIC_2648(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL) -> f2666_0_nth_NONNULL(EOS(STATIC_2666(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL, NULL) :|: TRUE 10.48/3.76 f2666_0_nth_NONNULL(EOS(STATIC_2666(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420, NULL, NULL) -> f2685_0_nth_ConstantStackPush(EOS(STATIC_2685(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420) :|: TRUE 10.48/3.76 f2685_0_nth_ConstantStackPush(EOS(STATIC_2685(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420) -> f2645_0_nth_ConstantStackPush(EOS(STATIC_2645(java.lang.Object(ARRAY(i286)))), java.lang.Object(ARRAY(i286)), o420) :|: TRUE 10.48/3.76 Combined rules. Obtained 2 IRulesP rules: 10.48/3.76 f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286:0)))), java.lang.Object(ARRAY(i286:0)), o420:0, i493:0, java.lang.Object(IntList(EOC, o453:0, i515:0)), i493:0, 1) -> f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286:0)))), java.lang.Object(ARRAY(i286:0)), o420:0, i493:0 - 1, o453:0, i493:0 - 1, 1) :|: i493:0 > 1 10.48/3.76 f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286:0)))), java.lang.Object(ARRAY(i286:0)), java.lang.Object(IntList(EOC, o359:0, i414:0)), i492:0, java.lang.Object(IntList(EOC, o445:0, i508:0)), i492:0, 1) -> f2585_0_nth_LE(EOS(STATIC_2585(java.lang.Object(ARRAY(i286:0)))), java.lang.Object(ARRAY(i286:0)), o359:0, i430:0, o359:0, i430:0, 1) :|: i508:0 > 0 && i430:0 > -1 && i492:0 < 2 10.48/3.76 Filtered constant ground arguments: 10.48/3.76 f2585_0_nth_LE(x1, x2, x3, x4, x5, x6, x7) -> f2585_0_nth_LE(x1, x2, x3, x4, x5, x6) 10.48/3.76 IntList(x1, x2, x3) -> IntList(x2, x3) 10.48/3.76 Filtered duplicate arguments: 10.48/3.76 f2585_0_nth_LE(x1, x2, x3, x4, x5, x6) -> f2585_0_nth_LE(x1, x2, x3, x5, x6) 10.48/3.76 Filtered unneeded arguments: 10.48/3.76 f2585_0_nth_LE(x1, x2, x3, x4, x5) -> f2585_0_nth_LE(x3, x4, x5) 10.48/3.76 Finished conversion. Obtained 2 rules.P rules: 10.48/3.76 f2585_0_nth_LE(o420:0, java.lang.Object(IntList(o453:0, i515:0)), i493:0) -> f2585_0_nth_LE(o420:0, o453:0, i493:0 - 1) :|: i493:0 > 1 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0, i414:0)), java.lang.Object(IntList(o445:0, i508:0)), i492:0) -> f2585_0_nth_LE(o359:0, o359:0, i430:0) :|: i430:0 > -1 && i492:0 < 2 && i508:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (22) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f2585_0_nth_LE(o420:0, java.lang.Object(IntList(o453:0, i515:0)), i493:0) -> f2585_0_nth_LE(o420:0, o453:0, i493:0 - 1) :|: i493:0 > 1 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0, i414:0)), java.lang.Object(IntList(o445:0, i508:0)), i492:0) -> f2585_0_nth_LE(o359:0, o359:0, i430:0) :|: i430:0 > -1 && i492:0 < 2 && i508:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (23) IRSFormatTransformerProof (EQUIVALENT) 10.48/3.76 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (24) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f2585_0_nth_LE(o420:0, java.lang.Object(IntList(o453:0, i515:0)), i493:0) -> f2585_0_nth_LE(o420:0, o453:0, arith) :|: i493:0 > 1 && arith = i493:0 - 1 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0, i414:0)), java.lang.Object(IntList(o445:0, i508:0)), i492:0) -> f2585_0_nth_LE(o359:0, o359:0, i430:0) :|: i430:0 > -1 && i492:0 < 2 && i508:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (25) IRSwTTerminationDigraphProof (EQUIVALENT) 10.48/3.76 Constructed termination digraph! 10.48/3.76 Nodes: 10.48/3.76 (1) f2585_0_nth_LE(o420:0, java.lang.Object(IntList(o453:0, i515:0)), i493:0) -> f2585_0_nth_LE(o420:0, o453:0, arith) :|: i493:0 > 1 && arith = i493:0 - 1 10.48/3.76 (2) f2585_0_nth_LE(java.lang.Object(IntList(o359:0, i414:0)), java.lang.Object(IntList(o445:0, i508:0)), i492:0) -> f2585_0_nth_LE(o359:0, o359:0, i430:0) :|: i430:0 > -1 && i492:0 < 2 && i508:0 > 0 10.48/3.76 10.48/3.76 Arcs: 10.48/3.76 (1) -> (1), (2) 10.48/3.76 (2) -> (1), (2) 10.48/3.76 10.48/3.76 This digraph is fully evaluated! 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (26) 10.48/3.76 Obligation: 10.48/3.76 10.48/3.76 Termination digraph: 10.48/3.76 Nodes: 10.48/3.76 (1) f2585_0_nth_LE(o420:0, java.lang.Object(IntList(o453:0, i515:0)), i493:0) -> f2585_0_nth_LE(o420:0, o453:0, arith) :|: i493:0 > 1 && arith = i493:0 - 1 10.48/3.76 (2) f2585_0_nth_LE(java.lang.Object(IntList(o359:0, i414:0)), java.lang.Object(IntList(o445:0, i508:0)), i492:0) -> f2585_0_nth_LE(o359:0, o359:0, i430:0) :|: i430:0 > -1 && i492:0 < 2 && i508:0 > 0 10.48/3.76 10.48/3.76 Arcs: 10.48/3.76 (1) -> (1), (2) 10.48/3.76 (2) -> (1), (2) 10.48/3.76 10.48/3.76 This digraph is fully evaluated! 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (27) IntTRSCompressionProof (EQUIVALENT) 10.48/3.76 Compressed rules. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (28) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f2585_0_nth_LE(o420:0:0, java.lang.Object(IntList(o453:0:0, i515:0:0)), i493:0:0) -> f2585_0_nth_LE(o420:0:0, o453:0:0, i493:0:0 - 1) :|: i493:0:0 > 1 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0:0, i414:0:0)), java.lang.Object(IntList(o445:0:0, i508:0:0)), i492:0:0) -> f2585_0_nth_LE(o359:0:0, o359:0:0, i430:0:0) :|: i430:0:0 > -1 && i492:0:0 < 2 && i508:0:0 > 0 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (29) TempFilterProof (SOUND) 10.48/3.76 Used the following sort dictionary for filtering: 10.48/3.76 f2585_0_nth_LE(VARIABLE, VARIABLE, INTEGER) 10.48/3.76 java.lang.Object(VARIABLE) 10.48/3.76 IntList(VARIABLE, VARIABLE) 10.48/3.76 Removed predefined arithmetic. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (30) 10.48/3.76 Obligation: 10.48/3.76 Rules: 10.48/3.76 f2585_0_nth_LE(o420:0:0, java.lang.Object(IntList(o453:0:0, i515:0:0))) -> f2585_0_nth_LE(o420:0:0, o453:0:0) 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0:0, i414:0:0)), java.lang.Object(IntList(o445:0:0, i508:0:0))) -> f2585_0_nth_LE(o359:0:0, o359:0:0) 10.48/3.76 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (31) IRSwTToQDPProof (SOUND) 10.48/3.76 Removed the integers and created a QDP-Problem. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (32) 10.48/3.76 Obligation: 10.48/3.76 Q DP problem: 10.48/3.76 The TRS P consists of the following rules: 10.48/3.76 10.48/3.76 f2585_0_nth_LE(o420:0:0, java.lang.Object(IntList(o453:0:0, i515:0:0))) -> f2585_0_nth_LE(o420:0:0, o453:0:0) 10.48/3.76 f2585_0_nth_LE(java.lang.Object(IntList(o359:0:0, i414:0:0)), java.lang.Object(IntList(o445:0:0, i508:0:0))) -> f2585_0_nth_LE(o359:0:0, o359:0:0) 10.48/3.76 10.48/3.76 R is empty. 10.48/3.76 Q is empty. 10.48/3.76 We have to consider all (P,Q,R)-chains. 10.48/3.76 ---------------------------------------- 10.48/3.76 10.48/3.76 (33) QDPSizeChangeProof (EQUIVALENT) 10.48/3.76 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. 10.48/3.76 10.48/3.76 From the DPs we obtained the following set of size-change graphs: 10.68/3.76 *f2585_0_nth_LE(o420:0:0, java.lang.Object(IntList(o453:0:0, i515:0:0))) -> f2585_0_nth_LE(o420:0:0, o453:0:0) 10.68/3.76 The graph contains the following edges 1 >= 1, 2 > 2 10.68/3.76 10.68/3.76 10.68/3.76 *f2585_0_nth_LE(java.lang.Object(IntList(o359:0:0, i414:0:0)), java.lang.Object(IntList(o445:0:0, i508:0:0))) -> f2585_0_nth_LE(o359:0:0, o359:0:0) 10.68/3.76 The graph contains the following edges 1 > 1, 1 > 2 10.68/3.76 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (34) 10.68/3.76 YES 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (35) 10.68/3.76 Obligation: 10.68/3.76 SCC of termination graph based on JBC Program. 10.68/3.76 SCC contains nodes from the following methods: ListContentTail.main([Ljava/lang/String;)V 10.68/3.76 SCC calls the following helper methods: 10.68/3.76 Performed SCC analyses: 10.68/3.76 *Used field analysis yielded the following read fields: 10.68/3.76 *IntList: [next] 10.68/3.76 *Marker field analysis yielded the following relations that could be markers: 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (36) SCCToIRSProof (SOUND) 10.68/3.76 Transformed FIGraph SCCs to intTRSs. Log: 10.68/3.76 Generated rules. Obtained 14 IRulesP rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(EOS(STATIC_2208), i375, o315, i375) -> f2210_0_nth_LE(EOS(STATIC_2210), i375, o315, i375, 1) :|: TRUE 10.68/3.76 f2210_0_nth_LE(EOS(STATIC_2210), i406, o315, i406, matching1) -> f2212_0_nth_LE(EOS(STATIC_2212), i406, o315, i406, 1) :|: TRUE && matching1 = 1 10.68/3.76 f2212_0_nth_LE(EOS(STATIC_2212), i406, o315, i406, matching1) -> f2214_0_nth_Load(EOS(STATIC_2214), i406, o315) :|: i406 > 1 && matching1 = 1 10.68/3.76 f2214_0_nth_Load(EOS(STATIC_2214), i406, o315) -> f2216_0_nth_NULL(EOS(STATIC_2216), i406, o315, o315) :|: TRUE 10.68/3.76 f2216_0_nth_NULL(EOS(STATIC_2216), i406, java.lang.Object(o346sub), java.lang.Object(o346sub)) -> f2219_0_nth_NULL(EOS(STATIC_2219), i406, java.lang.Object(o346sub), java.lang.Object(o346sub)) :|: TRUE 10.68/3.76 f2219_0_nth_NULL(EOS(STATIC_2219), i406, java.lang.Object(o346sub), java.lang.Object(o346sub)) -> f2223_0_nth_Inc(EOS(STATIC_2223), i406, java.lang.Object(o346sub)) :|: TRUE 10.68/3.76 f2223_0_nth_Inc(EOS(STATIC_2223), i406, java.lang.Object(o346sub)) -> f2227_0_nth_Load(EOS(STATIC_2227), i406 + -1, java.lang.Object(o346sub)) :|: TRUE 10.68/3.76 f2227_0_nth_Load(EOS(STATIC_2227), i407, java.lang.Object(o346sub)) -> f2231_0_nth_FieldAccess(EOS(STATIC_2231), i407, java.lang.Object(o346sub)) :|: TRUE 10.68/3.76 f2231_0_nth_FieldAccess(EOS(STATIC_2231), i407, java.lang.Object(IntList(EOC, o353))) -> f2235_0_nth_FieldAccess(EOS(STATIC_2235), i407, java.lang.Object(IntList(EOC, o353))) :|: TRUE 10.68/3.76 f2235_0_nth_FieldAccess(EOS(STATIC_2235), i407, java.lang.Object(IntList(EOC, o353))) -> f2237_0_nth_Store(EOS(STATIC_2237), i407, o353) :|: TRUE 10.68/3.76 f2237_0_nth_Store(EOS(STATIC_2237), i407, o353) -> f2239_0_nth_JMP(EOS(STATIC_2239), i407, o353) :|: TRUE 10.68/3.76 f2239_0_nth_JMP(EOS(STATIC_2239), i407, o353) -> f2241_0_nth_Load(EOS(STATIC_2241), i407, o353) :|: TRUE 10.68/3.76 f2241_0_nth_Load(EOS(STATIC_2241), i407, o353) -> f2206_0_nth_Load(EOS(STATIC_2206), i407, o353) :|: TRUE 10.68/3.76 f2206_0_nth_Load(EOS(STATIC_2206), i375, o315) -> f2208_0_nth_ConstantStackPush(EOS(STATIC_2208), i375, o315, i375) :|: TRUE 10.68/3.76 Combined rules. Obtained 1 IRulesP rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(EOS(STATIC_2208), i375:0, java.lang.Object(IntList(EOC, o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(EOS(STATIC_2208), i375:0 - 1, o353:0, i375:0 - 1) :|: i375:0 > 1 10.68/3.76 Filtered constant ground arguments: 10.68/3.76 f2208_0_nth_ConstantStackPush(x1, x2, x3, x4) -> f2208_0_nth_ConstantStackPush(x2, x3, x4) 10.68/3.76 EOS(x1) -> EOS 10.68/3.76 IntList(x1, x2) -> IntList(x2) 10.68/3.76 Filtered duplicate arguments: 10.68/3.76 f2208_0_nth_ConstantStackPush(x1, x2, x3) -> f2208_0_nth_ConstantStackPush(x2, x3) 10.68/3.76 Finished conversion. Obtained 1 rules.P rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(o353:0, i375:0 - 1) :|: i375:0 > 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (37) 10.68/3.76 Obligation: 10.68/3.76 Rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(o353:0, i375:0 - 1) :|: i375:0 > 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (38) IRSFormatTransformerProof (EQUIVALENT) 10.68/3.76 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (39) 10.68/3.76 Obligation: 10.68/3.76 Rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(o353:0, arith) :|: i375:0 > 1 && arith = i375:0 - 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (40) IRSwTTerminationDigraphProof (EQUIVALENT) 10.68/3.76 Constructed termination digraph! 10.68/3.76 Nodes: 10.68/3.76 (1) f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(o353:0, arith) :|: i375:0 > 1 && arith = i375:0 - 1 10.68/3.76 10.68/3.76 Arcs: 10.68/3.76 (1) -> (1) 10.68/3.76 10.68/3.76 This digraph is fully evaluated! 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (41) 10.68/3.76 Obligation: 10.68/3.76 10.68/3.76 Termination digraph: 10.68/3.76 Nodes: 10.68/3.76 (1) f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0)), i375:0) -> f2208_0_nth_ConstantStackPush(o353:0, arith) :|: i375:0 > 1 && arith = i375:0 - 1 10.68/3.76 10.68/3.76 Arcs: 10.68/3.76 (1) -> (1) 10.68/3.76 10.68/3.76 This digraph is fully evaluated! 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (42) IntTRSCompressionProof (EQUIVALENT) 10.68/3.76 Compressed rules. 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (43) 10.68/3.76 Obligation: 10.68/3.76 Rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(java.lang.Object(IntList(o353:0:0)), i375:0:0) -> f2208_0_nth_ConstantStackPush(o353:0:0, i375:0:0 - 1) :|: i375:0:0 > 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (44) TempFilterProof (SOUND) 10.68/3.76 Used the following sort dictionary for filtering: 10.68/3.76 f2208_0_nth_ConstantStackPush(VARIABLE, INTEGER) 10.68/3.76 java.lang.Object(VARIABLE) 10.68/3.76 IntList(VARIABLE) 10.68/3.76 Replaced non-predefined constructor symbols by 0. 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (45) 10.68/3.76 Obligation: 10.68/3.76 Rules: 10.68/3.76 f2208_0_nth_ConstantStackPush(c, i375:0:0) -> f2208_0_nth_ConstantStackPush(o353:0:0, c1) :|: c1 = i375:0:0 - 1 && c = 0 && i375:0:0 > 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (46) PolynomialOrderProcessor (EQUIVALENT) 10.68/3.76 Found the following polynomial interpretation: 10.68/3.76 [f2208_0_nth_ConstantStackPush(x, x1)] = x1 10.68/3.76 10.68/3.76 The following rules are decreasing: 10.68/3.76 f2208_0_nth_ConstantStackPush(c, i375:0:0) -> f2208_0_nth_ConstantStackPush(o353:0:0, c1) :|: c1 = i375:0:0 - 1 && c = 0 && i375:0:0 > 1 10.68/3.76 The following rules are bounded: 10.68/3.76 f2208_0_nth_ConstantStackPush(c, i375:0:0) -> f2208_0_nth_ConstantStackPush(o353:0:0, c1) :|: c1 = i375:0:0 - 1 && c = 0 && i375:0:0 > 1 10.68/3.76 10.68/3.76 ---------------------------------------- 10.68/3.76 10.68/3.76 (47) 10.68/3.76 YES 10.68/3.80 EOF