8.82/3.23 YES 9.02/3.25 proof of /export/starexec/sandbox2/benchmark/theBenchmark.jar 9.02/3.25 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 9.02/3.25 9.02/3.25 9.02/3.25 termination of the given Bare JBC problem could be proven: 9.02/3.25 9.02/3.25 (0) Bare JBC problem 9.02/3.25 (1) BareJBCToJBCProof [EQUIVALENT, 96 ms] 9.02/3.25 (2) JBC problem 9.02/3.25 (3) JBCToGraph [EQUIVALENT, 411 ms] 9.02/3.25 (4) JBCTerminationGraph 9.02/3.25 (5) TerminationGraphToSCCProof [SOUND, 0 ms] 9.02/3.25 (6) AND 9.02/3.25 (7) JBCTerminationSCC 9.02/3.25 (8) SCCToQDPProof [SOUND, 62 ms] 9.02/3.25 (9) QDP 9.02/3.25 (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] 9.02/3.25 (11) YES 9.02/3.25 (12) JBCTerminationSCC 9.02/3.25 (13) SCCToIRSProof [SOUND, 63 ms] 9.02/3.25 (14) IRSwT 9.02/3.25 (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 9.02/3.25 (16) IRSwT 9.02/3.25 (17) IRSwTTerminationDigraphProof [EQUIVALENT, 45 ms] 9.02/3.25 (18) IRSwT 9.02/3.25 (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] 9.02/3.25 (20) IRSwT 9.02/3.25 (21) TempFilterProof [SOUND, 51 ms] 9.02/3.25 (22) IntTRS 9.02/3.25 (23) RankingReductionPairProof [EQUIVALENT, 0 ms] 9.02/3.25 (24) YES 9.02/3.25 (25) JBCTerminationSCC 9.02/3.25 (26) SCCToIRSProof [SOUND, 37 ms] 9.02/3.25 (27) IRSwT 9.02/3.25 (28) IRSFormatTransformerProof [EQUIVALENT, 0 ms] 9.02/3.25 (29) IRSwT 9.02/3.25 (30) IRSwTTerminationDigraphProof [EQUIVALENT, 20 ms] 9.02/3.25 (31) IRSwT 9.02/3.25 (32) IntTRSCompressionProof [EQUIVALENT, 0 ms] 9.02/3.25 (33) IRSwT 9.02/3.25 (34) TempFilterProof [SOUND, 9 ms] 9.02/3.25 (35) IntTRS 9.02/3.25 (36) RankingReductionPairProof [EQUIVALENT, 0 ms] 9.02/3.25 (37) YES 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (0) 9.02/3.25 Obligation: 9.02/3.25 need to prove termination of the following program: 9.02/3.25 package CyclicAnalysis; 9.02/3.25 9.02/3.25 public class CyclicAnalysis { 9.02/3.25 CyclicAnalysis field; 9.02/3.25 9.02/3.25 public static void main(String[] args) { 9.02/3.25 Random.args = args; 9.02/3.25 CyclicAnalysis t = new CyclicAnalysis(); 9.02/3.25 t.field = new CyclicAnalysis(); 9.02/3.25 t.field.appendNewCyclicList(Random.random()); 9.02/3.25 t.appendNewList(Random.random()); 9.02/3.25 t.length(); 9.02/3.25 } 9.02/3.25 9.02/3.25 public int length() { 9.02/3.25 int length = 1; 9.02/3.25 CyclicAnalysis cur = this.field; 9.02/3.25 while (cur != null) { 9.02/3.25 cur = cur.field; 9.02/3.25 length++; 9.02/3.25 } 9.02/3.25 return length; 9.02/3.25 } 9.02/3.25 9.02/3.25 public void appendNewCyclicList(int i) { 9.02/3.25 CyclicAnalysis last = this.appendNewList(i); 9.02/3.25 last.field = this; 9.02/3.25 } 9.02/3.25 9.02/3.25 /** 9.02/3.25 * @param i number of elements to append 9.02/3.25 * @return the last list element appended 9.02/3.25 */ 9.02/3.25 private CyclicAnalysis appendNewList(int i) { 9.02/3.25 this.field = new CyclicAnalysis(); 9.02/3.25 CyclicAnalysis cur = this.field; 9.02/3.25 while (i > 1) { 9.02/3.25 i--; 9.02/3.25 cur = cur.field = new CyclicAnalysis(); 9.02/3.25 } 9.02/3.25 return cur; 9.02/3.25 } 9.02/3.25 } 9.02/3.25 9.02/3.25 9.02/3.25 package CyclicAnalysis; 9.02/3.25 9.02/3.25 public class Random { 9.02/3.25 static String[] args; 9.02/3.25 static int index = 0; 9.02/3.25 9.02/3.25 public static int random() { 9.02/3.25 final String string = args[index]; 9.02/3.25 index++; 9.02/3.25 return string.length(); 9.02/3.25 } 9.02/3.25 } 9.02/3.25 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (1) BareJBCToJBCProof (EQUIVALENT) 9.02/3.25 initialized classpath 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (2) 9.02/3.25 Obligation: 9.02/3.25 need to prove termination of the following program: 9.02/3.25 package CyclicAnalysis; 9.02/3.25 9.02/3.25 public class CyclicAnalysis { 9.02/3.25 CyclicAnalysis field; 9.02/3.25 9.02/3.25 public static void main(String[] args) { 9.02/3.25 Random.args = args; 9.02/3.25 CyclicAnalysis t = new CyclicAnalysis(); 9.02/3.25 t.field = new CyclicAnalysis(); 9.02/3.25 t.field.appendNewCyclicList(Random.random()); 9.02/3.25 t.appendNewList(Random.random()); 9.02/3.25 t.length(); 9.02/3.25 } 9.02/3.25 9.02/3.25 public int length() { 9.02/3.25 int length = 1; 9.02/3.25 CyclicAnalysis cur = this.field; 9.02/3.25 while (cur != null) { 9.02/3.25 cur = cur.field; 9.02/3.25 length++; 9.02/3.25 } 9.02/3.25 return length; 9.02/3.25 } 9.02/3.25 9.02/3.25 public void appendNewCyclicList(int i) { 9.02/3.25 CyclicAnalysis last = this.appendNewList(i); 9.02/3.25 last.field = this; 9.02/3.25 } 9.02/3.25 9.02/3.25 /** 9.02/3.25 * @param i number of elements to append 9.02/3.25 * @return the last list element appended 9.02/3.25 */ 9.02/3.25 private CyclicAnalysis appendNewList(int i) { 9.02/3.25 this.field = new CyclicAnalysis(); 9.02/3.25 CyclicAnalysis cur = this.field; 9.02/3.25 while (i > 1) { 9.02/3.25 i--; 9.02/3.25 cur = cur.field = new CyclicAnalysis(); 9.02/3.25 } 9.02/3.25 return cur; 9.02/3.25 } 9.02/3.25 } 9.02/3.25 9.02/3.25 9.02/3.25 package CyclicAnalysis; 9.02/3.25 9.02/3.25 public class Random { 9.02/3.25 static String[] args; 9.02/3.25 static int index = 0; 9.02/3.25 9.02/3.25 public static int random() { 9.02/3.25 final String string = args[index]; 9.02/3.25 index++; 9.02/3.25 return string.length(); 9.02/3.25 } 9.02/3.25 } 9.02/3.25 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (3) JBCToGraph (EQUIVALENT) 9.02/3.25 Constructed TerminationGraph. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (4) 9.02/3.25 Obligation: 9.02/3.25 Termination Graph based on JBC Program: 9.02/3.25 CyclicAnalysis.CyclicAnalysis.main([Ljava/lang/String;)V: Graph of 299 nodes with 3 SCCs. 9.02/3.25 9.02/3.25 9.02/3.25 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (5) TerminationGraphToSCCProof (SOUND) 9.02/3.25 Splitted TerminationGraph to 3 SCCss. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (6) 9.02/3.25 Complex Obligation (AND) 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (7) 9.02/3.25 Obligation: 9.02/3.25 SCC of termination graph based on JBC Program. 9.02/3.25 SCC contains nodes from the following methods: CyclicAnalysis.CyclicAnalysis.main([Ljava/lang/String;)V 9.02/3.25 SCC calls the following helper methods: 9.02/3.25 Performed SCC analyses: 9.02/3.25 *Used field analysis yielded the following read fields: 9.02/3.25 *CyclicAnalysis.CyclicAnalysis: [field] 9.02/3.25 *Marker field analysis yielded the following relations that could be markers: 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (8) SCCToQDPProof (SOUND) 9.02/3.25 Transformed TerminationGraph SCC to QDP. Log: 9.02/3.25 Generated 10 rules for P and 0 rules for R.P rules: 9.02/3.25 f1273_0_length_NULL(EOS(STATIC_1273), java.lang.Object(o193sub), java.lang.Object(o193sub)) -> f1274_0_length_NULL(EOS(STATIC_1274), java.lang.Object(o193sub), java.lang.Object(o193sub)) :|: TRUE 9.02/3.25 f1274_0_length_NULL(EOS(STATIC_1274), java.lang.Object(o193sub), java.lang.Object(o193sub)) -> f1276_0_length_Load(EOS(STATIC_1276), java.lang.Object(o193sub)) :|: TRUE 9.02/3.25 f1276_0_length_Load(EOS(STATIC_1276), java.lang.Object(o193sub)) -> f1278_0_length_FieldAccess(EOS(STATIC_1278), java.lang.Object(o193sub)) :|: TRUE 9.02/3.25 f1278_0_length_FieldAccess(EOS(STATIC_1278), java.lang.Object(CyclicAnalysis.CyclicAnalysis(EOC, o195))) -> f1281_0_length_FieldAccess(EOS(STATIC_1281), java.lang.Object(CyclicAnalysis.CyclicAnalysis(EOC, o195))) :|: TRUE 9.02/3.25 f1281_0_length_FieldAccess(EOS(STATIC_1281), java.lang.Object(CyclicAnalysis.CyclicAnalysis(EOC, o195))) -> f1283_0_length_Store(EOS(STATIC_1283), o195) :|: TRUE 9.02/3.25 f1283_0_length_Store(EOS(STATIC_1283), o195) -> f1285_0_length_Inc(EOS(STATIC_1285), o195) :|: TRUE 9.02/3.25 f1285_0_length_Inc(EOS(STATIC_1285), o195) -> f1288_0_length_JMP(EOS(STATIC_1288), o195) :|: TRUE 9.02/3.25 f1288_0_length_JMP(EOS(STATIC_1288), o195) -> f1293_0_length_Load(EOS(STATIC_1293), o195) :|: TRUE 9.02/3.25 f1293_0_length_Load(EOS(STATIC_1293), o195) -> f1271_0_length_Load(EOS(STATIC_1271), o195) :|: TRUE 9.02/3.25 f1271_0_length_Load(EOS(STATIC_1271), o191) -> f1273_0_length_NULL(EOS(STATIC_1273), o191, o191) :|: TRUE 9.02/3.25 R rules: 9.02/3.25 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 9.02/3.25 f1273_0_length_NULL(EOS(STATIC_1273), java.lang.Object(CyclicAnalysis.CyclicAnalysis(EOC, o195:0)), java.lang.Object(CyclicAnalysis.CyclicAnalysis(EOC, o195:0))) -> f1273_0_length_NULL(EOS(STATIC_1273), o195:0, o195:0) :|: TRUE 9.02/3.25 R rules: 9.02/3.25 Filtered ground terms: 9.02/3.25 f1273_0_length_NULL(x1, x2, x3) -> f1273_0_length_NULL(x2, x3) 9.02/3.25 EOS(x1) -> EOS 9.02/3.25 CyclicAnalysis.CyclicAnalysis(x1, x2) -> CyclicAnalysis.CyclicAnalysis(x2) 9.02/3.25 Filtered duplicate args: 9.02/3.25 f1273_0_length_NULL(x1, x2) -> f1273_0_length_NULL(x2) 9.02/3.25 Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: 9.02/3.25 F1273_0_LENGTH_NULL(java.lang.Object(CyclicAnalysis.CyclicAnalysis(o195:0:0))) -> F1273_0_LENGTH_NULL(o195:0:0) :|: TRUE 9.02/3.25 R rules: 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (9) 9.02/3.25 Obligation: 9.02/3.25 Q DP problem: 9.02/3.25 The TRS P consists of the following rules: 9.02/3.25 9.02/3.25 F1273_0_LENGTH_NULL(java.lang.Object(CyclicAnalysis.CyclicAnalysis(o195:0:0))) -> F1273_0_LENGTH_NULL(o195:0:0) 9.02/3.25 9.02/3.25 R is empty. 9.02/3.25 Q is empty. 9.02/3.25 We have to consider all minimal (P,Q,R)-chains. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (10) QDPSizeChangeProof (EQUIVALENT) 9.02/3.25 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. 9.02/3.25 9.02/3.25 From the DPs we obtained the following set of size-change graphs: 9.02/3.25 *F1273_0_LENGTH_NULL(java.lang.Object(CyclicAnalysis.CyclicAnalysis(o195:0:0))) -> F1273_0_LENGTH_NULL(o195:0:0) 9.02/3.25 The graph contains the following edges 1 > 1 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (11) 9.02/3.25 YES 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (12) 9.02/3.25 Obligation: 9.02/3.25 SCC of termination graph based on JBC Program. 9.02/3.25 SCC contains nodes from the following methods: CyclicAnalysis.CyclicAnalysis.main([Ljava/lang/String;)V 9.02/3.25 SCC calls the following helper methods: 9.02/3.25 Performed SCC analyses: 9.02/3.25 *Used field analysis yielded the following read fields: 9.02/3.25 9.02/3.25 *Marker field analysis yielded the following relations that could be markers: 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (13) SCCToIRSProof (SOUND) 9.02/3.25 Transformed FIGraph SCCs to intTRSs. Log: 9.02/3.25 Generated rules. Obtained 23 IRulesP rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113, i113, o151[CyclicAnalysis.field]o149) -> f1109_0_appendNewList_LE(EOS(STATIC_1109), i113, i113, 1, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1109_0_appendNewList_LE(EOS(STATIC_1109), i124, i124, matching1, o151[CyclicAnalysis.field]o149) -> f1114_0_appendNewList_LE(EOS(STATIC_1114), i124, i124, 1, o151[CyclicAnalysis.field]o149) :|: TRUE && matching1 = 1 9.02/3.25 f1114_0_appendNewList_LE(EOS(STATIC_1114), i124, i124, matching1, o151[CyclicAnalysis.field]o149) -> f1132_0_appendNewList_Inc(EOS(STATIC_1132), i124, o151[CyclicAnalysis.field]o149) :|: i124 > 1 && matching1 = 1 9.02/3.25 f1132_0_appendNewList_Inc(EOS(STATIC_1132), i124, o151[CyclicAnalysis.field]o149) -> f1137_0_appendNewList_Load(EOS(STATIC_1137), i124 + -1, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1137_0_appendNewList_Load(EOS(STATIC_1137), i125, o151[CyclicAnalysis.field]o149) -> f1142_0_appendNewList_New(EOS(STATIC_1142), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1142_0_appendNewList_New(EOS(STATIC_1142), i125, o151[CyclicAnalysis.field]o149) -> f1150_0_appendNewList_Duplicate(EOS(STATIC_1150), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1150_0_appendNewList_Duplicate(EOS(STATIC_1150), i125, o151[CyclicAnalysis.field]o149) -> f1159_0_appendNewList_InvokeMethod(EOS(STATIC_1159), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1159_0_appendNewList_InvokeMethod(EOS(STATIC_1159), i125, o151[CyclicAnalysis.field]o149) -> f1162_0__init__Load(EOS(STATIC_1162), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1162_0__init__Load(EOS(STATIC_1162), i125, o151[CyclicAnalysis.field]o149) -> f1172_0__init__InvokeMethod(EOS(STATIC_1172), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1172_0__init__InvokeMethod(EOS(STATIC_1172), i125, o151[CyclicAnalysis.field]o149) -> f1179_0__init__Return(EOS(STATIC_1179), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1179_0__init__Return(EOS(STATIC_1179), i125, o151[CyclicAnalysis.field]o149) -> f1183_0_appendNewList_Duplicate(EOS(STATIC_1183), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1183_0_appendNewList_Duplicate(EOS(STATIC_1183), i125, o151[CyclicAnalysis.field]o149) -> f1192_0_appendNewList_FieldAccess(EOS(STATIC_1192), i125, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1192_0_appendNewList_FieldAccess(EOS(STATIC_1192), i125, o151[CyclicAnalysis.field]o149) -> f1199_0_appendNewList_FieldAccess(EOS(STATIC_1199), i125, o151[CyclicAnalysis.field]o149) :|: o151[CyclicAnalysis.field]o149 > 0 9.02/3.25 f1192_0_appendNewList_FieldAccess(EOS(STATIC_1192), i125, o168[CyclicAnalysis.field]o168) -> f1201_0_appendNewList_FieldAccess(EOS(STATIC_1201), i125) :|: TRUE 9.02/3.25 f1199_0_appendNewList_FieldAccess(EOS(STATIC_1199), i125, o151[CyclicAnalysis.field]o149) -> f1204_0_appendNewList_Store(EOS(STATIC_1204), i125, o151[CyclicAnalysis.field]o162) :|: o151[CyclicAnalysis.field]o162 > o151[CyclicAnalysis.field]o149 && o151[CyclicAnalysis.field]o149 >= 0 9.02/3.25 f1204_0_appendNewList_Store(EOS(STATIC_1204), i125, o151[CyclicAnalysis.field]o162) -> f1213_0_appendNewList_JMP(EOS(STATIC_1213), i125, o151[CyclicAnalysis.field]o162) :|: TRUE 9.02/3.25 f1213_0_appendNewList_JMP(EOS(STATIC_1213), i125, o151[CyclicAnalysis.field]o162) -> f1226_0_appendNewList_Load(EOS(STATIC_1226), i125, o151[CyclicAnalysis.field]o162) :|: TRUE 9.02/3.25 f1226_0_appendNewList_Load(EOS(STATIC_1226), i125, o151[CyclicAnalysis.field]o162) -> f1027_0_appendNewList_Load(EOS(STATIC_1027), i125, o151[CyclicAnalysis.field]o162) :|: TRUE 9.02/3.25 f1027_0_appendNewList_Load(EOS(STATIC_1027), i113, o151[CyclicAnalysis.field]o149) -> f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113, i113, o151[CyclicAnalysis.field]o149) :|: TRUE 9.02/3.25 f1201_0_appendNewList_FieldAccess(EOS(STATIC_1201), i125) -> f1208_0_appendNewList_Store(EOS(STATIC_1208), i125) :|: TRUE 9.02/3.25 f1208_0_appendNewList_Store(EOS(STATIC_1208), i125) -> f1216_0_appendNewList_JMP(EOS(STATIC_1216), i125) :|: TRUE 9.02/3.25 f1216_0_appendNewList_JMP(EOS(STATIC_1216), i125) -> f1228_0_appendNewList_Load(EOS(STATIC_1228), i125) :|: TRUE 9.02/3.25 f1228_0_appendNewList_Load(EOS(STATIC_1228), i125) -> f1027_0_appendNewList_Load(EOS(STATIC_1027), i125, o168[CyclicAnalysis.field]o162) :|: o168[CyclicAnalysis.field]o162 = 1 9.02/3.25 Combined rules. Obtained 2 IRulesP rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113:0, i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113:0 - 1, i113:0 - 1, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o149:0 > 0 && o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113:0, i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(EOS(STATIC_1029), i113:0 - 1, i113:0 - 1, 1) :|: i113:0 > 1 9.02/3.25 Filtered constant ground arguments: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x1, x2, x3, x4) -> f1029_0_appendNewList_ConstantStackPush(x2, x3, x4) 9.02/3.25 EOS(x1) -> EOS 9.02/3.25 Filtered duplicate arguments: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x1, x2, x3) -> f1029_0_appendNewList_ConstantStackPush(x2, x3) 9.02/3.25 Finished conversion. Obtained 2 rules.P rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(i113:0 - 1, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 && o151[CyclicAnalysis.field]o149:0 > 0 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(i113:0 - 1, 1) :|: i113:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (14) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(i113:0 - 1, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 && o151[CyclicAnalysis.field]o149:0 > 0 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x, x1) -> f1029_0_appendNewList_ConstantStackPush(x - 1, 1) :|: x > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (15) IRSFormatTransformerProof (EQUIVALENT) 9.02/3.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (16) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(arith, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 && o151[CyclicAnalysis.field]o149:0 > 0 && arith = i113:0 - 1 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x2, x3) -> f1029_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (17) IRSwTTerminationDigraphProof (EQUIVALENT) 9.02/3.25 Constructed termination digraph! 9.02/3.25 Nodes: 9.02/3.25 (1) f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(arith, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 && o151[CyclicAnalysis.field]o149:0 > 0 && arith = i113:0 - 1 9.02/3.25 (2) f1029_0_appendNewList_ConstantStackPush(x2, x3) -> f1029_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 Arcs: 9.02/3.25 (1) -> (1), (2) 9.02/3.25 (2) -> (1), (2) 9.02/3.25 9.02/3.25 This digraph is fully evaluated! 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (18) 9.02/3.25 Obligation: 9.02/3.25 9.02/3.25 Termination digraph: 9.02/3.25 Nodes: 9.02/3.25 (1) f1029_0_appendNewList_ConstantStackPush(i113:0, o151[CyclicAnalysis.field]o149:0) -> f1029_0_appendNewList_ConstantStackPush(arith, o151[CyclicAnalysis.field]o162:0) :|: o151[CyclicAnalysis.field]o162:0 > o151[CyclicAnalysis.field]o149:0 && i113:0 > 1 && o151[CyclicAnalysis.field]o149:0 > 0 && arith = i113:0 - 1 9.02/3.25 (2) f1029_0_appendNewList_ConstantStackPush(x2, x3) -> f1029_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 Arcs: 9.02/3.25 (1) -> (1), (2) 9.02/3.25 (2) -> (1), (2) 9.02/3.25 9.02/3.25 This digraph is fully evaluated! 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (19) IntTRSCompressionProof (EQUIVALENT) 9.02/3.25 Compressed rules. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (20) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0:0, o151[CyclicAnalysis.field]o149:0:0) -> f1029_0_appendNewList_ConstantStackPush(i113:0:0 - 1, o151[CyclicAnalysis.field]o162:0:0) :|: o151[CyclicAnalysis.field]o162:0:0 > o151[CyclicAnalysis.field]o149:0:0 && i113:0:0 > 1 && o151[CyclicAnalysis.field]o149:0:0 > 0 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f1029_0_appendNewList_ConstantStackPush(x2:0 - 1, 1) :|: x2:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (21) TempFilterProof (SOUND) 9.02/3.25 Used the following sort dictionary for filtering: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(INTEGER, VARIABLE) 9.02/3.25 Replaced non-predefined constructor symbols by 0. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (22) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0:0, o151[CyclicAnalysis.field]o149:0:0) -> f1029_0_appendNewList_ConstantStackPush(c, o151[CyclicAnalysis.field]o162:0:0) :|: c = i113:0:0 - 1 && (o151[CyclicAnalysis.field]o162:0:0 > o151[CyclicAnalysis.field]o149:0:0 && i113:0:0 > 1 && o151[CyclicAnalysis.field]o149:0:0 > 0) 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f1029_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (23) RankingReductionPairProof (EQUIVALENT) 9.02/3.25 Interpretation: 9.02/3.25 [ f1029_0_appendNewList_ConstantStackPush ] = f1029_0_appendNewList_ConstantStackPush_1 9.02/3.25 9.02/3.25 The following rules are decreasing: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0:0, o151[CyclicAnalysis.field]o149:0:0) -> f1029_0_appendNewList_ConstantStackPush(c, o151[CyclicAnalysis.field]o162:0:0) :|: c = i113:0:0 - 1 && (o151[CyclicAnalysis.field]o162:0:0 > o151[CyclicAnalysis.field]o149:0:0 && i113:0:0 > 1 && o151[CyclicAnalysis.field]o149:0:0 > 0) 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f1029_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 The following rules are bounded: 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(i113:0:0, o151[CyclicAnalysis.field]o149:0:0) -> f1029_0_appendNewList_ConstantStackPush(c, o151[CyclicAnalysis.field]o162:0:0) :|: c = i113:0:0 - 1 && (o151[CyclicAnalysis.field]o162:0:0 > o151[CyclicAnalysis.field]o149:0:0 && i113:0:0 > 1 && o151[CyclicAnalysis.field]o149:0:0 > 0) 9.02/3.25 f1029_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f1029_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (24) 9.02/3.25 YES 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (25) 9.02/3.25 Obligation: 9.02/3.25 SCC of termination graph based on JBC Program. 9.02/3.25 SCC contains nodes from the following methods: CyclicAnalysis.CyclicAnalysis.main([Ljava/lang/String;)V 9.02/3.25 SCC calls the following helper methods: 9.02/3.25 Performed SCC analyses: 9.02/3.25 *Used field analysis yielded the following read fields: 9.02/3.25 9.02/3.25 *Marker field analysis yielded the following relations that could be markers: 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (26) SCCToIRSProof (SOUND) 9.02/3.25 Transformed FIGraph SCCs to intTRSs. Log: 9.02/3.25 Generated rules. Obtained 23 IRulesP rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33, i33, o47[CyclicAnalysis.field]o45) -> f403_0_appendNewList_LE(EOS(STATIC_403), i33, i33, 1, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f403_0_appendNewList_LE(EOS(STATIC_403), i43, i43, matching1, o47[CyclicAnalysis.field]o45) -> f408_0_appendNewList_LE(EOS(STATIC_408), i43, i43, 1, o47[CyclicAnalysis.field]o45) :|: TRUE && matching1 = 1 9.02/3.25 f408_0_appendNewList_LE(EOS(STATIC_408), i43, i43, matching1, o47[CyclicAnalysis.field]o45) -> f415_0_appendNewList_Inc(EOS(STATIC_415), i43, o47[CyclicAnalysis.field]o45) :|: i43 > 1 && matching1 = 1 9.02/3.25 f415_0_appendNewList_Inc(EOS(STATIC_415), i43, o47[CyclicAnalysis.field]o45) -> f421_0_appendNewList_Load(EOS(STATIC_421), i43 + -1, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f421_0_appendNewList_Load(EOS(STATIC_421), i44, o47[CyclicAnalysis.field]o45) -> f425_0_appendNewList_New(EOS(STATIC_425), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f425_0_appendNewList_New(EOS(STATIC_425), i44, o47[CyclicAnalysis.field]o45) -> f438_0_appendNewList_Duplicate(EOS(STATIC_438), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f438_0_appendNewList_Duplicate(EOS(STATIC_438), i44, o47[CyclicAnalysis.field]o45) -> f443_0_appendNewList_InvokeMethod(EOS(STATIC_443), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f443_0_appendNewList_InvokeMethod(EOS(STATIC_443), i44, o47[CyclicAnalysis.field]o45) -> f448_0__init__Load(EOS(STATIC_448), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f448_0__init__Load(EOS(STATIC_448), i44, o47[CyclicAnalysis.field]o45) -> f502_0__init__InvokeMethod(EOS(STATIC_502), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f502_0__init__InvokeMethod(EOS(STATIC_502), i44, o47[CyclicAnalysis.field]o45) -> f523_0__init__Return(EOS(STATIC_523), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f523_0__init__Return(EOS(STATIC_523), i44, o47[CyclicAnalysis.field]o45) -> f530_0_appendNewList_Duplicate(EOS(STATIC_530), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f530_0_appendNewList_Duplicate(EOS(STATIC_530), i44, o47[CyclicAnalysis.field]o45) -> f537_0_appendNewList_FieldAccess(EOS(STATIC_537), i44, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f537_0_appendNewList_FieldAccess(EOS(STATIC_537), i44, o47[CyclicAnalysis.field]o45) -> f548_0_appendNewList_FieldAccess(EOS(STATIC_548), i44, o47[CyclicAnalysis.field]o45) :|: o47[CyclicAnalysis.field]o45 > 0 9.02/3.25 f537_0_appendNewList_FieldAccess(EOS(STATIC_537), i44, o83[CyclicAnalysis.field]o83) -> f549_0_appendNewList_FieldAccess(EOS(STATIC_549), i44) :|: TRUE 9.02/3.25 f548_0_appendNewList_FieldAccess(EOS(STATIC_548), i44, o47[CyclicAnalysis.field]o45) -> f558_0_appendNewList_Store(EOS(STATIC_558), i44, o47[CyclicAnalysis.field]o62) :|: o47[CyclicAnalysis.field]o62 > o47[CyclicAnalysis.field]o45 && o47[CyclicAnalysis.field]o45 >= 0 9.02/3.25 f558_0_appendNewList_Store(EOS(STATIC_558), i44, o47[CyclicAnalysis.field]o62) -> f584_0_appendNewList_JMP(EOS(STATIC_584), i44, o47[CyclicAnalysis.field]o62) :|: TRUE 9.02/3.25 f584_0_appendNewList_JMP(EOS(STATIC_584), i44, o47[CyclicAnalysis.field]o62) -> f622_0_appendNewList_Load(EOS(STATIC_622), i44, o47[CyclicAnalysis.field]o62) :|: TRUE 9.02/3.25 f622_0_appendNewList_Load(EOS(STATIC_622), i44, o47[CyclicAnalysis.field]o62) -> f396_0_appendNewList_Load(EOS(STATIC_396), i44, o47[CyclicAnalysis.field]o62) :|: TRUE 9.02/3.25 f396_0_appendNewList_Load(EOS(STATIC_396), i33, o47[CyclicAnalysis.field]o45) -> f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33, i33, o47[CyclicAnalysis.field]o45) :|: TRUE 9.02/3.25 f549_0_appendNewList_FieldAccess(EOS(STATIC_549), i44) -> f562_0_appendNewList_Store(EOS(STATIC_562), i44) :|: TRUE 9.02/3.25 f562_0_appendNewList_Store(EOS(STATIC_562), i44) -> f588_0_appendNewList_JMP(EOS(STATIC_588), i44) :|: TRUE 9.02/3.25 f588_0_appendNewList_JMP(EOS(STATIC_588), i44) -> f641_0_appendNewList_Load(EOS(STATIC_641), i44) :|: TRUE 9.02/3.25 f641_0_appendNewList_Load(EOS(STATIC_641), i44) -> f396_0_appendNewList_Load(EOS(STATIC_396), i44, o83[CyclicAnalysis.field]o62) :|: o83[CyclicAnalysis.field]o62 = 1 9.02/3.25 Combined rules. Obtained 2 IRulesP rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33:0, i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33:0 - 1, i33:0 - 1, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o45:0 > 0 && o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 9.02/3.25 f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33:0, i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(EOS(STATIC_402), i33:0 - 1, i33:0 - 1, 1) :|: i33:0 > 1 9.02/3.25 Filtered constant ground arguments: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x1, x2, x3, x4) -> f402_0_appendNewList_ConstantStackPush(x2, x3, x4) 9.02/3.25 EOS(x1) -> EOS 9.02/3.25 Filtered duplicate arguments: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x1, x2, x3) -> f402_0_appendNewList_ConstantStackPush(x2, x3) 9.02/3.25 Finished conversion. Obtained 2 rules.P rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(i33:0 - 1, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 && o47[CyclicAnalysis.field]o45:0 > 0 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(i33:0 - 1, 1) :|: i33:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (27) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(i33:0 - 1, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 && o47[CyclicAnalysis.field]o45:0 > 0 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x, x1) -> f402_0_appendNewList_ConstantStackPush(x - 1, 1) :|: x > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (28) IRSFormatTransformerProof (EQUIVALENT) 9.02/3.25 Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (29) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(arith, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 && o47[CyclicAnalysis.field]o45:0 > 0 && arith = i33:0 - 1 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x2, x3) -> f402_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (30) IRSwTTerminationDigraphProof (EQUIVALENT) 9.02/3.25 Constructed termination digraph! 9.02/3.25 Nodes: 9.02/3.25 (1) f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(arith, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 && o47[CyclicAnalysis.field]o45:0 > 0 && arith = i33:0 - 1 9.02/3.25 (2) f402_0_appendNewList_ConstantStackPush(x2, x3) -> f402_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 Arcs: 9.02/3.25 (1) -> (1), (2) 9.02/3.25 (2) -> (1), (2) 9.02/3.25 9.02/3.25 This digraph is fully evaluated! 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (31) 9.02/3.25 Obligation: 9.02/3.25 9.02/3.25 Termination digraph: 9.02/3.25 Nodes: 9.02/3.25 (1) f402_0_appendNewList_ConstantStackPush(i33:0, o47[CyclicAnalysis.field]o45:0) -> f402_0_appendNewList_ConstantStackPush(arith, o47[CyclicAnalysis.field]o62:0) :|: o47[CyclicAnalysis.field]o62:0 > o47[CyclicAnalysis.field]o45:0 && i33:0 > 1 && o47[CyclicAnalysis.field]o45:0 > 0 && arith = i33:0 - 1 9.02/3.25 (2) f402_0_appendNewList_ConstantStackPush(x2, x3) -> f402_0_appendNewList_ConstantStackPush(x4, 1) :|: x2 > 1 && x4 = x2 - 1 9.02/3.25 9.02/3.25 Arcs: 9.02/3.25 (1) -> (1), (2) 9.02/3.25 (2) -> (1), (2) 9.02/3.25 9.02/3.25 This digraph is fully evaluated! 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (32) IntTRSCompressionProof (EQUIVALENT) 9.02/3.25 Compressed rules. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (33) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0:0, o47[CyclicAnalysis.field]o45:0:0) -> f402_0_appendNewList_ConstantStackPush(i33:0:0 - 1, o47[CyclicAnalysis.field]o62:0:0) :|: o47[CyclicAnalysis.field]o62:0:0 > o47[CyclicAnalysis.field]o45:0:0 && i33:0:0 > 1 && o47[CyclicAnalysis.field]o45:0:0 > 0 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f402_0_appendNewList_ConstantStackPush(x2:0 - 1, 1) :|: x2:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (34) TempFilterProof (SOUND) 9.02/3.25 Used the following sort dictionary for filtering: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(INTEGER, VARIABLE) 9.02/3.25 Replaced non-predefined constructor symbols by 0. 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (35) 9.02/3.25 Obligation: 9.02/3.25 Rules: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0:0, o47[CyclicAnalysis.field]o45:0:0) -> f402_0_appendNewList_ConstantStackPush(c, o47[CyclicAnalysis.field]o62:0:0) :|: c = i33:0:0 - 1 && (o47[CyclicAnalysis.field]o62:0:0 > o47[CyclicAnalysis.field]o45:0:0 && i33:0:0 > 1 && o47[CyclicAnalysis.field]o45:0:0 > 0) 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f402_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (36) RankingReductionPairProof (EQUIVALENT) 9.02/3.25 Interpretation: 9.02/3.25 [ f402_0_appendNewList_ConstantStackPush ] = f402_0_appendNewList_ConstantStackPush_1 9.02/3.25 9.02/3.25 The following rules are decreasing: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0:0, o47[CyclicAnalysis.field]o45:0:0) -> f402_0_appendNewList_ConstantStackPush(c, o47[CyclicAnalysis.field]o62:0:0) :|: c = i33:0:0 - 1 && (o47[CyclicAnalysis.field]o62:0:0 > o47[CyclicAnalysis.field]o45:0:0 && i33:0:0 > 1 && o47[CyclicAnalysis.field]o45:0:0 > 0) 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f402_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 The following rules are bounded: 9.02/3.25 f402_0_appendNewList_ConstantStackPush(i33:0:0, o47[CyclicAnalysis.field]o45:0:0) -> f402_0_appendNewList_ConstantStackPush(c, o47[CyclicAnalysis.field]o62:0:0) :|: c = i33:0:0 - 1 && (o47[CyclicAnalysis.field]o62:0:0 > o47[CyclicAnalysis.field]o45:0:0 && i33:0:0 > 1 && o47[CyclicAnalysis.field]o45:0:0 > 0) 9.02/3.25 f402_0_appendNewList_ConstantStackPush(x2:0, x3:0) -> f402_0_appendNewList_ConstantStackPush(c1, c2) :|: c2 = 1 && c1 = x2:0 - 1 && x2:0 > 1 9.02/3.25 9.02/3.25 9.02/3.25 ---------------------------------------- 9.02/3.25 9.02/3.25 (37) 9.02/3.25 YES 9.04/3.28 EOF