/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, 709 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 96 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToIRSProof [SOUND, 99 ms] (14) IRSwT (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (18) IRSwT (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 19 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 8 ms] (24) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: package CyclicAnalysisRec; public class CyclicAnalysisRec { CyclicAnalysisRec field; public static void main(String[] args) { Random.args = args; CyclicAnalysisRec t = new CyclicAnalysisRec(); t.field = new CyclicAnalysisRec(); t.field.appendNewCyclicList(Random.random()); t.appendNewList(Random.random()); t.length(); } public int length() { if (this.field == null) return 1; else return 1 + this.field.length(); } public void appendNewCyclicList(int i) { CyclicAnalysisRec last = this.appendNewList(i); last.field = this; } /** * @param i number of elements to append * @return the last list element appended */ private CyclicAnalysisRec appendNewList(int i) { this.field = new CyclicAnalysisRec(); if (i <= 1) { return this.field; } else { return this.field.appendNewList(i-1); } } } package CyclicAnalysisRec; public class Random { static String[] args; static int index = 0; public static int random() { final String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: package CyclicAnalysisRec; public class CyclicAnalysisRec { CyclicAnalysisRec field; public static void main(String[] args) { Random.args = args; CyclicAnalysisRec t = new CyclicAnalysisRec(); t.field = new CyclicAnalysisRec(); t.field.appendNewCyclicList(Random.random()); t.appendNewList(Random.random()); t.length(); } public int length() { if (this.field == null) return 1; else return 1 + this.field.length(); } public void appendNewCyclicList(int i) { CyclicAnalysisRec last = this.appendNewList(i); last.field = this; } /** * @param i number of elements to append * @return the last list element appended */ private CyclicAnalysisRec appendNewList(int i) { this.field = new CyclicAnalysisRec(); if (i <= 1) { return this.field; } else { return this.field.appendNewList(i-1); } } } package CyclicAnalysisRec; public class Random { static String[] args; static int index = 0; public static int random() { final String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: CyclicAnalysisRec.CyclicAnalysisRec.main([Ljava/lang/String;)V: Graph of 326 nodes with 0 SCCs. CyclicAnalysisRec.CyclicAnalysisRec.appendNewList(I)LCyclicAnalysisRec/CyclicAnalysisRec;: Graph of 33 nodes with 0 SCCs. CyclicAnalysisRec.CyclicAnalysisRec.length()I: Graph of 22 nodes with 0 SCCs. ---------------------------------------- (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: CyclicAnalysisRec.CyclicAnalysisRec.length()I SCC calls the following helper methods: CyclicAnalysisRec.CyclicAnalysisRec.length()I Performed SCC analyses: *Used field analysis yielded the following read fields: *CyclicAnalysisRec.CyclicAnalysisRec: [field] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 11 rules for P and 21 rules for R.P rules: f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) -> f2738_0_length_FieldAccess(EOS(STATIC_2738), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) :|: TRUE f2738_0_length_FieldAccess(EOS(STATIC_2738), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) -> f2739_0_length_NONNULL(EOS(STATIC_2739), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), o953) :|: TRUE f2739_0_length_NONNULL(EOS(STATIC_2739), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) -> f2740_0_length_NONNULL(EOS(STATIC_2740), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) :|: TRUE f2740_0_length_NONNULL(EOS(STATIC_2740), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) -> f2742_0_length_ConstantStackPush(EOS(STATIC_2742), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2742_0_length_ConstantStackPush(EOS(STATIC_2742), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2744_0_length_Load(EOS(STATIC_2744), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2744_0_length_Load(EOS(STATIC_2744), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2747_0_length_FieldAccess(EOS(STATIC_2747), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2747_0_length_FieldAccess(EOS(STATIC_2747), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2751_0_length_InvokeMethod(EOS(STATIC_2751), java.lang.Object(o954sub)) :|: TRUE f2751_0_length_InvokeMethod(EOS(STATIC_2751), java.lang.Object(o954sub)) -> f2768_1_length_InvokeMethod(f2768_0_length_Load(EOS(STATIC_2768), java.lang.Object(o954sub))) :|: TRUE f2768_0_length_Load(EOS(STATIC_2768), java.lang.Object(o954sub)) -> f2783_0_length_Load(EOS(STATIC_2783), java.lang.Object(o954sub)) :|: TRUE f2783_0_length_Load(EOS(STATIC_2783), java.lang.Object(o954sub)) -> f2736_0_length_Load(EOS(STATIC_2736), java.lang.Object(o954sub)) :|: TRUE f2736_0_length_Load(EOS(STATIC_2736), java.lang.Object(o951sub)) -> f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(o951sub), java.lang.Object(o951sub)) :|: TRUE R rules: f2736_0_length_Load(EOS(STATIC_2736), java.lang.Object(o951sub)) -> f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(o951sub), java.lang.Object(o951sub)) :|: TRUE f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) -> f2738_0_length_FieldAccess(EOS(STATIC_2738), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) :|: TRUE f2738_0_length_FieldAccess(EOS(STATIC_2738), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953))) -> f2739_0_length_NONNULL(EOS(STATIC_2739), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, o953)), o953) :|: TRUE f2739_0_length_NONNULL(EOS(STATIC_2739), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) -> f2740_0_length_NONNULL(EOS(STATIC_2740), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) :|: TRUE f2739_0_length_NONNULL(EOS(STATIC_2739), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, NULL)), NULL) -> f2741_0_length_NONNULL(EOS(STATIC_2741), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, NULL)), NULL) :|: TRUE f2740_0_length_NONNULL(EOS(STATIC_2740), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub))), java.lang.Object(o954sub)) -> f2742_0_length_ConstantStackPush(EOS(STATIC_2742), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2741_0_length_NONNULL(EOS(STATIC_2741), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, NULL)), NULL) -> f2743_0_length_ConstantStackPush(EOS(STATIC_2743)) :|: TRUE f2742_0_length_ConstantStackPush(EOS(STATIC_2742), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2744_0_length_Load(EOS(STATIC_2744), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2743_0_length_ConstantStackPush(EOS(STATIC_2743)) -> f2746_0_length_Return(EOS(STATIC_2746)) :|: TRUE f2744_0_length_Load(EOS(STATIC_2744), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2747_0_length_FieldAccess(EOS(STATIC_2747), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) :|: TRUE f2747_0_length_FieldAccess(EOS(STATIC_2747), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub)))) -> f2751_0_length_InvokeMethod(EOS(STATIC_2751), java.lang.Object(o954sub)) :|: TRUE f2751_0_length_InvokeMethod(EOS(STATIC_2751), java.lang.Object(o954sub)) -> f2768_1_length_InvokeMethod(f2768_0_length_Load(EOS(STATIC_2768), java.lang.Object(o954sub))) :|: TRUE f2768_0_length_Load(EOS(STATIC_2768), java.lang.Object(o954sub)) -> f2783_0_length_Load(EOS(STATIC_2783), java.lang.Object(o954sub)) :|: TRUE f3241_0_length_Return(EOS(STATIC_3241)) -> f3244_0_length_IntArithmetic(EOS(STATIC_3244)) :|: TRUE f3244_0_length_IntArithmetic(EOS(STATIC_3244)) -> f3595_0_length_IntArithmetic(EOS(STATIC_3595)) :|: TRUE f3574_0_length_Return(EOS(STATIC_3574)) -> f3595_0_length_IntArithmetic(EOS(STATIC_3595)) :|: TRUE f3595_0_length_IntArithmetic(EOS(STATIC_3595)) -> f3601_0_length_Return(EOS(STATIC_3601)) :|: TRUE f3629_0_length_Return(EOS(STATIC_3629)) -> f3574_0_length_Return(EOS(STATIC_3574)) :|: TRUE f2783_0_length_Load(EOS(STATIC_2783), java.lang.Object(o954sub)) -> f2736_0_length_Load(EOS(STATIC_2736), java.lang.Object(o954sub)) :|: TRUE f2768_1_length_InvokeMethod(f2746_0_length_Return(EOS(STATIC_2746))) -> f3241_0_length_Return(EOS(STATIC_3241)) :|: TRUE f2768_1_length_InvokeMethod(f3601_0_length_Return(EOS(STATIC_3601))) -> f3629_0_length_Return(EOS(STATIC_3629)) :|: TRUE Combined rules. Obtained 1 conditional rules for P and 4 conditional rules for R.P rules: f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub:0))), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub:0)))) -> f2768_1_length_InvokeMethod(f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(o954sub:0), java.lang.Object(o954sub:0))) :|: TRUE R rules: f2768_1_length_InvokeMethod(f3601_0_length_Return(EOS(STATIC_3601))) -> f3601_0_length_Return(EOS(STATIC_3601)) :|: TRUE f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub:0))), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, java.lang.Object(o954sub:0)))) -> f2768_1_length_InvokeMethod(f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(o954sub:0), java.lang.Object(o954sub:0))) :|: TRUE f2768_1_length_InvokeMethod(f2746_0_length_Return(EOS(STATIC_2746))) -> f3601_0_length_Return(EOS(STATIC_3601)) :|: TRUE f2737_0_length_FieldAccess(EOS(STATIC_2737), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, NULL)), java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(EOC, NULL))) -> f2746_0_length_Return(EOS(STATIC_2746)) :|: TRUE Filtered ground terms: f2737_0_length_FieldAccess(x1, x2, x3) -> f2737_0_length_FieldAccess(x2, x3) CyclicAnalysisRec.CyclicAnalysisRec(x1, x2) -> CyclicAnalysisRec.CyclicAnalysisRec(x2) f3601_0_length_Return(x1) -> f3601_0_length_Return f2746_0_length_Return(x1) -> f2746_0_length_Return Filtered duplicate args: f2737_0_length_FieldAccess(x1, x2) -> f2737_0_length_FieldAccess(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F2737_0_LENGTH_FIELDACCESS(java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(java.lang.Object(o954sub:0:0)))) -> F2737_0_LENGTH_FIELDACCESS(java.lang.Object(o954sub:0:0)) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F2737_0_LENGTH_FIELDACCESS(java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(java.lang.Object(o954sub:0:0)))) -> F2737_0_LENGTH_FIELDACCESS(java.lang.Object(o954sub:0:0)) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (10) QDPSizeChangeProof (EQUIVALENT) By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem. From the DPs we obtained the following set of size-change graphs: *F2737_0_LENGTH_FIELDACCESS(java.lang.Object(CyclicAnalysisRec.CyclicAnalysisRec(java.lang.Object(o954sub:0:0)))) -> F2737_0_LENGTH_FIELDACCESS(java.lang.Object(o954sub:0:0)) The graph contains the following edges 1 > 1 ---------------------------------------- (11) YES ---------------------------------------- (12) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: CyclicAnalysisRec.CyclicAnalysisRec.appendNewList(I)LCyclicAnalysisRec/CyclicAnalysisRec; SCC calls the following helper methods: CyclicAnalysisRec.CyclicAnalysisRec.appendNewList(I)LCyclicAnalysisRec/CyclicAnalysisRec; Performed SCC analyses: *Used field analysis yielded the following read fields: *CyclicAnalysisRec.CyclicAnalysisRec: [field] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (13) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 21 IRulesP rules: f1488_0_appendNewList_New(EOS(STATIC_1488), i220, i220) -> f1514_0_appendNewList_Duplicate(EOS(STATIC_1514), i220, i220) :|: TRUE f1514_0_appendNewList_Duplicate(EOS(STATIC_1514), i220, i220) -> f1528_0_appendNewList_InvokeMethod(EOS(STATIC_1528), i220, i220) :|: TRUE f1528_0_appendNewList_InvokeMethod(EOS(STATIC_1528), i220, i220) -> f1583_0__init__Load(EOS(STATIC_1583), i220, i220) :|: TRUE f1583_0__init__Load(EOS(STATIC_1583), i220, i220) -> f1591_0__init__InvokeMethod(EOS(STATIC_1591), i220, i220) :|: TRUE f1591_0__init__InvokeMethod(EOS(STATIC_1591), i220, i220) -> f1634_0__init__Return(EOS(STATIC_1634), i220, i220) :|: TRUE f1634_0__init__Return(EOS(STATIC_1634), i220, i220) -> f1639_0_appendNewList_FieldAccess(EOS(STATIC_1639), i220, i220) :|: TRUE f1639_0_appendNewList_FieldAccess(EOS(STATIC_1639), i220, i220) -> f1664_0_appendNewList_Load(EOS(STATIC_1664), i220, i220) :|: TRUE f1664_0_appendNewList_Load(EOS(STATIC_1664), i220, i220) -> f1669_0_appendNewList_ConstantStackPush(EOS(STATIC_1669), i220, i220, i220) :|: TRUE f1669_0_appendNewList_ConstantStackPush(EOS(STATIC_1669), i220, i220, i220) -> f1673_0_appendNewList_GT(EOS(STATIC_1673), i220, i220, i220, 1) :|: TRUE f1673_0_appendNewList_GT(EOS(STATIC_1673), i284, i284, i284, matching1) -> f1709_0_appendNewList_GT(EOS(STATIC_1709), i284, i284, i284, 1) :|: TRUE && matching1 = 1 f1709_0_appendNewList_GT(EOS(STATIC_1709), i284, i284, i284, matching1) -> f1772_0_appendNewList_Load(EOS(STATIC_1772), i284, i284) :|: i284 > 1 && matching1 = 1 f1772_0_appendNewList_Load(EOS(STATIC_1772), i284, i284) -> f1776_0_appendNewList_FieldAccess(EOS(STATIC_1776), i284, i284) :|: TRUE f1776_0_appendNewList_FieldAccess(EOS(STATIC_1776), i284, i284) -> f1795_0_appendNewList_Load(EOS(STATIC_1795), i284, i284) :|: TRUE f1795_0_appendNewList_Load(EOS(STATIC_1795), i284, i284) -> f1822_0_appendNewList_ConstantStackPush(EOS(STATIC_1822), i284, i284) :|: TRUE f1822_0_appendNewList_ConstantStackPush(EOS(STATIC_1822), i284, i284) -> f1953_0_appendNewList_IntArithmetic(EOS(STATIC_1953), i284, i284, 1) :|: TRUE f1953_0_appendNewList_IntArithmetic(EOS(STATIC_1953), i284, i284, matching1) -> f1968_0_appendNewList_InvokeMethod(EOS(STATIC_1968), i284, i284 - 1) :|: i284 > 0 && matching1 = 1 f1968_0_appendNewList_InvokeMethod(EOS(STATIC_1968), i284, i341) -> f2006_0_appendNewList_Load(EOS(STATIC_2006), i341, i341) :|: i284 > 1 && i341 >= 1 && i219 >= 1 && i341 < i284 f1968_0_appendNewList_InvokeMethod(EOS(STATIC_1968), i284, i341) -> f2006_1_appendNewList_Load(EOS(STATIC_2006), i284, i341) :|: i284 > 1 && i341 >= 1 && i219 >= 1 && i341 < i284 f2006_0_appendNewList_Load(EOS(STATIC_2006), i341, i341) -> f2032_0_appendNewList_Load(EOS(STATIC_2032), i341, i341) :|: TRUE f2032_0_appendNewList_Load(EOS(STATIC_2032), i341, i341) -> f1463_0_appendNewList_Load(EOS(STATIC_1463), i341, i341) :|: TRUE f1463_0_appendNewList_Load(EOS(STATIC_1463), i220, i220) -> f1488_0_appendNewList_New(EOS(STATIC_1488), i220, i220) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f1488_0_appendNewList_New(EOS(STATIC_1488), i220:0, i220:0) -> f1488_0_appendNewList_New(EOS(STATIC_1488), i220:0 - 1, i220:0 - 1) :|: i220:0 > 1 && i220:0 - 1 < i220:0 && i219:0 > 0 Removed following non-SCC rules: f1488_0_appendNewList_New(EOS(STATIC_1488), i220:0, i220:0) -> f2006_1_appendNewList_Load(EOS(STATIC_2006), i220:0, i220:0 - 1) :|: i220:0 > 1 && i220:0 - 1 < i220:0 && i219:0 > 0 Filtered constant ground arguments: f1488_0_appendNewList_New(x1, x2, x3) -> f1488_0_appendNewList_New(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f1488_0_appendNewList_New(x1, x2) -> f1488_0_appendNewList_New(x2) Finished conversion. Obtained 1 rules.P rules: f1488_0_appendNewList_New(i220:0) -> f1488_0_appendNewList_New(i220:0 - 1) :|: i220:0 - 1 < i220:0 && i219:0 > 0 && i220:0 > 1 ---------------------------------------- (14) Obligation: Rules: f1488_0_appendNewList_New(i220:0) -> f1488_0_appendNewList_New(i220:0 - 1) :|: i220:0 - 1 < i220:0 && i219:0 > 0 && i220:0 > 1 ---------------------------------------- (15) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (16) Obligation: Rules: f1488_0_appendNewList_New(i220:0) -> f1488_0_appendNewList_New(arith) :|: i220:0 - 1 < i220:0 && i219:0 > 0 && i220:0 > 1 && arith = i220:0 - 1 ---------------------------------------- (17) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1488_0_appendNewList_New(i220:0) -> f1488_0_appendNewList_New(arith) :|: i220:0 - 1 < i220:0 && i219:0 > 0 && i220:0 > 1 && arith = i220:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (18) Obligation: Termination digraph: Nodes: (1) f1488_0_appendNewList_New(i220:0) -> f1488_0_appendNewList_New(arith) :|: i220:0 - 1 < i220:0 && i219:0 > 0 && i220:0 > 1 && arith = i220:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f1488_0_appendNewList_New(i220:0:0) -> f1488_0_appendNewList_New(i220:0:0 - 1) :|: i220:0:0 - 1 < i220:0:0 && i219:0:0 > 0 && i220:0:0 > 1 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1488_0_appendNewList_New(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f1488_0_appendNewList_New(i220:0:0) -> f1488_0_appendNewList_New(c) :|: c = i220:0:0 - 1 && (i220:0:0 - 1 < i220:0:0 && i219:0:0 > 0 && i220:0:0 > 1) ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f1488_0_appendNewList_New(x)] = x The following rules are decreasing: f1488_0_appendNewList_New(i220:0:0) -> f1488_0_appendNewList_New(c) :|: c = i220:0:0 - 1 && (i220:0:0 - 1 < i220:0:0 && i219:0:0 > 0 && i220:0:0 > 1) The following rules are bounded: f1488_0_appendNewList_New(i220:0:0) -> f1488_0_appendNewList_New(c) :|: c = i220:0:0 - 1 && (i220:0:0 - 1 < i220:0:0 && i219:0:0 > 0 && i220:0:0 > 1) ---------------------------------------- (24) YES