/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, 518 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 213 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToIRSProof [SOUND, 103 ms] (14) IRSwT (15) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (16) IRSwT (17) IRSwTTerminationDigraphProof [EQUIVALENT, 9 ms] (18) IRSwT (19) IntTRSCompressionProof [EQUIVALENT, 0 ms] (20) IRSwT (21) TempFilterProof [SOUND, 31 ms] (22) IntTRS (23) PolynomialOrderProcessor [EQUIVALENT, 16 ms] (24) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: package IntListSumRec; public class IntListSumRec { public static void main(String[] args) { Random.args = args; List l = List.createList(Random.random()); int sum = l.sumList(); } } class List { int value; List next; public List(int v, List n) { this.value = v; this.next = n; } public int sumList() { if (this.next == null) { return this.value; } else { int firstTwo = this.value + this.next.value; List nextNext = this.next.next; List shorter = new List(firstTwo, nextNext); return shorter.sumList(); } } public static List createList(int l) { if (l < 0) { return null; } else { return new List(Random.random(), createList(l - 1)); } } } class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: package IntListSumRec; public class IntListSumRec { public static void main(String[] args) { Random.args = args; List l = List.createList(Random.random()); int sum = l.sumList(); } } class List { int value; List next; public List(int v, List n) { this.value = v; this.next = n; } public int sumList() { if (this.next == null) { return this.value; } else { int firstTwo = this.value + this.next.value; List nextNext = this.next.next; List shorter = new List(firstTwo, nextNext); return shorter.sumList(); } } public static List createList(int l) { if (l < 0) { return null; } else { return new List(Random.random(), createList(l - 1)); } } } class Random { static String[] args; static int index = 0; public static int random() { String string = args[index]; index++; return string.length(); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: IntListSumRec.IntListSumRec.main([Ljava/lang/String;)V: Graph of 129 nodes with 0 SCCs. IntListSumRec.List.createList(I)LIntListSumRec/List;: Graph of 119 nodes with 0 SCCs. IntListSumRec.List.sumList()I: Graph of 45 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: IntListSumRec.List.sumList()I SCC calls the following helper methods: IntListSumRec.List.sumList()I Performed SCC analyses: *Used field analysis yielded the following read fields: *IntListSumRec.List: [next, value] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 35 rules for P and 44 rules for R.P rules: f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) -> f4842_0_sumList_NONNULL(EOS(STATIC_4842), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), o472) :|: TRUE f4842_0_sumList_NONNULL(EOS(STATIC_4842), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) -> f4844_0_sumList_NONNULL(EOS(STATIC_4844), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) :|: TRUE f4844_0_sumList_NONNULL(EOS(STATIC_4844), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) -> f4846_0_sumList_Load(EOS(STATIC_4846), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4846_0_sumList_Load(EOS(STATIC_4846), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4848_0_sumList_FieldAccess(EOS(STATIC_4848), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4848_0_sumList_FieldAccess(EOS(STATIC_4848), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4852_0_sumList_Load(EOS(STATIC_4852), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556) :|: TRUE f4852_0_sumList_Load(EOS(STATIC_4852), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556) -> f4855_0_sumList_FieldAccess(EOS(STATIC_4855), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4855_0_sumList_FieldAccess(EOS(STATIC_4855), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4859_0_sumList_FieldAccess(EOS(STATIC_4859), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(o473sub)) :|: TRUE f4859_0_sumList_FieldAccess(EOS(STATIC_4859), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4869_0_sumList_FieldAccess(EOS(STATIC_4869), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) :|: TRUE f4869_0_sumList_FieldAccess(EOS(STATIC_4869), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4875_0_sumList_IntArithmetic(EOS(STATIC_4875), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, i562) :|: TRUE f4875_0_sumList_IntArithmetic(EOS(STATIC_4875), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, i562) -> f4880_0_sumList_Store(EOS(STATIC_4880), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556 + i562) :|: TRUE f4880_0_sumList_Store(EOS(STATIC_4880), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) -> f4883_0_sumList_Load(EOS(STATIC_4883), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) :|: TRUE f4883_0_sumList_Load(EOS(STATIC_4883), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) -> f4885_0_sumList_FieldAccess(EOS(STATIC_4885), i567, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556))) :|: TRUE f4885_0_sumList_FieldAccess(EOS(STATIC_4885), i567, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556))) -> f4886_0_sumList_FieldAccess(EOS(STATIC_4886), i567, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) :|: TRUE f4886_0_sumList_FieldAccess(EOS(STATIC_4886), i567, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4888_0_sumList_Store(EOS(STATIC_4888), i567, o477) :|: TRUE f4888_0_sumList_Store(EOS(STATIC_4888), i567, o477) -> f4890_0_sumList_New(EOS(STATIC_4890), i567, o477) :|: TRUE f4890_0_sumList_New(EOS(STATIC_4890), i567, o477) -> f4892_0_sumList_Duplicate(EOS(STATIC_4892), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE f4892_0_sumList_Duplicate(EOS(STATIC_4892), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1))) -> f4894_0_sumList_Load(EOS(STATIC_4894), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 f4894_0_sumList_Load(EOS(STATIC_4894), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2))) -> f4896_0_sumList_Load(EOS(STATIC_4896), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567) :|: TRUE && matching1 = 0 && matching2 = 0 f4896_0_sumList_Load(EOS(STATIC_4896), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567) -> f4898_0_sumList_InvokeMethod(EOS(STATIC_4898), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 f4898_0_sumList_InvokeMethod(EOS(STATIC_4898), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4900_0__init__Load(EOS(STATIC_4900), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 f4900_0__init__Load(EOS(STATIC_4900), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4901_0__init__InvokeMethod(EOS(STATIC_4901), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f4901_0__init__InvokeMethod(EOS(STATIC_4901), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3))) -> f4903_0__init__Load(EOS(STATIC_4903), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4903_0__init__Load(EOS(STATIC_4903), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4905_0__init__Load(EOS(STATIC_4905), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f4905_0__init__Load(EOS(STATIC_4905), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3))) -> f4908_0__init__FieldAccess(EOS(STATIC_4908), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4908_0__init__FieldAccess(EOS(STATIC_4908), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3)), i567) -> f4910_0__init__Load(EOS(STATIC_4910), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4910_0__init__Load(EOS(STATIC_4910), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) -> f4912_0__init__Load(EOS(STATIC_4912), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, i567))) :|: TRUE f4912_0__init__Load(EOS(STATIC_4912), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, i567))) -> f4914_0__init__FieldAccess(EOS(STATIC_4914), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) :|: TRUE f4914_0__init__FieldAccess(EOS(STATIC_4914), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) -> f4916_0__init__Return(EOS(STATIC_4916), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4916_0__init__Return(EOS(STATIC_4916), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4917_0_sumList_Store(EOS(STATIC_4917), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4917_0_sumList_Store(EOS(STATIC_4917), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4919_0_sumList_Load(EOS(STATIC_4919), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4919_0_sumList_Load(EOS(STATIC_4919), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4921_0_sumList_InvokeMethod(EOS(STATIC_4921), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4921_0_sumList_InvokeMethod(EOS(STATIC_4921), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4922_1_sumList_InvokeMethod(f4922_0_sumList_Load(EOS(STATIC_4922), java.lang.Object(IntListSumRec.List(EOC, o477, i567)))) :|: TRUE f4922_0_sumList_Load(EOS(STATIC_4922), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4924_0_sumList_Load(EOS(STATIC_4924), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4924_0_sumList_Load(EOS(STATIC_4924), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4837_0_sumList_Load(EOS(STATIC_4837), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4837_0_sumList_Load(EOS(STATIC_4837), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) -> f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) :|: TRUE R rules: f4837_0_sumList_Load(EOS(STATIC_4837), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) -> f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) :|: TRUE f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), java.lang.Object(IntListSumRec.List(EOC, o472, i556))) -> f4842_0_sumList_NONNULL(EOS(STATIC_4842), java.lang.Object(IntListSumRec.List(EOC, o472, i556)), o472) :|: TRUE f4842_0_sumList_NONNULL(EOS(STATIC_4842), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) -> f4844_0_sumList_NONNULL(EOS(STATIC_4844), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) :|: TRUE f4842_0_sumList_NONNULL(EOS(STATIC_4842), java.lang.Object(IntListSumRec.List(EOC, NULL, i556)), NULL) -> f4845_0_sumList_NONNULL(EOS(STATIC_4845), java.lang.Object(IntListSumRec.List(EOC, NULL, i556)), NULL) :|: TRUE f4844_0_sumList_NONNULL(EOS(STATIC_4844), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(o473sub)) -> f4846_0_sumList_Load(EOS(STATIC_4846), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4845_0_sumList_NONNULL(EOS(STATIC_4845), java.lang.Object(IntListSumRec.List(EOC, NULL, i556)), NULL) -> f4847_0_sumList_Load(EOS(STATIC_4847), java.lang.Object(IntListSumRec.List(EOC, NULL, i556))) :|: TRUE f4846_0_sumList_Load(EOS(STATIC_4846), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4848_0_sumList_FieldAccess(EOS(STATIC_4848), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4847_0_sumList_Load(EOS(STATIC_4847), java.lang.Object(IntListSumRec.List(EOC, NULL, i556))) -> f4850_0_sumList_FieldAccess(EOS(STATIC_4850), java.lang.Object(IntListSumRec.List(EOC, NULL, i556))) :|: TRUE f4848_0_sumList_FieldAccess(EOS(STATIC_4848), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4852_0_sumList_Load(EOS(STATIC_4852), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556) :|: TRUE f4850_0_sumList_FieldAccess(EOS(STATIC_4850), java.lang.Object(IntListSumRec.List(EOC, NULL, i556))) -> f4853_0_sumList_Return(EOS(STATIC_4853), i556) :|: TRUE f4852_0_sumList_Load(EOS(STATIC_4852), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556) -> f4855_0_sumList_FieldAccess(EOS(STATIC_4855), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) :|: TRUE f4855_0_sumList_FieldAccess(EOS(STATIC_4855), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556))) -> f4859_0_sumList_FieldAccess(EOS(STATIC_4859), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(o473sub), i556)), i556, java.lang.Object(o473sub)) :|: TRUE f4859_0_sumList_FieldAccess(EOS(STATIC_4859), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4869_0_sumList_FieldAccess(EOS(STATIC_4869), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) :|: TRUE f4869_0_sumList_FieldAccess(EOS(STATIC_4869), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4875_0_sumList_IntArithmetic(EOS(STATIC_4875), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, i562) :|: TRUE f4875_0_sumList_IntArithmetic(EOS(STATIC_4875), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556, i562) -> f4880_0_sumList_Store(EOS(STATIC_4880), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i556 + i562) :|: TRUE f4880_0_sumList_Store(EOS(STATIC_4880), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) -> f4883_0_sumList_Load(EOS(STATIC_4883), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) :|: TRUE f4883_0_sumList_Load(EOS(STATIC_4883), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556)), i567) -> f4885_0_sumList_FieldAccess(EOS(STATIC_4885), i567, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556))) :|: TRUE f4885_0_sumList_FieldAccess(EOS(STATIC_4885), i567, java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477, i562)), i556))) -> f4886_0_sumList_FieldAccess(EOS(STATIC_4886), i567, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) :|: TRUE f4886_0_sumList_FieldAccess(EOS(STATIC_4886), i567, java.lang.Object(IntListSumRec.List(EOC, o477, i562))) -> f4888_0_sumList_Store(EOS(STATIC_4888), i567, o477) :|: TRUE f4888_0_sumList_Store(EOS(STATIC_4888), i567, o477) -> f4890_0_sumList_New(EOS(STATIC_4890), i567, o477) :|: TRUE f4890_0_sumList_New(EOS(STATIC_4890), i567, o477) -> f4892_0_sumList_Duplicate(EOS(STATIC_4892), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE f4892_0_sumList_Duplicate(EOS(STATIC_4892), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1))) -> f4894_0_sumList_Load(EOS(STATIC_4894), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 f4894_0_sumList_Load(EOS(STATIC_4894), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2))) -> f4896_0_sumList_Load(EOS(STATIC_4896), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567) :|: TRUE && matching1 = 0 && matching2 = 0 f4896_0_sumList_Load(EOS(STATIC_4896), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567) -> f4898_0_sumList_InvokeMethod(EOS(STATIC_4898), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 f4898_0_sumList_InvokeMethod(EOS(STATIC_4898), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4900_0__init__Load(EOS(STATIC_4900), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 f4900_0__init__Load(EOS(STATIC_4900), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4901_0__init__InvokeMethod(EOS(STATIC_4901), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f4901_0__init__InvokeMethod(EOS(STATIC_4901), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3))) -> f4903_0__init__Load(EOS(STATIC_4903), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4903_0__init__Load(EOS(STATIC_4903), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477) -> f4905_0__init__Load(EOS(STATIC_4905), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0))) :|: TRUE && matching1 = 0 && matching2 = 0 f4905_0__init__Load(EOS(STATIC_4905), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), i567, o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3))) -> f4908_0__init__FieldAccess(EOS(STATIC_4908), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, 0)), i567) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4908_0__init__FieldAccess(EOS(STATIC_4908), java.lang.Object(IntListSumRec.List(EOC, NULL, matching1)), java.lang.Object(IntListSumRec.List(EOC, NULL, matching2)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, matching3)), i567) -> f4910_0__init__Load(EOS(STATIC_4910), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) :|: TRUE && matching1 = 0 && matching2 = 0 && matching3 = 0 f4910_0__init__Load(EOS(STATIC_4910), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) -> f4912_0__init__Load(EOS(STATIC_4912), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, i567))) :|: TRUE f4912_0__init__Load(EOS(STATIC_4912), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477, java.lang.Object(IntListSumRec.List(EOC, NULL, i567))) -> f4914_0__init__FieldAccess(EOS(STATIC_4914), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) :|: TRUE f4914_0__init__FieldAccess(EOS(STATIC_4914), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), java.lang.Object(IntListSumRec.List(EOC, NULL, i567)), o477) -> f4916_0__init__Return(EOS(STATIC_4916), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4916_0__init__Return(EOS(STATIC_4916), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4917_0_sumList_Store(EOS(STATIC_4917), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4917_0_sumList_Store(EOS(STATIC_4917), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4919_0_sumList_Load(EOS(STATIC_4919), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4919_0_sumList_Load(EOS(STATIC_4919), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4921_0_sumList_InvokeMethod(EOS(STATIC_4921), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4921_0_sumList_InvokeMethod(EOS(STATIC_4921), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4922_1_sumList_InvokeMethod(f4922_0_sumList_Load(EOS(STATIC_4922), java.lang.Object(IntListSumRec.List(EOC, o477, i567)))) :|: TRUE f4922_0_sumList_Load(EOS(STATIC_4922), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4924_0_sumList_Load(EOS(STATIC_4924), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f5211_0_sumList_Return(EOS(STATIC_5211), i570) -> f5212_0_sumList_Return(EOS(STATIC_5212), i570) :|: TRUE f5215_0_sumList_Return(EOS(STATIC_5215), i590) -> f5217_0_sumList_Return(EOS(STATIC_5217), i590) :|: TRUE f5217_0_sumList_Return(EOS(STATIC_5217), i590) -> f5212_0_sumList_Return(EOS(STATIC_5212), i590) :|: TRUE f4924_0_sumList_Load(EOS(STATIC_4924), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) -> f4837_0_sumList_Load(EOS(STATIC_4837), java.lang.Object(IntListSumRec.List(EOC, o477, i567))) :|: TRUE f4922_1_sumList_InvokeMethod(f4853_0_sumList_Return(EOS(STATIC_4853), i570)) -> f5211_0_sumList_Return(EOS(STATIC_5211), i570) :|: TRUE f4922_1_sumList_InvokeMethod(f5212_0_sumList_Return(EOS(STATIC_5212), i590)) -> f5215_0_sumList_Return(EOS(STATIC_5215), i590) :|: TRUE Combined rules. Obtained 1 conditional rules for P and 4 conditional rules for R.P rules: f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477:0, i562:0)), i556:0)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477:0, i562:0)), i556:0))) -> f4922_1_sumList_InvokeMethod(f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o477:0, i556:0 + i562:0)), java.lang.Object(IntListSumRec.List(EOC, o477:0, i556:0 + i562:0)))) :|: TRUE R rules: f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, NULL, i556:0)), java.lang.Object(IntListSumRec.List(EOC, NULL, i556:0))) -> f4853_0_sumList_Return(EOS(STATIC_4853), i556:0) :|: TRUE f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477:0, i562:0)), i556:0)), java.lang.Object(IntListSumRec.List(EOC, java.lang.Object(IntListSumRec.List(EOC, o477:0, i562:0)), i556:0))) -> f4922_1_sumList_InvokeMethod(f4841_0_sumList_FieldAccess(EOS(STATIC_4841), java.lang.Object(IntListSumRec.List(EOC, o477:0, i556:0 + i562:0)), java.lang.Object(IntListSumRec.List(EOC, o477:0, i556:0 + i562:0)))) :|: TRUE f4922_1_sumList_InvokeMethod(f5212_0_sumList_Return(EOS(STATIC_5212), i590:0)) -> f5212_0_sumList_Return(EOS(STATIC_5212), i590:0) :|: TRUE f4922_1_sumList_InvokeMethod(f4853_0_sumList_Return(EOS(STATIC_4853), i570:0)) -> f5212_0_sumList_Return(EOS(STATIC_5212), i570:0) :|: TRUE Filtered ground terms: f4841_0_sumList_FieldAccess(x1, x2, x3) -> f4841_0_sumList_FieldAccess(x2, x3) IntListSumRec.List(x1, x2, x3) -> IntListSumRec.List(x2, x3) f4853_0_sumList_Return(x1, x2) -> f4853_0_sumList_Return(x2) f5212_0_sumList_Return(x1, x2) -> f5212_0_sumList_Return(x2) Filtered unneeded arguments: IntListSumRec.List(x1, x2) -> IntListSumRec.List(x1) Filtered duplicate args: f4841_0_sumList_FieldAccess(x1, x2) -> f4841_0_sumList_FieldAccess(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(java.lang.Object(IntListSumRec.List(o477:0:0))))) -> F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(o477:0:0))) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(java.lang.Object(IntListSumRec.List(o477:0:0))))) -> F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(o477: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: *F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(java.lang.Object(IntListSumRec.List(o477:0:0))))) -> F4841_0_SUMLIST_FIELDACCESS(java.lang.Object(IntListSumRec.List(o477: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: IntListSumRec.List.createList(I)LIntListSumRec/List; SCC calls the following helper methods: IntListSumRec.List.createList(I)LIntListSumRec/List; Performed SCC analyses: *Used field analysis yielded the following read fields: *java.lang.String: [count] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (13) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 32 IRulesP rules: f393_0_createList_GE(EOS(STATIC_393(java.lang.Object(o45sub), i40)), i47, i47, i47) -> f397_0_createList_GE(EOS(STATIC_397(java.lang.Object(o45sub), i40)), i47, i47, i47) :|: TRUE f397_0_createList_GE(EOS(STATIC_397(java.lang.Object(o45sub), i40)), i47, i47, i47) -> f402_0_createList_New(EOS(STATIC_402(java.lang.Object(o45sub), i40)), i47, i47) :|: i47 >= 0 f402_0_createList_New(EOS(STATIC_402(java.lang.Object(o45sub), i40)), i47, i47) -> f404_0_createList_Duplicate(EOS(STATIC_404(java.lang.Object(o45sub), i40)), i47, i47) :|: TRUE f404_0_createList_Duplicate(EOS(STATIC_404(java.lang.Object(o45sub), i40)), i47, i47) -> f409_0_createList_InvokeMethod(EOS(STATIC_409(java.lang.Object(o45sub), i40)), i47, i47) :|: TRUE f409_0_createList_InvokeMethod(EOS(STATIC_409(java.lang.Object(o45sub), i40)), i47, i47) -> f431_0_random_FieldAccess(EOS(STATIC_431(java.lang.Object(o45sub), i40)), i47, i47) :|: TRUE f431_0_random_FieldAccess(EOS(STATIC_431(java.lang.Object(o45sub), i40)), i47, i47) -> f433_0_random_FieldAccess(EOS(STATIC_433(java.lang.Object(o45sub), i40)), i47, i47, java.lang.Object(o45sub)) :|: TRUE f433_0_random_FieldAccess(EOS(STATIC_433(java.lang.Object(o45sub), i40)), i47, i47, java.lang.Object(o45sub)) -> f434_0_random_ArrayAccess(EOS(STATIC_434(java.lang.Object(o45sub), i40)), i47, i47, java.lang.Object(o45sub), i40) :|: TRUE f434_0_random_ArrayAccess(EOS(STATIC_434(java.lang.Object(ARRAY(i53)), i40)), i47, i47, java.lang.Object(ARRAY(i53)), i40) -> f435_0_random_ArrayAccess(EOS(STATIC_435(java.lang.Object(ARRAY(i53)), i40)), i47, i47, java.lang.Object(ARRAY(i53)), i40) :|: i53 >= 0 f435_0_random_ArrayAccess(EOS(STATIC_435(java.lang.Object(ARRAY(i53)), i40)), i47, i47, java.lang.Object(ARRAY(i53)), i40) -> f436_0_random_ArrayAccess(EOS(STATIC_436(java.lang.Object(ARRAY(i53)), i40)), i47, i47, java.lang.Object(ARRAY(i53)), i40) :|: TRUE f436_0_random_ArrayAccess(EOS(STATIC_436(java.lang.Object(ARRAY(i53)), i40)), i47, i47, java.lang.Object(ARRAY(i53)), i40) -> f438_0_random_Store(EOS(STATIC_438(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54) :|: i40 < i53 f438_0_random_Store(EOS(STATIC_438(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54) -> f440_0_random_FieldAccess(EOS(STATIC_440(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54) :|: TRUE f440_0_random_FieldAccess(EOS(STATIC_440(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54) -> f441_0_random_ConstantStackPush(EOS(STATIC_441(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i40) :|: TRUE f441_0_random_ConstantStackPush(EOS(STATIC_441(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i40) -> f447_0_random_IntArithmetic(EOS(STATIC_447(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i40, 1) :|: TRUE f447_0_random_IntArithmetic(EOS(STATIC_447(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i40, matching1) -> f451_0_random_FieldAccess(EOS(STATIC_451(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i40 + 1) :|: i40 > 0 && matching1 = 1 f451_0_random_FieldAccess(EOS(STATIC_451(java.lang.Object(ARRAY(i53)), i40)), i47, i47, o54, i54) -> f452_0_random_Load(EOS(STATIC_452(java.lang.Object(ARRAY(i53)), i54)), i47, i47, o54) :|: TRUE f452_0_random_Load(EOS(STATIC_452(java.lang.Object(ARRAY(i53)), i54)), i47, i47, o54) -> f455_0_random_InvokeMethod(EOS(STATIC_455(java.lang.Object(ARRAY(i53)), i54)), i47, i47, o54) :|: TRUE f455_0_random_InvokeMethod(EOS(STATIC_455(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o56sub)) -> f459_0_random_InvokeMethod(EOS(STATIC_459(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o56sub)) :|: TRUE f459_0_random_InvokeMethod(EOS(STATIC_459(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) -> f462_0_random_InvokeMethod(EOS(STATIC_462(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) :|: TRUE f462_0_random_InvokeMethod(EOS(STATIC_462(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) -> f469_0_length_Load(EOS(STATIC_469(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) :|: TRUE f469_0_length_Load(EOS(STATIC_469(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) -> f476_0_length_FieldAccess(EOS(STATIC_476(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(o58sub)) :|: TRUE f476_0_length_FieldAccess(EOS(STATIC_476(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(java.lang.String(EOC, i58))) -> f484_0_length_FieldAccess(EOS(STATIC_484(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(java.lang.String(EOC, i58))) :|: TRUE f484_0_length_FieldAccess(EOS(STATIC_484(java.lang.Object(ARRAY(i53)), i54)), i47, i47, java.lang.Object(java.lang.String(EOC, i58))) -> f489_0_length_Return(EOS(STATIC_489(java.lang.Object(ARRAY(i53)), i54)), i47, i47) :|: TRUE f489_0_length_Return(EOS(STATIC_489(java.lang.Object(ARRAY(i53)), i54)), i47, i47) -> f495_0_random_Return(EOS(STATIC_495(java.lang.Object(ARRAY(i53)), i54)), i47, i47) :|: TRUE f495_0_random_Return(EOS(STATIC_495(java.lang.Object(ARRAY(i53)), i54)), i47, i47) -> f501_0_createList_Load(EOS(STATIC_501(java.lang.Object(ARRAY(i53)), i54)), i47, i47) :|: TRUE f501_0_createList_Load(EOS(STATIC_501(java.lang.Object(ARRAY(i53)), i54)), i47, i47) -> f506_0_createList_ConstantStackPush(EOS(STATIC_506(java.lang.Object(ARRAY(i53)), i54)), i47, i47) :|: TRUE f506_0_createList_ConstantStackPush(EOS(STATIC_506(java.lang.Object(ARRAY(i53)), i54)), i47, i47) -> f511_0_createList_IntArithmetic(EOS(STATIC_511(java.lang.Object(ARRAY(i53)), i54)), i47, i47, 1) :|: TRUE f511_0_createList_IntArithmetic(EOS(STATIC_511(java.lang.Object(ARRAY(i53)), i54)), i47, i47, matching1) -> f514_0_createList_InvokeMethod(EOS(STATIC_514(java.lang.Object(ARRAY(i53)), i54)), i47, i47 - 1) :|: i47 >= 0 && matching1 = 1 f514_0_createList_InvokeMethod(EOS(STATIC_514(java.lang.Object(ARRAY(i53)), i54)), i47, i60) -> f519_0_createList_Load(EOS(STATIC_519(java.lang.Object(ARRAY(i53)), i54)), i60, i60) :|: i54 > 1 && i60 < i47 f514_0_createList_InvokeMethod(EOS(STATIC_514(java.lang.Object(ARRAY(i53)), i54)), i47, i60) -> f519_1_createList_Load(EOS(STATIC_519(java.lang.Object(ARRAY(i53)), i54)), i47, i60) :|: i54 > 1 && i60 < i47 f519_0_createList_Load(EOS(STATIC_519(java.lang.Object(ARRAY(i53)), i54)), i60, i60) -> f528_0_createList_Load(EOS(STATIC_528(java.lang.Object(ARRAY(i53)), i54)), i60, i60) :|: TRUE f528_0_createList_Load(EOS(STATIC_528(java.lang.Object(ARRAY(i53)), i54)), i60, i60) -> f380_0_createList_Load(EOS(STATIC_380(java.lang.Object(ARRAY(i53)), i54)), i60, i60) :|: TRUE f380_0_createList_Load(EOS(STATIC_380(java.lang.Object(o45sub), i40)), i41, i41) -> f393_0_createList_GE(EOS(STATIC_393(java.lang.Object(o45sub), i40)), i41, i41, i41) :|: TRUE Combined rules. Obtained 2 IRulesP rules: f393_0_createList_GE(EOS(STATIC_393(java.lang.Object(ARRAY(i53:0)), i40:0)), i47:0, i47:0, i47:0) -> f393_0_createList_GE(EOS(STATIC_393(java.lang.Object(ARRAY(i53:0)), i40:0 + 1)), i47:0 - 1, i47:0 - 1, i47:0 - 1) :|: i47:0 > -1 && i53:0 > -1 && i53:0 > i40:0 && i40:0 > 0 && i47:0 - 1 < i47:0 Removed following non-SCC rules: f393_0_createList_GE(EOS(STATIC_393(java.lang.Object(ARRAY(i53:0)), i40:0)), i47:0, i47:0, i47:0) -> f519_1_createList_Load(EOS(STATIC_519(java.lang.Object(ARRAY(i53:0)), i40:0 + 1)), i47:0, i47:0 - 1) :|: i47:0 > -1 && i53:0 > -1 && i53:0 > i40:0 && i40:0 > 0 && i47:0 - 1 < i47:0 Filtered duplicate arguments: f393_0_createList_GE(x1, x2, x3, x4) -> f393_0_createList_GE(x1, x4) Finished conversion. Obtained 1 rules.P rules: f393_0_createList_GE(i47:0, i53:0, i40:0) -> f393_0_createList_GE(i47:0 - 1, i53:0, i40:0 + 1) :|: i53:0 > -1 && i47:0 > -1 && i53:0 > i40:0 && i47:0 - 1 < i47:0 && i40:0 > 0 ---------------------------------------- (14) Obligation: Rules: f393_0_createList_GE(i47:0, i53:0, i40:0) -> f393_0_createList_GE(i47:0 - 1, i53:0, i40:0 + 1) :|: i53:0 > -1 && i47:0 > -1 && i53:0 > i40:0 && i47:0 - 1 < i47:0 && i40:0 > 0 ---------------------------------------- (15) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (16) Obligation: Rules: f393_0_createList_GE(i47:0, i53:0, i40:0) -> f393_0_createList_GE(arith, i53:0, arith1) :|: i53:0 > -1 && i47:0 > -1 && i53:0 > i40:0 && i47:0 - 1 < i47:0 && i40:0 > 0 && arith = i47:0 - 1 && arith1 = i40:0 + 1 ---------------------------------------- (17) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f393_0_createList_GE(i47:0, i53:0, i40:0) -> f393_0_createList_GE(arith, i53:0, arith1) :|: i53:0 > -1 && i47:0 > -1 && i53:0 > i40:0 && i47:0 - 1 < i47:0 && i40:0 > 0 && arith = i47:0 - 1 && arith1 = i40:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (18) Obligation: Termination digraph: Nodes: (1) f393_0_createList_GE(i47:0, i53:0, i40:0) -> f393_0_createList_GE(arith, i53:0, arith1) :|: i53:0 > -1 && i47:0 > -1 && i53:0 > i40:0 && i47:0 - 1 < i47:0 && i40:0 > 0 && arith = i47:0 - 1 && arith1 = i40:0 + 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (19) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (20) Obligation: Rules: f393_0_createList_GE(i47:0:0, i53:0:0, i40:0:0) -> f393_0_createList_GE(i47:0:0 - 1, i53:0:0, i40:0:0 + 1) :|: i47:0:0 - 1 < i47:0:0 && i40:0:0 > 0 && i53:0:0 > i40:0:0 && i47:0:0 > -1 && i53:0:0 > -1 ---------------------------------------- (21) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f393_0_createList_GE(INTEGER, INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (22) Obligation: Rules: f393_0_createList_GE(i47:0:0, i53:0:0, i40:0:0) -> f393_0_createList_GE(c, i53:0:0, c1) :|: c1 = i40:0:0 + 1 && c = i47:0:0 - 1 && (i47:0:0 - 1 < i47:0:0 && i40:0:0 > 0 && i53:0:0 > i40:0:0 && i47:0:0 > -1 && i53:0:0 > -1) ---------------------------------------- (23) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f393_0_createList_GE(x, x1, x2)] = -1 + x1 - x2 The following rules are decreasing: f393_0_createList_GE(i47:0:0, i53:0:0, i40:0:0) -> f393_0_createList_GE(c, i53:0:0, c1) :|: c1 = i40:0:0 + 1 && c = i47:0:0 - 1 && (i47:0:0 - 1 < i47:0:0 && i40:0:0 > 0 && i53:0:0 > i40:0:0 && i47:0:0 > -1 && i53:0:0 > -1) The following rules are bounded: f393_0_createList_GE(i47:0:0, i53:0:0, i40:0:0) -> f393_0_createList_GE(c, i53:0:0, c1) :|: c1 = i40:0:0 + 1 && c = i47:0:0 - 1 && (i47:0:0 - 1 < i47:0:0 && i40:0:0 > 0 && i53:0:0 > i40:0:0 && i47:0:0 > -1 && i53:0:0 > -1) ---------------------------------------- (24) YES