/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty termination of the given Bare JBC problem could be proven: (0) Bare JBC problem (1) BareJBCToJBCProof [EQUIVALENT, 97 ms] (2) JBC problem (3) JBCToGraph [EQUIVALENT, 688 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 0 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 147 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToQDPProof [SOUND, 65 ms] (14) QDP (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] (16) YES (17) JBCTerminationSCC (18) SCCToIRSProof [SOUND, 37 ms] (19) IRSwT (20) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (21) IRSwT (22) IRSwTTerminationDigraphProof [EQUIVALENT, 19 ms] (23) IRSwT (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IRSwT (26) TempFilterProof [SOUND, 43 ms] (27) IntTRS (28) RankingReductionPairProof [EQUIVALENT, 25 ms] (29) YES (30) JBCTerminationSCC (31) SCCToIRSProof [SOUND, 233 ms] (32) IRSwT (33) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IRSwTTerminationDigraphProof [EQUIVALENT, 95 ms] (36) IRSwT (37) IntTRSCompressionProof [EQUIVALENT, 6 ms] (38) IRSwT (39) TempFilterProof [SOUND, 9 ms] (40) IRSwT (41) IRSwTToQDPProof [SOUND, 0 ms] (42) QDP (43) QDPSizeChangeProof [EQUIVALENT, 0 ms] (44) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Test5 { public static void main(String[] args) { List l1 = List.mk(args.length); List l2 = List.mk(args.length + 3); List l3 = List.mk(args.length + 5); List temp; while (length(l1) > 0) { temp = l1; l1 = l2; l2 = l3; l3 = temp; if (length(l2) % 3 == 0) temp = temp.getTail(); if (length(l3) % 5 == 0) l3 = l3.getTail(); if (length(l1) > length(l2)) l1 = l1.getTail(); else if (length(l1) == length(l2)) l2 = l2.getTail(); else l3 = l3.getTail(); test(l1, l2, l3); } } private static int length(List list) { int len = 0; while (list != null) { list = list.getTail(); len++; } return len; } private static void test(List l1, List l2, List l3) { while (l1 != null) { l2 = new List(l1, l2); l3 = new List(l2, l3); l1 = l1.getTail(); } } } public class List { public Object head; private List tail; public List(Object head, List tail) { this.head = head; this.tail = tail; } public List getTail() { return tail; } public static List mk(int len) { List result = null; while (len-- > 0) result = new List(new Object(), result); return result; } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Test5 { public static void main(String[] args) { List l1 = List.mk(args.length); List l2 = List.mk(args.length + 3); List l3 = List.mk(args.length + 5); List temp; while (length(l1) > 0) { temp = l1; l1 = l2; l2 = l3; l3 = temp; if (length(l2) % 3 == 0) temp = temp.getTail(); if (length(l3) % 5 == 0) l3 = l3.getTail(); if (length(l1) > length(l2)) l1 = l1.getTail(); else if (length(l1) == length(l2)) l2 = l2.getTail(); else l3 = l3.getTail(); test(l1, l2, l3); } } private static int length(List list) { int len = 0; while (list != null) { list = list.getTail(); len++; } return len; } private static void test(List l1, List l2, List l3) { while (l1 != null) { l2 = new List(l1, l2); l3 = new List(l2, l3); l1 = l1.getTail(); } } } public class List { public Object head; private List tail; public List(Object head, List tail) { this.head = head; this.tail = tail; } public List getTail() { return tail; } public static List mk(int len) { List result = null; while (len-- > 0) result = new List(new Object(), result); return result; } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Test5.main([Ljava/lang/String;)V: Graph of 264 nodes with 1 SCC. List.mk(I)LList;: Graph of 58 nodes with 1 SCC. Test5.length(LList;)I: Graph of 22 nodes with 1 SCC. Test5.test(LList;LList;LList;)V: Graph of 47 nodes with 1 SCC. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 4 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test5.test(LList;LList;LList;)V SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [tail] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 42 rules for P and 0 rules for R.P rules: f5168_0_test_NULL(EOS(STATIC_5168), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5171_0_test_NULL(EOS(STATIC_5171), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5171_0_test_NULL(EOS(STATIC_5171), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5176_0_test_New(EOS(STATIC_5176), java.lang.Object(o1288sub)) :|: TRUE f5176_0_test_New(EOS(STATIC_5176), java.lang.Object(o1288sub)) -> f5181_0_test_Duplicate(EOS(STATIC_5181), java.lang.Object(o1288sub)) :|: TRUE f5181_0_test_Duplicate(EOS(STATIC_5181), java.lang.Object(o1288sub)) -> f5185_0_test_Load(EOS(STATIC_5185), java.lang.Object(o1288sub)) :|: TRUE f5185_0_test_Load(EOS(STATIC_5185), java.lang.Object(o1288sub)) -> f5190_0_test_Load(EOS(STATIC_5190), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5190_0_test_Load(EOS(STATIC_5190), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5195_0_test_InvokeMethod(EOS(STATIC_5195), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5195_0_test_InvokeMethod(EOS(STATIC_5195), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5198_0__init__Load(EOS(STATIC_5198), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5198_0__init__Load(EOS(STATIC_5198), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5207_0__init__InvokeMethod(EOS(STATIC_5207), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5207_0__init__InvokeMethod(EOS(STATIC_5207), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5210_0__init__Load(EOS(STATIC_5210), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5210_0__init__Load(EOS(STATIC_5210), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5215_0__init__Load(EOS(STATIC_5215), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5215_0__init__Load(EOS(STATIC_5215), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5220_0__init__FieldAccess(EOS(STATIC_5220), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) :|: TRUE f5220_0__init__FieldAccess(EOS(STATIC_5220), java.lang.Object(o1288sub), java.lang.Object(o1288sub)) -> f5225_0__init__Load(EOS(STATIC_5225), java.lang.Object(o1288sub)) :|: TRUE f5225_0__init__Load(EOS(STATIC_5225), java.lang.Object(o1288sub)) -> f5230_0__init__Load(EOS(STATIC_5230), java.lang.Object(o1288sub)) :|: TRUE f5230_0__init__Load(EOS(STATIC_5230), java.lang.Object(o1288sub)) -> f5235_0__init__FieldAccess(EOS(STATIC_5235), java.lang.Object(o1288sub)) :|: TRUE f5235_0__init__FieldAccess(EOS(STATIC_5235), java.lang.Object(o1288sub)) -> f5238_0__init__Return(EOS(STATIC_5238), java.lang.Object(o1288sub)) :|: TRUE f5238_0__init__Return(EOS(STATIC_5238), java.lang.Object(o1288sub)) -> f5242_0_test_Store(EOS(STATIC_5242), java.lang.Object(o1288sub)) :|: TRUE f5242_0_test_Store(EOS(STATIC_5242), java.lang.Object(o1288sub)) -> f5245_0_test_New(EOS(STATIC_5245), java.lang.Object(o1288sub)) :|: TRUE f5245_0_test_New(EOS(STATIC_5245), java.lang.Object(o1288sub)) -> f5247_0_test_Duplicate(EOS(STATIC_5247), java.lang.Object(o1288sub)) :|: TRUE f5247_0_test_Duplicate(EOS(STATIC_5247), java.lang.Object(o1288sub)) -> f5250_0_test_Load(EOS(STATIC_5250), java.lang.Object(o1288sub)) :|: TRUE f5250_0_test_Load(EOS(STATIC_5250), java.lang.Object(o1288sub)) -> f5253_0_test_Load(EOS(STATIC_5253), java.lang.Object(o1288sub)) :|: TRUE f5253_0_test_Load(EOS(STATIC_5253), java.lang.Object(o1288sub)) -> f5256_0_test_InvokeMethod(EOS(STATIC_5256), java.lang.Object(o1288sub)) :|: TRUE f5256_0_test_InvokeMethod(EOS(STATIC_5256), java.lang.Object(o1288sub)) -> f5260_0__init__Load(EOS(STATIC_5260), java.lang.Object(o1288sub)) :|: TRUE f5260_0__init__Load(EOS(STATIC_5260), java.lang.Object(o1288sub)) -> f5267_0__init__InvokeMethod(EOS(STATIC_5267), java.lang.Object(o1288sub)) :|: TRUE f5267_0__init__InvokeMethod(EOS(STATIC_5267), java.lang.Object(o1288sub)) -> f5271_0__init__Load(EOS(STATIC_5271), java.lang.Object(o1288sub)) :|: TRUE f5271_0__init__Load(EOS(STATIC_5271), java.lang.Object(o1288sub)) -> f5274_0__init__Load(EOS(STATIC_5274), java.lang.Object(o1288sub)) :|: TRUE f5274_0__init__Load(EOS(STATIC_5274), java.lang.Object(o1288sub)) -> f5277_0__init__FieldAccess(EOS(STATIC_5277), java.lang.Object(o1288sub)) :|: TRUE f5277_0__init__FieldAccess(EOS(STATIC_5277), java.lang.Object(o1288sub)) -> f5280_0__init__Load(EOS(STATIC_5280), java.lang.Object(o1288sub)) :|: TRUE f5280_0__init__Load(EOS(STATIC_5280), java.lang.Object(o1288sub)) -> f5283_0__init__Load(EOS(STATIC_5283), java.lang.Object(o1288sub)) :|: TRUE f5283_0__init__Load(EOS(STATIC_5283), java.lang.Object(o1288sub)) -> f5287_0__init__FieldAccess(EOS(STATIC_5287), java.lang.Object(o1288sub)) :|: TRUE f5287_0__init__FieldAccess(EOS(STATIC_5287), java.lang.Object(o1288sub)) -> f5291_0__init__Return(EOS(STATIC_5291), java.lang.Object(o1288sub)) :|: TRUE f5291_0__init__Return(EOS(STATIC_5291), java.lang.Object(o1288sub)) -> f5294_0_test_Store(EOS(STATIC_5294), java.lang.Object(o1288sub)) :|: TRUE f5294_0_test_Store(EOS(STATIC_5294), java.lang.Object(o1288sub)) -> f5297_0_test_Load(EOS(STATIC_5297), java.lang.Object(o1288sub)) :|: TRUE f5297_0_test_Load(EOS(STATIC_5297), java.lang.Object(o1288sub)) -> f5300_0_test_InvokeMethod(EOS(STATIC_5300), java.lang.Object(o1288sub)) :|: TRUE f5300_0_test_InvokeMethod(EOS(STATIC_5300), java.lang.Object(o1288sub)) -> f5302_0_getTail_Load(EOS(STATIC_5302), java.lang.Object(o1288sub)) :|: TRUE f5302_0_getTail_Load(EOS(STATIC_5302), java.lang.Object(o1288sub)) -> f5304_0_getTail_FieldAccess(EOS(STATIC_5304), java.lang.Object(o1288sub)) :|: TRUE f5304_0_getTail_FieldAccess(EOS(STATIC_5304), java.lang.Object(List(EOC, o1382))) -> f5306_0_getTail_FieldAccess(EOS(STATIC_5306), java.lang.Object(List(EOC, o1382))) :|: TRUE f5306_0_getTail_FieldAccess(EOS(STATIC_5306), java.lang.Object(List(EOC, o1382))) -> f5308_0_getTail_Return(EOS(STATIC_5308), o1382) :|: TRUE f5308_0_getTail_Return(EOS(STATIC_5308), o1382) -> f5312_0_test_Store(EOS(STATIC_5312), o1382) :|: TRUE f5312_0_test_Store(EOS(STATIC_5312), o1382) -> f5316_0_test_JMP(EOS(STATIC_5316), o1382) :|: TRUE f5316_0_test_JMP(EOS(STATIC_5316), o1382) -> f5321_0_test_Load(EOS(STATIC_5321), o1382) :|: TRUE f5321_0_test_Load(EOS(STATIC_5321), o1382) -> f5165_0_test_Load(EOS(STATIC_5165), o1382) :|: TRUE f5165_0_test_Load(EOS(STATIC_5165), o1265) -> f5168_0_test_NULL(EOS(STATIC_5168), o1265, o1265) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f5168_0_test_NULL(EOS(STATIC_5168), java.lang.Object(List(EOC, o1382:0)), java.lang.Object(List(EOC, o1382:0))) -> f5168_0_test_NULL(EOS(STATIC_5168), o1382:0, o1382:0) :|: TRUE R rules: Filtered ground terms: f5168_0_test_NULL(x1, x2, x3) -> f5168_0_test_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate args: f5168_0_test_NULL(x1, x2) -> f5168_0_test_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F5168_0_TEST_NULL(java.lang.Object(List(o1382:0:0))) -> F5168_0_TEST_NULL(o1382:0:0) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F5168_0_TEST_NULL(java.lang.Object(List(o1382:0:0))) -> F5168_0_TEST_NULL(o1382: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: *F5168_0_TEST_NULL(java.lang.Object(List(o1382:0:0))) -> F5168_0_TEST_NULL(o1382: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: Test5.length(LList;)I SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [tail] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (13) SCCToQDPProof (SOUND) Transformed TerminationGraph SCC to QDP. Log: Generated 13 rules for P and 0 rules for R.P rules: f4719_0_length_NULL(EOS(STATIC_4719), java.lang.Object(o628sub), java.lang.Object(o628sub)) -> f4721_0_length_NULL(EOS(STATIC_4721), java.lang.Object(o628sub), java.lang.Object(o628sub)) :|: TRUE f4721_0_length_NULL(EOS(STATIC_4721), java.lang.Object(o628sub), java.lang.Object(o628sub)) -> f4724_0_length_Load(EOS(STATIC_4724), java.lang.Object(o628sub)) :|: TRUE f4724_0_length_Load(EOS(STATIC_4724), java.lang.Object(o628sub)) -> f4727_0_length_InvokeMethod(EOS(STATIC_4727), java.lang.Object(o628sub)) :|: TRUE f4727_0_length_InvokeMethod(EOS(STATIC_4727), java.lang.Object(o628sub)) -> f4730_0_getTail_Load(EOS(STATIC_4730), java.lang.Object(o628sub)) :|: TRUE f4730_0_getTail_Load(EOS(STATIC_4730), java.lang.Object(o628sub)) -> f4734_0_getTail_FieldAccess(EOS(STATIC_4734), java.lang.Object(o628sub)) :|: TRUE f4734_0_getTail_FieldAccess(EOS(STATIC_4734), java.lang.Object(List(EOC, o641))) -> f4737_0_getTail_FieldAccess(EOS(STATIC_4737), java.lang.Object(List(EOC, o641))) :|: TRUE f4737_0_getTail_FieldAccess(EOS(STATIC_4737), java.lang.Object(List(EOC, o641))) -> f4739_0_getTail_Return(EOS(STATIC_4739), o641) :|: TRUE f4739_0_getTail_Return(EOS(STATIC_4739), o641) -> f4740_0_length_Store(EOS(STATIC_4740), o641) :|: TRUE f4740_0_length_Store(EOS(STATIC_4740), o641) -> f4741_0_length_Inc(EOS(STATIC_4741), o641) :|: TRUE f4741_0_length_Inc(EOS(STATIC_4741), o641) -> f4742_0_length_JMP(EOS(STATIC_4742), o641) :|: TRUE f4742_0_length_JMP(EOS(STATIC_4742), o641) -> f4744_0_length_Load(EOS(STATIC_4744), o641) :|: TRUE f4744_0_length_Load(EOS(STATIC_4744), o641) -> f4717_0_length_Load(EOS(STATIC_4717), o641) :|: TRUE f4717_0_length_Load(EOS(STATIC_4717), o623) -> f4719_0_length_NULL(EOS(STATIC_4719), o623, o623) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f4719_0_length_NULL(EOS(STATIC_4719), java.lang.Object(List(EOC, o641:0)), java.lang.Object(List(EOC, o641:0))) -> f4719_0_length_NULL(EOS(STATIC_4719), o641:0, o641:0) :|: TRUE R rules: Filtered ground terms: f4719_0_length_NULL(x1, x2, x3) -> f4719_0_length_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate args: f4719_0_length_NULL(x1, x2) -> f4719_0_length_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F4719_0_LENGTH_NULL(java.lang.Object(List(o641:0:0))) -> F4719_0_LENGTH_NULL(o641:0:0) :|: TRUE R rules: ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: F4719_0_LENGTH_NULL(java.lang.Object(List(o641:0:0))) -> F4719_0_LENGTH_NULL(o641:0:0) R is empty. Q is empty. We have to consider all minimal (P,Q,R)-chains. ---------------------------------------- (15) 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: *F4719_0_LENGTH_NULL(java.lang.Object(List(o641:0:0))) -> F4719_0_LENGTH_NULL(o641:0:0) The graph contains the following edges 1 > 1 ---------------------------------------- (16) YES ---------------------------------------- (17) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: List.mk(I)LList; SCC calls the following helper methods: Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (18) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 23 IRulesP rules: f4603_0_mk_Inc(EOS(STATIC_4603), i473, i473) -> f4605_0_mk_LE(EOS(STATIC_4605), i473 + -1, i473) :|: TRUE f4605_0_mk_LE(EOS(STATIC_4605), i480, i491) -> f4607_0_mk_LE(EOS(STATIC_4607), i480, i491) :|: TRUE f4607_0_mk_LE(EOS(STATIC_4607), i480, i491) -> f4609_0_mk_New(EOS(STATIC_4609), i480) :|: i491 > 0 f4609_0_mk_New(EOS(STATIC_4609), i480) -> f4612_0_mk_Duplicate(EOS(STATIC_4612), i480) :|: TRUE f4612_0_mk_Duplicate(EOS(STATIC_4612), i480) -> f4615_0_mk_New(EOS(STATIC_4615), i480) :|: TRUE f4615_0_mk_New(EOS(STATIC_4615), i480) -> f4617_0_mk_Duplicate(EOS(STATIC_4617), i480) :|: TRUE f4617_0_mk_Duplicate(EOS(STATIC_4617), i480) -> f4622_0_mk_InvokeMethod(EOS(STATIC_4622), i480) :|: TRUE f4622_0_mk_InvokeMethod(EOS(STATIC_4622), i480) -> f4625_0_mk_Load(EOS(STATIC_4625), i480) :|: TRUE f4625_0_mk_Load(EOS(STATIC_4625), i480) -> f4628_0_mk_InvokeMethod(EOS(STATIC_4628), i480) :|: TRUE f4628_0_mk_InvokeMethod(EOS(STATIC_4628), i480) -> f4631_0__init__Load(EOS(STATIC_4631), i480) :|: TRUE f4631_0__init__Load(EOS(STATIC_4631), i480) -> f4634_0__init__InvokeMethod(EOS(STATIC_4634), i480) :|: TRUE f4634_0__init__InvokeMethod(EOS(STATIC_4634), i480) -> f4637_0__init__Load(EOS(STATIC_4637), i480) :|: TRUE f4637_0__init__Load(EOS(STATIC_4637), i480) -> f4640_0__init__Load(EOS(STATIC_4640), i480) :|: TRUE f4640_0__init__Load(EOS(STATIC_4640), i480) -> f4643_0__init__FieldAccess(EOS(STATIC_4643), i480) :|: TRUE f4643_0__init__FieldAccess(EOS(STATIC_4643), i480) -> f4646_0__init__Load(EOS(STATIC_4646), i480) :|: TRUE f4646_0__init__Load(EOS(STATIC_4646), i480) -> f4648_0__init__Load(EOS(STATIC_4648), i480) :|: TRUE f4648_0__init__Load(EOS(STATIC_4648), i480) -> f4650_0__init__FieldAccess(EOS(STATIC_4650), i480) :|: TRUE f4650_0__init__FieldAccess(EOS(STATIC_4650), i480) -> f4653_0__init__Return(EOS(STATIC_4653), i480) :|: TRUE f4653_0__init__Return(EOS(STATIC_4653), i480) -> f4655_0_mk_Store(EOS(STATIC_4655), i480) :|: TRUE f4655_0_mk_Store(EOS(STATIC_4655), i480) -> f4658_0_mk_JMP(EOS(STATIC_4658), i480) :|: TRUE f4658_0_mk_JMP(EOS(STATIC_4658), i480) -> f4661_0_mk_Load(EOS(STATIC_4661), i480) :|: TRUE f4661_0_mk_Load(EOS(STATIC_4661), i480) -> f4601_0_mk_Load(EOS(STATIC_4601), i480) :|: TRUE f4601_0_mk_Load(EOS(STATIC_4601), i473) -> f4603_0_mk_Inc(EOS(STATIC_4603), i473, i473) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f4603_0_mk_Inc(EOS(STATIC_4603), i473:0, i473:0) -> f4603_0_mk_Inc(EOS(STATIC_4603), i473:0 - 1, i473:0 - 1) :|: i473:0 > 0 Filtered constant ground arguments: f4603_0_mk_Inc(x1, x2, x3) -> f4603_0_mk_Inc(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f4603_0_mk_Inc(x1, x2) -> f4603_0_mk_Inc(x2) Finished conversion. Obtained 1 rules.P rules: f4603_0_mk_Inc(i473:0) -> f4603_0_mk_Inc(i473:0 - 1) :|: i473:0 > 0 ---------------------------------------- (19) Obligation: Rules: f4603_0_mk_Inc(i473:0) -> f4603_0_mk_Inc(i473:0 - 1) :|: i473:0 > 0 ---------------------------------------- (20) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (21) Obligation: Rules: f4603_0_mk_Inc(i473:0) -> f4603_0_mk_Inc(arith) :|: i473:0 > 0 && arith = i473:0 - 1 ---------------------------------------- (22) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f4603_0_mk_Inc(i473:0) -> f4603_0_mk_Inc(arith) :|: i473:0 > 0 && arith = i473:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (23) Obligation: Termination digraph: Nodes: (1) f4603_0_mk_Inc(i473:0) -> f4603_0_mk_Inc(arith) :|: i473:0 > 0 && arith = i473:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f4603_0_mk_Inc(i473:0:0) -> f4603_0_mk_Inc(i473:0:0 - 1) :|: i473:0:0 > 0 ---------------------------------------- (26) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f4603_0_mk_Inc(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (27) Obligation: Rules: f4603_0_mk_Inc(i473:0:0) -> f4603_0_mk_Inc(c) :|: c = i473:0:0 - 1 && i473:0:0 > 0 ---------------------------------------- (28) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f4603_0_mk_Inc ] = f4603_0_mk_Inc_1 The following rules are decreasing: f4603_0_mk_Inc(i473:0:0) -> f4603_0_mk_Inc(c) :|: c = i473:0:0 - 1 && i473:0:0 > 0 The following rules are bounded: f4603_0_mk_Inc(i473:0:0) -> f4603_0_mk_Inc(c) :|: c = i473:0:0 - 1 && i473:0:0 > 0 ---------------------------------------- (29) YES ---------------------------------------- (30) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Test5.main([Ljava/lang/String;)V SCC calls the following helper methods: Test5.length(LList;)I, Test5.test(LList;LList;LList;)V Performed SCC analyses: *Used field analysis yielded the following read fields: *List: [tail] *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (31) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 136 IRulesP rules: f5322_0_main_InvokeMethod(EOS(STATIC_5322), o1400, o1401, o1402, o1400) -> f5323_0_length_ConstantStackPush(EOS(STATIC_5323), o1400, o1400) :|: TRUE f5322_0_main_InvokeMethod(EOS(STATIC_5322), o1400, o1401, o1402, o1400) -> f5323_1_length_ConstantStackPush(EOS(STATIC_5323), o1400, o1401, o1402, o1400) :|: TRUE f5323_0_length_ConstantStackPush(EOS(STATIC_5323), o1400, o1400) -> f5711_0_length_ConstantStackPush(EOS(STATIC_5711), o1400, o1400) :|: TRUE f5325_0_length_Return(EOS(STATIC_5325), o1418, o1401, o1402, i569) -> f5326_0_main_LE(EOS(STATIC_5326), o1418, o1401, o1402, i569) :|: TRUE f5326_0_main_LE(EOS(STATIC_5326), o1418, o1401, o1402, i570) -> f5328_0_main_LE(EOS(STATIC_5328), o1418, o1401, o1402, i570) :|: TRUE f5328_0_main_LE(EOS(STATIC_5328), o1418, o1401, o1402, i570) -> f5330_0_main_Load(EOS(STATIC_5330), o1418, o1401, o1402) :|: i570 > 0 f5330_0_main_Load(EOS(STATIC_5330), o1418, o1401, o1402) -> f5332_0_main_Store(EOS(STATIC_5332), o1401, o1402, o1418) :|: TRUE f5332_0_main_Store(EOS(STATIC_5332), o1401, o1402, o1418) -> f5333_0_main_Load(EOS(STATIC_5333), o1401, o1402, o1418) :|: TRUE f5333_0_main_Load(EOS(STATIC_5333), o1401, o1402, o1418) -> f5334_0_main_Store(EOS(STATIC_5334), o1402, o1418, o1401) :|: TRUE f5334_0_main_Store(EOS(STATIC_5334), o1402, o1418, o1401) -> f5335_0_main_Load(EOS(STATIC_5335), o1401, o1402, o1418) :|: TRUE f5335_0_main_Load(EOS(STATIC_5335), o1401, o1402, o1418) -> f5336_0_main_Store(EOS(STATIC_5336), o1401, o1418, o1402) :|: TRUE f5336_0_main_Store(EOS(STATIC_5336), o1401, o1418, o1402) -> f5337_0_main_Load(EOS(STATIC_5337), o1401, o1402, o1418) :|: TRUE f5337_0_main_Load(EOS(STATIC_5337), o1401, o1402, o1418) -> f5338_0_main_Store(EOS(STATIC_5338), o1401, o1402, o1418, o1418) :|: TRUE f5338_0_main_Store(EOS(STATIC_5338), o1401, o1402, o1418, o1418) -> f5339_0_main_Load(EOS(STATIC_5339), o1401, o1402, o1418, o1418) :|: TRUE f5339_0_main_Load(EOS(STATIC_5339), o1401, o1402, o1418, o1418) -> f5340_0_main_InvokeMethod(EOS(STATIC_5340), o1401, o1402, o1418, o1418, o1402) :|: TRUE f5340_0_main_InvokeMethod(EOS(STATIC_5340), o1401, o1402, o1418, o1418, o1402) -> f5341_0_length_ConstantStackPush(EOS(STATIC_5341), o1402, o1402) :|: TRUE f5340_0_main_InvokeMethod(EOS(STATIC_5340), o1401, o1402, o1418, o1418, o1402) -> f5341_1_length_ConstantStackPush(EOS(STATIC_5341), o1401, o1402, o1418, o1418, o1402) :|: TRUE f5341_0_length_ConstantStackPush(EOS(STATIC_5341), o1402, o1402) -> f5747_0_length_ConstantStackPush(EOS(STATIC_5747), o1402, o1402) :|: TRUE f5343_0_length_Return(EOS(STATIC_5343), o1401, o1423, o1418, o1418, i571) -> f5344_0_main_ConstantStackPush(EOS(STATIC_5344), o1401, o1423, o1418, o1418, i571) :|: TRUE f5344_0_main_ConstantStackPush(EOS(STATIC_5344), o1401, o1423, o1418, o1418, i571) -> f5345_0_main_IntArithmetic(EOS(STATIC_5345), o1401, o1423, o1418, o1418, i571, 3) :|: TRUE f5345_0_main_IntArithmetic(EOS(STATIC_5345), o1401, o1423, o1418, o1418, i571, matching1) -> f5346_0_main_NE(EOS(STATIC_5346), o1401, o1423, o1418, o1418, i571 % 3) :|: TRUE && matching1 = 3 f5346_0_main_NE(EOS(STATIC_5346), o1401, o1423, o1418, o1418, i573) -> f5347_0_main_NE(EOS(STATIC_5347), o1401, o1423, o1418, o1418, i573) :|: TRUE f5346_0_main_NE(EOS(STATIC_5346), o1401, o1423, o1418, o1418, matching1) -> f5348_0_main_NE(EOS(STATIC_5348), o1401, o1423, o1418, o1418, 0) :|: TRUE && matching1 = 0 f5347_0_main_NE(EOS(STATIC_5347), o1401, o1423, o1418, o1418, i573) -> f5349_0_main_Load(EOS(STATIC_5349), o1401, o1423, o1418) :|: i573 > 0 f5349_0_main_Load(EOS(STATIC_5349), o1401, o1423, o1418) -> f5351_0_main_InvokeMethod(EOS(STATIC_5351), o1401, o1423, o1418, o1418) :|: TRUE f5351_0_main_InvokeMethod(EOS(STATIC_5351), o1401, o1423, o1418, o1418) -> f5353_0_length_ConstantStackPush(EOS(STATIC_5353), o1418, o1418) :|: TRUE f5351_0_main_InvokeMethod(EOS(STATIC_5351), o1401, o1423, o1418, o1418) -> f5353_1_length_ConstantStackPush(EOS(STATIC_5353), o1401, o1423, o1418, o1418) :|: TRUE f5353_0_length_ConstantStackPush(EOS(STATIC_5353), o1418, o1418) -> f5773_0_length_ConstantStackPush(EOS(STATIC_5773), o1418, o1418) :|: TRUE f5363_0_length_Return(EOS(STATIC_5363), o1401, o1423, o1430, i574) -> f5365_0_main_ConstantStackPush(EOS(STATIC_5365), o1401, o1423, o1430, i574) :|: TRUE f5365_0_main_ConstantStackPush(EOS(STATIC_5365), o1401, o1423, o1430, i574) -> f5368_0_main_IntArithmetic(EOS(STATIC_5368), o1401, o1423, o1430, i574, 5) :|: TRUE f5368_0_main_IntArithmetic(EOS(STATIC_5368), o1401, o1423, o1430, i574, matching1) -> f5371_0_main_NE(EOS(STATIC_5371), o1401, o1423, o1430, i574 % 5) :|: TRUE && matching1 = 5 f5371_0_main_NE(EOS(STATIC_5371), o1401, o1423, o1430, i576) -> f5373_0_main_NE(EOS(STATIC_5373), o1401, o1423, o1430, i576) :|: TRUE f5371_0_main_NE(EOS(STATIC_5371), o1401, o1423, o1430, matching1) -> f5374_0_main_NE(EOS(STATIC_5374), o1401, o1423, o1430, 0) :|: TRUE && matching1 = 0 f5373_0_main_NE(EOS(STATIC_5373), o1401, o1423, o1430, i576) -> f5377_0_main_Load(EOS(STATIC_5377), o1401, o1423, o1430) :|: i576 > 0 f5377_0_main_Load(EOS(STATIC_5377), o1401, o1423, o1430) -> f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401, o1423, o1430, o1401) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401, o1423, o1430, o1401) -> f5383_0_length_ConstantStackPush(EOS(STATIC_5383), o1401, o1401) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401, o1423, o1430, o1401) -> f5383_1_length_ConstantStackPush(EOS(STATIC_5383), o1401, o1423, o1430, o1401) :|: TRUE f5383_0_length_ConstantStackPush(EOS(STATIC_5383), o1401, o1401) -> f5799_0_length_ConstantStackPush(EOS(STATIC_5799), o1401, o1401) :|: TRUE f5401_0_length_Return(EOS(STATIC_5401), o1461, o1423, o1430, i578) -> f5405_0_main_Load(EOS(STATIC_5405), o1461, o1423, o1430, i578) :|: TRUE f5405_0_main_Load(EOS(STATIC_5405), o1461, o1423, o1430, i578) -> f5409_0_main_InvokeMethod(EOS(STATIC_5409), o1461, o1423, o1430, i578, o1423) :|: TRUE f5409_0_main_InvokeMethod(EOS(STATIC_5409), o1461, o1423, o1430, i578, o1423) -> f5413_0_length_ConstantStackPush(EOS(STATIC_5413), o1423, o1423) :|: TRUE f5409_0_main_InvokeMethod(EOS(STATIC_5409), o1461, o1423, o1430, i578, o1423) -> f5413_1_length_ConstantStackPush(EOS(STATIC_5413), o1461, o1423, o1430, i578, o1423) :|: TRUE f5413_0_length_ConstantStackPush(EOS(STATIC_5413), o1423, o1423) -> f5815_0_length_ConstantStackPush(EOS(STATIC_5815), o1423, o1423) :|: TRUE f5423_0_length_Return(EOS(STATIC_5423), o1461, o1481, o1430, i578, i582) -> f5425_0_main_LE(EOS(STATIC_5425), o1461, o1481, o1430, i578, i582) :|: TRUE f5425_0_main_LE(EOS(STATIC_5425), o1461, o1481, o1430, i578, i582) -> f5427_0_main_LE(EOS(STATIC_5427), o1461, o1481, o1430, i578, i582) :|: i578 <= i582 f5425_0_main_LE(EOS(STATIC_5425), o1461, o1481, o1430, i578, i582) -> f5428_0_main_LE(EOS(STATIC_5428), o1461, o1481, o1430, i578, i582) :|: i578 > i582 f5427_0_main_LE(EOS(STATIC_5427), o1461, o1481, o1430, i578, i582) -> f5430_0_main_Load(EOS(STATIC_5430), o1461, o1481, o1430) :|: i578 <= i582 f5430_0_main_Load(EOS(STATIC_5430), o1461, o1481, o1430) -> f5433_0_main_InvokeMethod(EOS(STATIC_5433), o1461, o1481, o1430, o1461) :|: TRUE f5433_0_main_InvokeMethod(EOS(STATIC_5433), o1461, o1481, o1430, o1461) -> f5436_0_length_ConstantStackPush(EOS(STATIC_5436), o1461, o1461) :|: TRUE f5433_0_main_InvokeMethod(EOS(STATIC_5433), o1461, o1481, o1430, o1461) -> f5436_1_length_ConstantStackPush(EOS(STATIC_5436), o1461, o1481, o1430, o1461) :|: TRUE f5436_0_length_ConstantStackPush(EOS(STATIC_5436), o1461, o1461) -> f5837_0_length_ConstantStackPush(EOS(STATIC_5837), o1461, o1461) :|: TRUE f5451_0_length_Return(EOS(STATIC_5451), o1506, o1481, o1430, i583) -> f5454_0_main_Load(EOS(STATIC_5454), o1506, o1481, o1430, i583) :|: TRUE f5454_0_main_Load(EOS(STATIC_5454), o1506, o1481, o1430, i583) -> f5458_0_main_InvokeMethod(EOS(STATIC_5458), o1506, o1481, o1430, i583, o1481) :|: TRUE f5458_0_main_InvokeMethod(EOS(STATIC_5458), o1506, o1481, o1430, i583, o1481) -> f5461_0_length_ConstantStackPush(EOS(STATIC_5461), o1481, o1481) :|: TRUE f5458_0_main_InvokeMethod(EOS(STATIC_5458), o1506, o1481, o1430, i583, o1481) -> f5461_1_length_ConstantStackPush(EOS(STATIC_5461), o1506, o1481, o1430, i583, o1481) :|: TRUE f5461_0_length_ConstantStackPush(EOS(STATIC_5461), o1481, o1481) -> f5853_0_length_ConstantStackPush(EOS(STATIC_5853), o1481, o1481) :|: TRUE f5471_0_length_Return(EOS(STATIC_5471), o1506, o1520, o1430, i583, i584) -> f5474_0_main_NE(EOS(STATIC_5474), o1506, o1520, o1430, i583, i584) :|: TRUE f5474_0_main_NE(EOS(STATIC_5474), o1506, o1520, o1430, i583, i584) -> f5476_0_main_NE(EOS(STATIC_5476), o1506, o1520, o1430, i583, i584) :|: !(i583 = i584) f5474_0_main_NE(EOS(STATIC_5474), o1506, o1520, o1430, i584, i584) -> f5477_0_main_NE(EOS(STATIC_5477), o1506, o1520, o1430, i584, i584) :|: i583 = i584 f5476_0_main_NE(EOS(STATIC_5476), o1506, o1520, o1430, i583, i584) -> f5479_0_main_Load(EOS(STATIC_5479), o1506, o1520, o1430) :|: !(i583 = i584) f5479_0_main_Load(EOS(STATIC_5479), o1506, o1520, o1430) -> f5482_0_main_InvokeMethod(EOS(STATIC_5482), o1506, o1520, o1430) :|: TRUE f5482_0_main_InvokeMethod(EOS(STATIC_5482), o1506, o1520, java.lang.Object(o1548sub)) -> f5486_0_main_InvokeMethod(EOS(STATIC_5486), o1506, o1520, java.lang.Object(o1548sub)) :|: TRUE f5486_0_main_InvokeMethod(EOS(STATIC_5486), o1506, o1520, java.lang.Object(o1548sub)) -> f5492_0_getTail_Load(EOS(STATIC_5492), o1506, o1520, java.lang.Object(o1548sub)) :|: TRUE f5492_0_getTail_Load(EOS(STATIC_5492), o1506, o1520, java.lang.Object(o1548sub)) -> f5499_0_getTail_FieldAccess(EOS(STATIC_5499), o1506, o1520, java.lang.Object(o1548sub)) :|: TRUE f5499_0_getTail_FieldAccess(EOS(STATIC_5499), o1506, o1520, java.lang.Object(List(EOC, o1593))) -> f5504_0_getTail_FieldAccess(EOS(STATIC_5504), o1506, o1520, java.lang.Object(List(EOC, o1593))) :|: TRUE f5504_0_getTail_FieldAccess(EOS(STATIC_5504), o1506, o1520, java.lang.Object(List(EOC, o1593))) -> f5509_0_getTail_Return(EOS(STATIC_5509), o1506, o1520, o1593) :|: TRUE f5509_0_getTail_Return(EOS(STATIC_5509), o1506, o1520, o1593) -> f5512_0_main_Store(EOS(STATIC_5512), o1506, o1520, o1593) :|: TRUE f5512_0_main_Store(EOS(STATIC_5512), o1506, o1520, o1593) -> f5517_0_main_Load(EOS(STATIC_5517), o1506, o1520, o1593) :|: TRUE f5517_0_main_Load(EOS(STATIC_5517), o1506, o1520, o1593) -> f5462_0_main_Load(EOS(STATIC_5462), o1506, o1520, o1593) :|: TRUE f5462_0_main_Load(EOS(STATIC_5462), o1509, o1481, o1430) -> f5464_0_main_Load(EOS(STATIC_5464), o1509, o1481, o1430, o1509) :|: TRUE f5464_0_main_Load(EOS(STATIC_5464), o1509, o1481, o1430, o1509) -> f5466_0_main_Load(EOS(STATIC_5466), o1509, o1481, o1430, o1509, o1481) :|: TRUE f5466_0_main_Load(EOS(STATIC_5466), o1509, o1481, o1430, o1509, o1481) -> f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509, o1481, o1430, o1509, o1481, o1430) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509, o1481, o1430, o1509, o1481, o1430) -> f5469_0_test_Load(EOS(STATIC_5469), o1509, o1481, o1430, o1509, o1481, o1430) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509, o1481, o1430, o1509, o1481, o1430) -> f5469_1_test_Load(EOS(STATIC_5469), o1509, o1481, o1430, o1509, o1481, o1430) :|: TRUE f5469_0_test_Load(EOS(STATIC_5469), o1509, o1481, o1430, o1509, o1481, o1430) -> f5897_0_test_Load(EOS(STATIC_5897), o1509, o1481, o1430, o1509, o1481, o1430) :|: TRUE f5484_0_test_Return(EOS(STATIC_5484), o1543, o1541, o1539) -> f5490_0_main_JMP(EOS(STATIC_5490), o1543, o1541, o1539) :|: TRUE f5490_0_main_JMP(EOS(STATIC_5490), o1543, o1541, o1539) -> f5496_0_main_Load(EOS(STATIC_5496), o1543, o1541, o1539) :|: TRUE f5496_0_main_Load(EOS(STATIC_5496), o1543, o1541, o1539) -> f5320_0_main_Load(EOS(STATIC_5320), o1543, o1541, o1539) :|: TRUE f5320_0_main_Load(EOS(STATIC_5320), o1400, o1401, o1402) -> f5322_0_main_InvokeMethod(EOS(STATIC_5322), o1400, o1401, o1402, o1400) :|: TRUE f5477_0_main_NE(EOS(STATIC_5477), o1506, o1520, o1430, i584, i584) -> f5480_0_main_Load(EOS(STATIC_5480), o1506, o1520, o1430) :|: TRUE f5480_0_main_Load(EOS(STATIC_5480), o1506, o1520, o1430) -> f5483_0_main_InvokeMethod(EOS(STATIC_5483), o1506, o1430, o1520) :|: TRUE f5483_0_main_InvokeMethod(EOS(STATIC_5483), o1506, o1430, java.lang.Object(o1549sub)) -> f5488_0_main_InvokeMethod(EOS(STATIC_5488), o1506, o1430, java.lang.Object(o1549sub)) :|: TRUE f5488_0_main_InvokeMethod(EOS(STATIC_5488), o1506, o1430, java.lang.Object(o1549sub)) -> f5494_0_getTail_Load(EOS(STATIC_5494), o1506, o1430, java.lang.Object(o1549sub)) :|: TRUE f5494_0_getTail_Load(EOS(STATIC_5494), o1506, o1430, java.lang.Object(o1549sub)) -> f5501_0_getTail_FieldAccess(EOS(STATIC_5501), o1506, o1430, java.lang.Object(o1549sub)) :|: TRUE f5501_0_getTail_FieldAccess(EOS(STATIC_5501), o1506, o1430, java.lang.Object(List(EOC, o1596))) -> f5506_0_getTail_FieldAccess(EOS(STATIC_5506), o1506, o1430, java.lang.Object(List(EOC, o1596))) :|: TRUE f5506_0_getTail_FieldAccess(EOS(STATIC_5506), o1506, o1430, java.lang.Object(List(EOC, o1596))) -> f5510_0_getTail_Return(EOS(STATIC_5510), o1506, o1430, o1596) :|: TRUE f5510_0_getTail_Return(EOS(STATIC_5510), o1506, o1430, o1596) -> f5514_0_main_Store(EOS(STATIC_5514), o1506, o1430, o1596) :|: TRUE f5514_0_main_Store(EOS(STATIC_5514), o1506, o1430, o1596) -> f5519_0_main_JMP(EOS(STATIC_5519), o1506, o1596, o1430) :|: TRUE f5519_0_main_JMP(EOS(STATIC_5519), o1506, o1596, o1430) -> f5521_0_main_Load(EOS(STATIC_5521), o1506, o1596, o1430) :|: TRUE f5521_0_main_Load(EOS(STATIC_5521), o1506, o1596, o1430) -> f5462_0_main_Load(EOS(STATIC_5462), o1506, o1596, o1430) :|: TRUE f5428_0_main_LE(EOS(STATIC_5428), o1461, o1481, o1430, i578, i582) -> f5431_0_main_Load(EOS(STATIC_5431), o1461, o1481, o1430) :|: i578 > i582 f5431_0_main_Load(EOS(STATIC_5431), o1461, o1481, o1430) -> f5434_0_main_InvokeMethod(EOS(STATIC_5434), o1481, o1430, o1461) :|: TRUE f5434_0_main_InvokeMethod(EOS(STATIC_5434), o1481, o1430, java.lang.Object(o1488sub)) -> f5437_0_main_InvokeMethod(EOS(STATIC_5437), o1481, o1430, java.lang.Object(o1488sub)) :|: TRUE f5437_0_main_InvokeMethod(EOS(STATIC_5437), o1481, o1430, java.lang.Object(o1488sub)) -> f5441_0_getTail_Load(EOS(STATIC_5441), o1481, o1430, java.lang.Object(o1488sub)) :|: TRUE f5441_0_getTail_Load(EOS(STATIC_5441), o1481, o1430, java.lang.Object(o1488sub)) -> f5445_0_getTail_FieldAccess(EOS(STATIC_5445), o1481, o1430, java.lang.Object(o1488sub)) :|: TRUE f5445_0_getTail_FieldAccess(EOS(STATIC_5445), o1481, o1430, java.lang.Object(List(EOC, o1509))) -> f5448_0_getTail_FieldAccess(EOS(STATIC_5448), o1481, o1430, java.lang.Object(List(EOC, o1509))) :|: TRUE f5448_0_getTail_FieldAccess(EOS(STATIC_5448), o1481, o1430, java.lang.Object(List(EOC, o1509))) -> f5452_0_getTail_Return(EOS(STATIC_5452), o1481, o1430, o1509) :|: TRUE f5452_0_getTail_Return(EOS(STATIC_5452), o1481, o1430, o1509) -> f5455_0_main_Store(EOS(STATIC_5455), o1481, o1430, o1509) :|: TRUE f5455_0_main_Store(EOS(STATIC_5455), o1481, o1430, o1509) -> f5459_0_main_JMP(EOS(STATIC_5459), o1509, o1481, o1430) :|: TRUE f5459_0_main_JMP(EOS(STATIC_5459), o1509, o1481, o1430) -> f5462_0_main_Load(EOS(STATIC_5462), o1509, o1481, o1430) :|: TRUE f5374_0_main_NE(EOS(STATIC_5374), o1401, o1423, o1430, matching1) -> f5378_0_main_Load(EOS(STATIC_5378), o1401, o1423, o1430) :|: TRUE && matching1 = 0 f5378_0_main_Load(EOS(STATIC_5378), o1401, o1423, o1430) -> f5382_0_main_InvokeMethod(EOS(STATIC_5382), o1401, o1423, o1430) :|: TRUE f5382_0_main_InvokeMethod(EOS(STATIC_5382), o1401, o1423, java.lang.Object(o1440sub)) -> f5384_0_main_InvokeMethod(EOS(STATIC_5384), o1401, o1423, java.lang.Object(o1440sub)) :|: TRUE f5384_0_main_InvokeMethod(EOS(STATIC_5384), o1401, o1423, java.lang.Object(o1440sub)) -> f5388_0_getTail_Load(EOS(STATIC_5388), o1401, o1423, java.lang.Object(o1440sub)) :|: TRUE f5388_0_getTail_Load(EOS(STATIC_5388), o1401, o1423, java.lang.Object(o1440sub)) -> f5393_0_getTail_FieldAccess(EOS(STATIC_5393), o1401, o1423, java.lang.Object(o1440sub)) :|: TRUE f5393_0_getTail_FieldAccess(EOS(STATIC_5393), o1401, o1423, java.lang.Object(List(EOC, o1464))) -> f5397_0_getTail_FieldAccess(EOS(STATIC_5397), o1401, o1423, java.lang.Object(List(EOC, o1464))) :|: TRUE f5397_0_getTail_FieldAccess(EOS(STATIC_5397), o1401, o1423, java.lang.Object(List(EOC, o1464))) -> f5402_0_getTail_Return(EOS(STATIC_5402), o1401, o1423, o1464) :|: TRUE f5402_0_getTail_Return(EOS(STATIC_5402), o1401, o1423, o1464) -> f5406_0_main_Store(EOS(STATIC_5406), o1401, o1423, o1464) :|: TRUE f5406_0_main_Store(EOS(STATIC_5406), o1401, o1423, o1464) -> f5410_0_main_Load(EOS(STATIC_5410), o1401, o1423, o1464) :|: TRUE f5410_0_main_Load(EOS(STATIC_5410), o1401, o1423, o1464) -> f5377_0_main_Load(EOS(STATIC_5377), o1401, o1423, o1464) :|: TRUE f5348_0_main_NE(EOS(STATIC_5348), o1401, o1423, o1418, o1418, matching1) -> f5350_0_main_Load(EOS(STATIC_5350), o1401, o1423, o1418, o1418) :|: TRUE && matching1 = 0 f5350_0_main_Load(EOS(STATIC_5350), o1401, o1423, o1418, o1418) -> f5352_0_main_InvokeMethod(EOS(STATIC_5352), o1401, o1423, o1418, o1418) :|: TRUE f5352_0_main_InvokeMethod(EOS(STATIC_5352), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) -> f5354_0_main_InvokeMethod(EOS(STATIC_5354), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) :|: TRUE f5354_0_main_InvokeMethod(EOS(STATIC_5354), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) -> f5357_0_getTail_Load(EOS(STATIC_5357), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) :|: TRUE f5357_0_getTail_Load(EOS(STATIC_5357), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) -> f5359_0_getTail_FieldAccess(EOS(STATIC_5359), o1401, o1423, java.lang.Object(o1424sub), java.lang.Object(o1424sub)) :|: TRUE f5359_0_getTail_FieldAccess(EOS(STATIC_5359), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5361_0_getTail_FieldAccess(EOS(STATIC_5361), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) :|: TRUE f5361_0_getTail_FieldAccess(EOS(STATIC_5361), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5364_0_getTail_Return(EOS(STATIC_5364), o1401, o1423, java.lang.Object(List(EOC, o1433))) :|: TRUE f5364_0_getTail_Return(EOS(STATIC_5364), o1401, o1423, java.lang.Object(List(EOC, o1433))) -> f5366_0_main_Store(EOS(STATIC_5366), o1401, o1423, java.lang.Object(List(EOC, o1433))) :|: TRUE f5366_0_main_Store(EOS(STATIC_5366), o1401, o1423, java.lang.Object(List(EOC, o1433))) -> f5369_0_main_Load(EOS(STATIC_5369), o1401, o1423, java.lang.Object(List(EOC, o1433))) :|: TRUE f5369_0_main_Load(EOS(STATIC_5369), o1401, o1423, java.lang.Object(List(EOC, o1433))) -> f5372_0_main_InvokeMethod(EOS(STATIC_5372), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) :|: TRUE f5372_0_main_InvokeMethod(EOS(STATIC_5372), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5375_0_length_ConstantStackPush(EOS(STATIC_5375), java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) :|: TRUE f5372_0_main_InvokeMethod(EOS(STATIC_5372), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5375_1_length_ConstantStackPush(EOS(STATIC_5375), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) :|: TRUE f5375_0_length_ConstantStackPush(EOS(STATIC_5375), java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5999_0_length_ConstantStackPush(EOS(STATIC_5999), java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) :|: TRUE f5391_0_length_Return(EOS(STATIC_5391), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577) -> f5395_0_main_ConstantStackPush(EOS(STATIC_5395), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577) :|: TRUE f5395_0_main_ConstantStackPush(EOS(STATIC_5395), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577) -> f5399_0_main_IntArithmetic(EOS(STATIC_5399), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577, 5) :|: TRUE f5399_0_main_IntArithmetic(EOS(STATIC_5399), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577, matching1) -> f5403_0_main_NE(EOS(STATIC_5403), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577 % 5) :|: TRUE && matching1 = 5 f5403_0_main_NE(EOS(STATIC_5403), o1401, o1423, java.lang.Object(List(EOC, o1433)), i579) -> f5371_0_main_NE(EOS(STATIC_5371), o1401, o1423, java.lang.Object(List(EOC, o1433)), i579) :|: TRUE f5323_1_length_ConstantStackPush(EOS(STATIC_5323), o1418, o1401, o1402, o1418) -> f5325_0_length_Return(EOS(STATIC_5325), o1418, o1401, o1402, i569) :|: TRUE f5341_1_length_ConstantStackPush(EOS(STATIC_5341), o1401, o1423, o1418, o1418, o1423) -> f5343_0_length_Return(EOS(STATIC_5343), o1401, o1423, o1418, o1418, i571) :|: TRUE f5353_1_length_ConstantStackPush(EOS(STATIC_5353), o1401, o1423, o1430, o1430) -> f5363_0_length_Return(EOS(STATIC_5363), o1401, o1423, o1430, i574) :|: TRUE f5383_1_length_ConstantStackPush(EOS(STATIC_5383), o1461, o1423, o1430, o1461) -> f5401_0_length_Return(EOS(STATIC_5401), o1461, o1423, o1430, i578) :|: TRUE f5413_1_length_ConstantStackPush(EOS(STATIC_5413), o1461, o1481, o1430, i578, o1481) -> f5423_0_length_Return(EOS(STATIC_5423), o1461, o1481, o1430, i578, i582) :|: TRUE f5436_1_length_ConstantStackPush(EOS(STATIC_5436), o1506, o1481, o1430, o1506) -> f5451_0_length_Return(EOS(STATIC_5451), o1506, o1481, o1430, i583) :|: TRUE f5461_1_length_ConstantStackPush(EOS(STATIC_5461), o1506, o1520, o1430, i583, o1520) -> f5471_0_length_Return(EOS(STATIC_5471), o1506, o1520, o1430, i583, i584) :|: TRUE f5469_1_test_Load(EOS(STATIC_5469), o1543, o1541, o1539, o1543, o1541, o1539) -> f5484_0_test_Return(EOS(STATIC_5484), o1543, o1541, o1539) :|: TRUE f5375_1_length_ConstantStackPush(EOS(STATIC_5375), o1401, o1423, java.lang.Object(List(EOC, o1433)), java.lang.Object(List(EOC, o1433))) -> f5391_0_length_Return(EOS(STATIC_5391), o1401, o1423, java.lang.Object(List(EOC, o1433)), i577) :|: TRUE Combined rules. Obtained 18 IRulesP rules: f5371_0_main_NE(EOS(STATIC_5371), o1401:0, o1423:0, java.lang.Object(List(EOC, o1464:0)), 0) -> f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1464:0, o1401:0) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0, java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(EOS(STATIC_5468), java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0, java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod'(EOS(STATIC_5468), java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0, java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0) -> f5371_0_main_NE(EOS(STATIC_5371), o1481:0, o1430:0, java.lang.Object(List(EOC, o1433:0)), i577:0 - 5 * div) :|: i571:0 - 3 * div1 = 0 && i569:0 > 0 && i577:0 - 5 * div > -5 && i577:0 - 5 * div < 5 && i571:0 - 3 * div1 < 3 && i571:0 - 3 * div1 > -3 f5468_0_main_InvokeMethod'(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5371_0_main_NE(EOS(STATIC_5371), o1481:0, o1430:0, o1509:0, i574:0 - 5 * div) :|: i571:0 - 3 * div1 > 0 && i569:0 > 0 && i574:0 - 5 * div > -5 && i571:0 - 3 * div1 < 3 && i574:0 - 5 * div < 5 f5371_0_main_NE(EOS(STATIC_5371), o1401:0, o1423:0, o1430:0, i576:0) -> f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1430:0, o1401:0) :|: i576:0 > 0 f5381_0_main_InvokeMethod(EOS(STATIC_5381), java.lang.Object(List(EOC, o1509:0)), o1423:0, o1430:0, java.lang.Object(List(EOC, o1509:0))) -> f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509:0, o1423:0, o1430:0, o1509:0, o1423:0, o1430:0) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, java.lang.Object(List(EOC, o1596:0)), o1430:0, o1401:0) -> f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1401:0, o1596:0, o1430:0, o1401:0, o1596:0, o1430:0) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, java.lang.Object(List(EOC, o1593:0)), o1401:0) -> f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1401:0, o1423:0, o1593:0, o1401:0, o1423:0, o1593:0) :|: TRUE Removed following non-SCC rules: f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1430:0, o1401:0) -> f5853_0_length_ConstantStackPush(EOS(STATIC_5853), o1423:0, o1423:0) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1430:0, o1401:0) -> f5815_0_length_ConstantStackPush(EOS(STATIC_5815), o1423:0, o1423:0) :|: TRUE f5468_0_main_InvokeMethod'(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5773_0_length_ConstantStackPush(EOS(STATIC_5773), o1509:0, o1509:0) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5747_0_length_ConstantStackPush(EOS(STATIC_5747), o1430:0, o1430:0) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1430:0, o1401:0) -> f5837_0_length_ConstantStackPush(EOS(STATIC_5837), o1401:0, o1401:0) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5897_0_test_Load(EOS(STATIC_5897), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod(EOS(STATIC_5468), o1509:0, o1481:0, o1430:0, o1509:0, o1481:0, o1430:0) -> f5711_0_length_ConstantStackPush(EOS(STATIC_5711), o1509:0, o1509:0) :|: TRUE f5468_0_main_InvokeMethod'(EOS(STATIC_5468), java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0, java.lang.Object(List(EOC, o1433:0)), o1481:0, o1430:0) -> f5999_0_length_ConstantStackPush(EOS(STATIC_5999), java.lang.Object(List(EOC, o1433:0)), java.lang.Object(List(EOC, o1433:0))) :|: TRUE f5381_0_main_InvokeMethod(EOS(STATIC_5381), o1401:0, o1423:0, o1430:0, o1401:0) -> f5799_0_length_ConstantStackPush(EOS(STATIC_5799), o1401:0, o1401:0) :|: TRUE Filtered constant ground arguments: f5371_0_main_NE(x1, x2, x3, x4, x5) -> f5371_0_main_NE(x2, x3, x4, x5) f5381_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f5381_0_main_InvokeMethod(x2, x3, x4, x5) f5468_0_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) -> f5468_0_main_InvokeMethod(x2, x3, x4, x5, x6, x7) f5468_0_main_InvokeMethod'(x1, x2, x3, x4, x5, x6, x7) -> f5468_0_main_InvokeMethod'(x2, x3, x4, x5, x6, x7) List(x1, x2) -> List(x2) Filtered duplicate arguments: f5381_0_main_InvokeMethod(x1, x2, x3, x4) -> f5381_0_main_InvokeMethod(x2, x3, x4) f5468_0_main_InvokeMethod(x1, x2, x3, x4, x5, x6) -> f5468_0_main_InvokeMethod(x4, x5, x6) f5468_0_main_InvokeMethod'(x1, x2, x3, x4, x5, x6) -> f5468_0_main_InvokeMethod'(x4, x5, x6) Finished conversion. Obtained 9 rules.P rules: f5371_0_main_NE(o1401:0, o1423:0, java.lang.Object(List(o1464:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0, o1464:0, o1401:0) :|: TRUE && cons_0 = 0 f5468_0_main_InvokeMethod(o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod(java.lang.Object(List(o1433:0)), o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(o1433:0)), o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod'(java.lang.Object(List(o1433:0)), o1481:0, o1430:0) -> f5371_0_main_NE(o1481:0, o1430:0, java.lang.Object(List(o1433:0)), i577:0 - 5 * div) :|: i569:0 > 0 && i571:0 - 3 * div1 = 0 && i577:0 - 5 * div > -5 && i577:0 - 5 * div < 5 && i571:0 - 3 * div1 > -3 && i571:0 - 3 * div1 < 3 f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) -> f5371_0_main_NE(o1481:0, o1430:0, o1509:0, i574:0 - 5 * div) :|: i569:0 > 0 && i571:0 - 3 * div1 > 0 && i574:0 - 5 * div > -5 && i574:0 - 5 * div < 5 && i571:0 - 3 * div1 < 3 f5371_0_main_NE(o1401:0, o1423:0, o1430:0, i576:0) -> f5381_0_main_InvokeMethod(o1423:0, o1430:0, o1401:0) :|: i576:0 > 0 f5381_0_main_InvokeMethod(o1423:0, o1430:0, java.lang.Object(List(o1509:0))) -> f5468_0_main_InvokeMethod(o1509:0, o1423:0, o1430:0) :|: TRUE f5381_0_main_InvokeMethod(java.lang.Object(List(o1596:0)), o1430:0, o1401:0) -> f5468_0_main_InvokeMethod(o1401:0, o1596:0, o1430:0) :|: TRUE f5381_0_main_InvokeMethod(o1423:0, java.lang.Object(List(o1593:0)), o1401:0) -> f5468_0_main_InvokeMethod(o1401:0, o1423:0, o1593:0) :|: TRUE ---------------------------------------- (32) Obligation: Rules: f5371_0_main_NE(o1401:0, o1423:0, java.lang.Object(List(o1464:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0, o1464:0, o1401:0) :|: TRUE && cons_0 = 0 f5468_0_main_InvokeMethod(o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod(java.lang.Object(List(x)), x1, x2) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) :|: TRUE f5468_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) -> f5371_0_main_NE(x4, x5, java.lang.Object(List(x3)), x6 - 5 * x7) :|: x8 > 0 && x9 - 3 * x10 = 0 && x6 - 5 * x7 > -5 && x6 - 5 * x7 < 5 && x9 - 3 * x10 > -3 && x9 - 3 * x10 < 3 f5468_0_main_InvokeMethod'(x11, x12, x13) -> f5371_0_main_NE(x12, x13, x11, x14 - 5 * x15) :|: x16 > 0 && x17 - 3 * x18 > 0 && x14 - 5 * x15 > -5 && x14 - 5 * x15 < 5 && x17 - 3 * x18 < 3 f5371_0_main_NE(x19, x20, x21, x22) -> f5381_0_main_InvokeMethod(x20, x21, x19) :|: x22 > 0 f5381_0_main_InvokeMethod(x23, x24, java.lang.Object(List(x25))) -> f5468_0_main_InvokeMethod(x25, x23, x24) :|: TRUE f5381_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5468_0_main_InvokeMethod(x28, x26, x27) :|: TRUE f5381_0_main_InvokeMethod(x29, java.lang.Object(List(x30)), x31) -> f5468_0_main_InvokeMethod(x31, x29, x30) :|: TRUE ---------------------------------------- (33) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (34) Obligation: Rules: f5371_0_main_NE(o1401:0, o1423:0, java.lang.Object(List(o1464:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0, o1464:0, o1401:0) :|: TRUE && cons_0 = 0 f5468_0_main_InvokeMethod(o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) :|: TRUE f5468_0_main_InvokeMethod(java.lang.Object(List(x)), x1, x2) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) :|: TRUE f5468_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) -> f5371_0_main_NE(x4, x5, java.lang.Object(List(x3)), arith) :|: x8 > 0 && x9 - 3 * x10 = 0 && x6 - 5 * x7 > -5 && x6 - 5 * x7 < 5 && x9 - 3 * x10 > -3 && x9 - 3 * x10 < 3 && arith = x6 - 5 * x7 f5468_0_main_InvokeMethod'(x32, x33, x34) -> f5371_0_main_NE(x33, x34, x32, x35) :|: x36 > 0 && x37 - 3 * x38 > 0 && x39 - 5 * x40 > -5 && x39 - 5 * x40 < 5 && x37 - 3 * x38 < 3 && x35 = x39 - 5 * x40 f5371_0_main_NE(x19, x20, x21, x22) -> f5381_0_main_InvokeMethod(x20, x21, x19) :|: x22 > 0 f5381_0_main_InvokeMethod(x23, x24, java.lang.Object(List(x25))) -> f5468_0_main_InvokeMethod(x25, x23, x24) :|: TRUE f5381_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5468_0_main_InvokeMethod(x28, x26, x27) :|: TRUE f5381_0_main_InvokeMethod(x29, java.lang.Object(List(x30)), x31) -> f5468_0_main_InvokeMethod(x31, x29, x30) :|: TRUE ---------------------------------------- (35) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5371_0_main_NE(o1401:0, o1423:0, java.lang.Object(List(o1464:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0, o1464:0, o1401:0) :|: TRUE && cons_0 = 0 (2) f5468_0_main_InvokeMethod(o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) :|: TRUE (3) f5468_0_main_InvokeMethod(java.lang.Object(List(x)), x1, x2) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) :|: TRUE (4) f5468_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) -> f5371_0_main_NE(x4, x5, java.lang.Object(List(x3)), arith) :|: x8 > 0 && x9 - 3 * x10 = 0 && x6 - 5 * x7 > -5 && x6 - 5 * x7 < 5 && x9 - 3 * x10 > -3 && x9 - 3 * x10 < 3 && arith = x6 - 5 * x7 (5) f5468_0_main_InvokeMethod'(x32, x33, x34) -> f5371_0_main_NE(x33, x34, x32, x35) :|: x36 > 0 && x37 - 3 * x38 > 0 && x39 - 5 * x40 > -5 && x39 - 5 * x40 < 5 && x37 - 3 * x38 < 3 && x35 = x39 - 5 * x40 (6) f5371_0_main_NE(x19, x20, x21, x22) -> f5381_0_main_InvokeMethod(x20, x21, x19) :|: x22 > 0 (7) f5381_0_main_InvokeMethod(x23, x24, java.lang.Object(List(x25))) -> f5468_0_main_InvokeMethod(x25, x23, x24) :|: TRUE (8) f5381_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5468_0_main_InvokeMethod(x28, x26, x27) :|: TRUE (9) f5381_0_main_InvokeMethod(x29, java.lang.Object(List(x30)), x31) -> f5468_0_main_InvokeMethod(x31, x29, x30) :|: TRUE Arcs: (1) -> (7), (8), (9) (2) -> (4), (5) (3) -> (4), (5) (4) -> (1), (6) (5) -> (1), (6) (6) -> (7), (8), (9) (7) -> (2), (3) (8) -> (2), (3) (9) -> (2), (3) This digraph is fully evaluated! ---------------------------------------- (36) Obligation: Termination digraph: Nodes: (1) f5371_0_main_NE(o1401:0, o1423:0, java.lang.Object(List(o1464:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0, o1464:0, o1401:0) :|: TRUE && cons_0 = 0 (2) f5468_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) -> f5371_0_main_NE(x4, x5, java.lang.Object(List(x3)), arith) :|: x8 > 0 && x9 - 3 * x10 = 0 && x6 - 5 * x7 > -5 && x6 - 5 * x7 < 5 && x9 - 3 * x10 > -3 && x9 - 3 * x10 < 3 && arith = x6 - 5 * x7 (3) f5468_0_main_InvokeMethod(o1509:0, o1481:0, o1430:0) -> f5468_0_main_InvokeMethod'(o1509:0, o1481:0, o1430:0) :|: TRUE (4) f5381_0_main_InvokeMethod(x23, x24, java.lang.Object(List(x25))) -> f5468_0_main_InvokeMethod(x25, x23, x24) :|: TRUE (5) f5371_0_main_NE(x19, x20, x21, x22) -> f5381_0_main_InvokeMethod(x20, x21, x19) :|: x22 > 0 (6) f5468_0_main_InvokeMethod'(x32, x33, x34) -> f5371_0_main_NE(x33, x34, x32, x35) :|: x36 > 0 && x37 - 3 * x38 > 0 && x39 - 5 * x40 > -5 && x39 - 5 * x40 < 5 && x37 - 3 * x38 < 3 && x35 = x39 - 5 * x40 (7) f5468_0_main_InvokeMethod(java.lang.Object(List(x)), x1, x2) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x)), x1, x2) :|: TRUE (8) f5381_0_main_InvokeMethod(x29, java.lang.Object(List(x30)), x31) -> f5468_0_main_InvokeMethod(x31, x29, x30) :|: TRUE (9) f5381_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5468_0_main_InvokeMethod(x28, x26, x27) :|: TRUE Arcs: (1) -> (4), (8), (9) (2) -> (1), (5) (3) -> (2), (6) (4) -> (3), (7) (5) -> (4), (8), (9) (6) -> (1), (5) (7) -> (2), (6) (8) -> (3), (7) (9) -> (3), (7) This digraph is fully evaluated! ---------------------------------------- (37) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (38) Obligation: Rules: f5468_0_main_InvokeMethod(java.lang.Object(List(x:0)), x1:0, x2:0) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x:0)), x1:0, x2:0) :|: TRUE f5381_0_main_InvokeMethod(x29:0, java.lang.Object(List(x30:0)), x31:0) -> f5468_0_main_InvokeMethod(x31:0, x29:0, x30:0) :|: TRUE f5468_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5371_0_main_NE(x4:0, x5:0, java.lang.Object(List(x3:0)), x6:0 - 5 * x7:0) :|: x9:0 - 3 * x10:0 > -3 && x9:0 - 3 * x10:0 < 3 && x6:0 - 5 * x7:0 < 5 && x6:0 - 5 * x7:0 > -5 && x9:0 - 3 * x10:0 = 0 && x8:0 > 0 f5381_0_main_InvokeMethod(x23:0, x24:0, java.lang.Object(List(x25:0))) -> f5468_0_main_InvokeMethod(x25:0, x23:0, x24:0) :|: TRUE f5468_0_main_InvokeMethod(o1509:0:0, o1481:0:0, o1430:0:0) -> f5468_0_main_InvokeMethod'(o1509:0:0, o1481:0:0, o1430:0:0) :|: TRUE f5468_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5371_0_main_NE(x33:0, x34:0, x32:0, x39:0 - 5 * x40:0) :|: x39:0 - 5 * x40:0 < 5 && x37:0 - 3 * x38:0 < 3 && x39:0 - 5 * x40:0 > -5 && x37:0 - 3 * x38:0 > 0 && x36:0 > 0 f5371_0_main_NE(x19:0, x20:0, x21:0, x22:0) -> f5381_0_main_InvokeMethod(x20:0, x21:0, x19:0) :|: x22:0 > 0 f5371_0_main_NE(o1401:0:0, o1423:0:0, java.lang.Object(List(o1464:0:0)), cons_0) -> f5381_0_main_InvokeMethod(o1423:0:0, o1464:0:0, o1401:0:0) :|: TRUE && cons_0 = 0 f5381_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5468_0_main_InvokeMethod(x28:0, x26:0, x27:0) :|: TRUE ---------------------------------------- (39) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5468_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) java.lang.Object(VARIABLE) List(VARIABLE) f5468_0_main_InvokeMethod'(VARIABLE, VARIABLE, VARIABLE) f5381_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) f5371_0_main_NE(VARIABLE, VARIABLE, VARIABLE, INTEGER) Removed predefined arithmetic. ---------------------------------------- (40) Obligation: Rules: f5468_0_main_InvokeMethod(java.lang.Object(List(x:0)), x1:0, x2:0) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x:0)), x1:0, x2:0) f5381_0_main_InvokeMethod(x29:0, java.lang.Object(List(x30:0)), x31:0) -> f5468_0_main_InvokeMethod(x31:0, x29:0, x30:0) f5468_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5371_0_main_NE(x4:0, x5:0, java.lang.Object(List(x3:0))) f5381_0_main_InvokeMethod(x23:0, x24:0, java.lang.Object(List(x25:0))) -> f5468_0_main_InvokeMethod(x25:0, x23:0, x24:0) f5468_0_main_InvokeMethod(o1509:0:0, o1481:0:0, o1430:0:0) -> f5468_0_main_InvokeMethod'(o1509:0:0, o1481:0:0, o1430:0:0) f5468_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5371_0_main_NE(x33:0, x34:0, x32:0) f5371_0_main_NE(x19:0, x20:0, x21:0) -> f5381_0_main_InvokeMethod(x20:0, x21:0, x19:0) f5371_0_main_NE(o1401:0:0, o1423:0:0, java.lang.Object(List(o1464:0:0))) -> f5381_0_main_InvokeMethod(o1423:0:0, o1464:0:0, o1401:0:0) f5381_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5468_0_main_InvokeMethod(x28:0, x26:0, x27:0) ---------------------------------------- (41) IRSwTToQDPProof (SOUND) Removed the integers and created a QDP-Problem. ---------------------------------------- (42) Obligation: Q DP problem: The TRS P consists of the following rules: f5468_0_main_InvokeMethod(java.lang.Object(List(x:0)), x1:0, x2:0) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x:0)), x1:0, x2:0) f5381_0_main_InvokeMethod(x29:0, java.lang.Object(List(x30:0)), x31:0) -> f5468_0_main_InvokeMethod(x31:0, x29:0, x30:0) f5468_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5371_0_main_NE(x4:0, x5:0, java.lang.Object(List(x3:0))) f5381_0_main_InvokeMethod(x23:0, x24:0, java.lang.Object(List(x25:0))) -> f5468_0_main_InvokeMethod(x25:0, x23:0, x24:0) f5468_0_main_InvokeMethod(o1509:0:0, o1481:0:0, o1430:0:0) -> f5468_0_main_InvokeMethod'(o1509:0:0, o1481:0:0, o1430:0:0) f5468_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5371_0_main_NE(x33:0, x34:0, x32:0) f5371_0_main_NE(x19:0, x20:0, x21:0) -> f5381_0_main_InvokeMethod(x20:0, x21:0, x19:0) f5371_0_main_NE(o1401:0:0, o1423:0:0, java.lang.Object(List(o1464:0:0))) -> f5381_0_main_InvokeMethod(o1423:0:0, o1464:0:0, o1401:0:0) f5381_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5468_0_main_InvokeMethod(x28:0, x26:0, x27:0) R is empty. Q is empty. We have to consider all (P,Q,R)-chains. ---------------------------------------- (43) 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: *f5468_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5371_0_main_NE(x4:0, x5:0, java.lang.Object(List(x3:0))) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 *f5468_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5371_0_main_NE(x33:0, x34:0, x32:0) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 *f5381_0_main_InvokeMethod(x29:0, java.lang.Object(List(x30:0)), x31:0) -> f5468_0_main_InvokeMethod(x31:0, x29:0, x30:0) The graph contains the following edges 3 >= 1, 1 >= 2, 2 > 3 *f5381_0_main_InvokeMethod(x23:0, x24:0, java.lang.Object(List(x25:0))) -> f5468_0_main_InvokeMethod(x25:0, x23:0, x24:0) The graph contains the following edges 3 > 1, 1 >= 2, 2 >= 3 *f5381_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5468_0_main_InvokeMethod(x28:0, x26:0, x27:0) The graph contains the following edges 3 >= 1, 1 > 2, 2 >= 3 *f5468_0_main_InvokeMethod(java.lang.Object(List(x:0)), x1:0, x2:0) -> f5468_0_main_InvokeMethod'(java.lang.Object(List(x:0)), x1:0, x2:0) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f5468_0_main_InvokeMethod(o1509:0:0, o1481:0:0, o1430:0:0) -> f5468_0_main_InvokeMethod'(o1509:0:0, o1481:0:0, o1430:0:0) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f5371_0_main_NE(x19:0, x20:0, x21:0) -> f5381_0_main_InvokeMethod(x20:0, x21:0, x19:0) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 *f5371_0_main_NE(o1401:0:0, o1423:0:0, java.lang.Object(List(o1464:0:0))) -> f5381_0_main_InvokeMethod(o1423:0:0, o1464:0:0, o1401:0:0) The graph contains the following edges 2 >= 1, 3 > 2, 1 >= 3 ---------------------------------------- (44) YES