/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, 789 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 17 ms] (6) AND (7) JBCTerminationSCC (8) SCCToQDPProof [SOUND, 131 ms] (9) QDP (10) QDPSizeChangeProof [EQUIVALENT, 0 ms] (11) YES (12) JBCTerminationSCC (13) SCCToQDPProof [SOUND, 53 ms] (14) QDP (15) QDPSizeChangeProof [EQUIVALENT, 0 ms] (16) YES (17) JBCTerminationSCC (18) SCCToIRSProof [SOUND, 58 ms] (19) IRSwT (20) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (21) IRSwT (22) IRSwTTerminationDigraphProof [EQUIVALENT, 0 ms] (23) IRSwT (24) IntTRSCompressionProof [EQUIVALENT, 0 ms] (25) IRSwT (26) TempFilterProof [SOUND, 14 ms] (27) IntTRS (28) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (29) YES (30) JBCTerminationSCC (31) SCCToIRSProof [SOUND, 233 ms] (32) IRSwT (33) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (34) IRSwT (35) IRSwTTerminationDigraphProof [EQUIVALENT, 102 ms] (36) IRSwT (37) IntTRSCompressionProof [EQUIVALENT, 0 ms] (38) IRSwT (39) TempFilterProof [SOUND, 11 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: f5396_0_test_NULL(EOS(STATIC_5396), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5402_0_test_NULL(EOS(STATIC_5402), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5402_0_test_NULL(EOS(STATIC_5402), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5412_0_test_New(EOS(STATIC_5412), java.lang.Object(o1304sub)) :|: TRUE f5412_0_test_New(EOS(STATIC_5412), java.lang.Object(o1304sub)) -> f5421_0_test_Duplicate(EOS(STATIC_5421), java.lang.Object(o1304sub)) :|: TRUE f5421_0_test_Duplicate(EOS(STATIC_5421), java.lang.Object(o1304sub)) -> f5427_0_test_Load(EOS(STATIC_5427), java.lang.Object(o1304sub)) :|: TRUE f5427_0_test_Load(EOS(STATIC_5427), java.lang.Object(o1304sub)) -> f5434_0_test_Load(EOS(STATIC_5434), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5434_0_test_Load(EOS(STATIC_5434), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5442_0_test_InvokeMethod(EOS(STATIC_5442), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5442_0_test_InvokeMethod(EOS(STATIC_5442), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5447_0__init__Load(EOS(STATIC_5447), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5447_0__init__Load(EOS(STATIC_5447), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5461_0__init__InvokeMethod(EOS(STATIC_5461), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5461_0__init__InvokeMethod(EOS(STATIC_5461), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5464_0__init__Load(EOS(STATIC_5464), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5464_0__init__Load(EOS(STATIC_5464), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5469_0__init__Load(EOS(STATIC_5469), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5469_0__init__Load(EOS(STATIC_5469), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5474_0__init__FieldAccess(EOS(STATIC_5474), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) :|: TRUE f5474_0__init__FieldAccess(EOS(STATIC_5474), java.lang.Object(o1304sub), java.lang.Object(o1304sub)) -> f5479_0__init__Load(EOS(STATIC_5479), java.lang.Object(o1304sub)) :|: TRUE f5479_0__init__Load(EOS(STATIC_5479), java.lang.Object(o1304sub)) -> f5484_0__init__Load(EOS(STATIC_5484), java.lang.Object(o1304sub)) :|: TRUE f5484_0__init__Load(EOS(STATIC_5484), java.lang.Object(o1304sub)) -> f5489_0__init__FieldAccess(EOS(STATIC_5489), java.lang.Object(o1304sub)) :|: TRUE f5489_0__init__FieldAccess(EOS(STATIC_5489), java.lang.Object(o1304sub)) -> f5492_0__init__Return(EOS(STATIC_5492), java.lang.Object(o1304sub)) :|: TRUE f5492_0__init__Return(EOS(STATIC_5492), java.lang.Object(o1304sub)) -> f5496_0_test_Store(EOS(STATIC_5496), java.lang.Object(o1304sub)) :|: TRUE f5496_0_test_Store(EOS(STATIC_5496), java.lang.Object(o1304sub)) -> f5499_0_test_New(EOS(STATIC_5499), java.lang.Object(o1304sub)) :|: TRUE f5499_0_test_New(EOS(STATIC_5499), java.lang.Object(o1304sub)) -> f5501_0_test_Duplicate(EOS(STATIC_5501), java.lang.Object(o1304sub)) :|: TRUE f5501_0_test_Duplicate(EOS(STATIC_5501), java.lang.Object(o1304sub)) -> f5504_0_test_Load(EOS(STATIC_5504), java.lang.Object(o1304sub)) :|: TRUE f5504_0_test_Load(EOS(STATIC_5504), java.lang.Object(o1304sub)) -> f5507_0_test_Load(EOS(STATIC_5507), java.lang.Object(o1304sub)) :|: TRUE f5507_0_test_Load(EOS(STATIC_5507), java.lang.Object(o1304sub)) -> f5510_0_test_InvokeMethod(EOS(STATIC_5510), java.lang.Object(o1304sub)) :|: TRUE f5510_0_test_InvokeMethod(EOS(STATIC_5510), java.lang.Object(o1304sub)) -> f5514_0__init__Load(EOS(STATIC_5514), java.lang.Object(o1304sub)) :|: TRUE f5514_0__init__Load(EOS(STATIC_5514), java.lang.Object(o1304sub)) -> f5521_0__init__InvokeMethod(EOS(STATIC_5521), java.lang.Object(o1304sub)) :|: TRUE f5521_0__init__InvokeMethod(EOS(STATIC_5521), java.lang.Object(o1304sub)) -> f5525_0__init__Load(EOS(STATIC_5525), java.lang.Object(o1304sub)) :|: TRUE f5525_0__init__Load(EOS(STATIC_5525), java.lang.Object(o1304sub)) -> f5528_0__init__Load(EOS(STATIC_5528), java.lang.Object(o1304sub)) :|: TRUE f5528_0__init__Load(EOS(STATIC_5528), java.lang.Object(o1304sub)) -> f5531_0__init__FieldAccess(EOS(STATIC_5531), java.lang.Object(o1304sub)) :|: TRUE f5531_0__init__FieldAccess(EOS(STATIC_5531), java.lang.Object(o1304sub)) -> f5534_0__init__Load(EOS(STATIC_5534), java.lang.Object(o1304sub)) :|: TRUE f5534_0__init__Load(EOS(STATIC_5534), java.lang.Object(o1304sub)) -> f5537_0__init__Load(EOS(STATIC_5537), java.lang.Object(o1304sub)) :|: TRUE f5537_0__init__Load(EOS(STATIC_5537), java.lang.Object(o1304sub)) -> f5541_0__init__FieldAccess(EOS(STATIC_5541), java.lang.Object(o1304sub)) :|: TRUE f5541_0__init__FieldAccess(EOS(STATIC_5541), java.lang.Object(o1304sub)) -> f5545_0__init__Return(EOS(STATIC_5545), java.lang.Object(o1304sub)) :|: TRUE f5545_0__init__Return(EOS(STATIC_5545), java.lang.Object(o1304sub)) -> f5548_0_test_Store(EOS(STATIC_5548), java.lang.Object(o1304sub)) :|: TRUE f5548_0_test_Store(EOS(STATIC_5548), java.lang.Object(o1304sub)) -> f5551_0_test_Load(EOS(STATIC_5551), java.lang.Object(o1304sub)) :|: TRUE f5551_0_test_Load(EOS(STATIC_5551), java.lang.Object(o1304sub)) -> f5554_0_test_InvokeMethod(EOS(STATIC_5554), java.lang.Object(o1304sub)) :|: TRUE f5554_0_test_InvokeMethod(EOS(STATIC_5554), java.lang.Object(o1304sub)) -> f5556_0_getTail_Load(EOS(STATIC_5556), java.lang.Object(o1304sub)) :|: TRUE f5556_0_getTail_Load(EOS(STATIC_5556), java.lang.Object(o1304sub)) -> f5558_0_getTail_FieldAccess(EOS(STATIC_5558), java.lang.Object(o1304sub)) :|: TRUE f5558_0_getTail_FieldAccess(EOS(STATIC_5558), java.lang.Object(List(EOC, o1402))) -> f5560_0_getTail_FieldAccess(EOS(STATIC_5560), java.lang.Object(List(EOC, o1402))) :|: TRUE f5560_0_getTail_FieldAccess(EOS(STATIC_5560), java.lang.Object(List(EOC, o1402))) -> f5562_0_getTail_Return(EOS(STATIC_5562), o1402) :|: TRUE f5562_0_getTail_Return(EOS(STATIC_5562), o1402) -> f5566_0_test_Store(EOS(STATIC_5566), o1402) :|: TRUE f5566_0_test_Store(EOS(STATIC_5566), o1402) -> f5570_0_test_JMP(EOS(STATIC_5570), o1402) :|: TRUE f5570_0_test_JMP(EOS(STATIC_5570), o1402) -> f5575_0_test_Load(EOS(STATIC_5575), o1402) :|: TRUE f5575_0_test_Load(EOS(STATIC_5575), o1402) -> f5353_0_test_Load(EOS(STATIC_5353), o1402) :|: TRUE f5353_0_test_Load(EOS(STATIC_5353), o1274) -> f5396_0_test_NULL(EOS(STATIC_5396), o1274, o1274) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f5396_0_test_NULL(EOS(STATIC_5396), java.lang.Object(List(EOC, o1402:0)), java.lang.Object(List(EOC, o1402:0))) -> f5396_0_test_NULL(EOS(STATIC_5396), o1402:0, o1402:0) :|: TRUE R rules: Filtered ground terms: f5396_0_test_NULL(x1, x2, x3) -> f5396_0_test_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate args: f5396_0_test_NULL(x1, x2) -> f5396_0_test_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F5396_0_TEST_NULL(java.lang.Object(List(o1402:0:0))) -> F5396_0_TEST_NULL(o1402:0:0) :|: TRUE R rules: ---------------------------------------- (9) Obligation: Q DP problem: The TRS P consists of the following rules: F5396_0_TEST_NULL(java.lang.Object(List(o1402:0:0))) -> F5396_0_TEST_NULL(o1402: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: *F5396_0_TEST_NULL(java.lang.Object(List(o1402:0:0))) -> F5396_0_TEST_NULL(o1402: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: f3063_0_length_NULL(EOS(STATIC_3063), java.lang.Object(o482sub), java.lang.Object(o482sub)) -> f3067_0_length_NULL(EOS(STATIC_3067), java.lang.Object(o482sub), java.lang.Object(o482sub)) :|: TRUE f3067_0_length_NULL(EOS(STATIC_3067), java.lang.Object(o482sub), java.lang.Object(o482sub)) -> f3072_0_length_Load(EOS(STATIC_3072), java.lang.Object(o482sub)) :|: TRUE f3072_0_length_Load(EOS(STATIC_3072), java.lang.Object(o482sub)) -> f3076_0_length_InvokeMethod(EOS(STATIC_3076), java.lang.Object(o482sub)) :|: TRUE f3076_0_length_InvokeMethod(EOS(STATIC_3076), java.lang.Object(o482sub)) -> f3082_0_getTail_Load(EOS(STATIC_3082), java.lang.Object(o482sub)) :|: TRUE f3082_0_getTail_Load(EOS(STATIC_3082), java.lang.Object(o482sub)) -> f3104_0_getTail_FieldAccess(EOS(STATIC_3104), java.lang.Object(o482sub)) :|: TRUE f3104_0_getTail_FieldAccess(EOS(STATIC_3104), java.lang.Object(List(EOC, o502))) -> f3140_0_getTail_FieldAccess(EOS(STATIC_3140), java.lang.Object(List(EOC, o502))) :|: TRUE f3140_0_getTail_FieldAccess(EOS(STATIC_3140), java.lang.Object(List(EOC, o502))) -> f3146_0_getTail_Return(EOS(STATIC_3146), o502) :|: TRUE f3146_0_getTail_Return(EOS(STATIC_3146), o502) -> f3147_0_length_Store(EOS(STATIC_3147), o502) :|: TRUE f3147_0_length_Store(EOS(STATIC_3147), o502) -> f3149_0_length_Inc(EOS(STATIC_3149), o502) :|: TRUE f3149_0_length_Inc(EOS(STATIC_3149), o502) -> f3165_0_length_JMP(EOS(STATIC_3165), o502) :|: TRUE f3165_0_length_JMP(EOS(STATIC_3165), o502) -> f3170_0_length_Load(EOS(STATIC_3170), o502) :|: TRUE f3170_0_length_Load(EOS(STATIC_3170), o502) -> f3059_0_length_Load(EOS(STATIC_3059), o502) :|: TRUE f3059_0_length_Load(EOS(STATIC_3059), o477) -> f3063_0_length_NULL(EOS(STATIC_3063), o477, o477) :|: TRUE R rules: Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: f3063_0_length_NULL(EOS(STATIC_3063), java.lang.Object(List(EOC, o502:0)), java.lang.Object(List(EOC, o502:0))) -> f3063_0_length_NULL(EOS(STATIC_3063), o502:0, o502:0) :|: TRUE R rules: Filtered ground terms: f3063_0_length_NULL(x1, x2, x3) -> f3063_0_length_NULL(x2, x3) EOS(x1) -> EOS List(x1, x2) -> List(x2) Filtered duplicate args: f3063_0_length_NULL(x1, x2) -> f3063_0_length_NULL(x2) Combined rules. Obtained 1 conditional rules for P and 0 conditional rules for R.P rules: F3063_0_LENGTH_NULL(java.lang.Object(List(o502:0:0))) -> F3063_0_LENGTH_NULL(o502:0:0) :|: TRUE R rules: ---------------------------------------- (14) Obligation: Q DP problem: The TRS P consists of the following rules: F3063_0_LENGTH_NULL(java.lang.Object(List(o502:0:0))) -> F3063_0_LENGTH_NULL(o502: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: *F3063_0_LENGTH_NULL(java.lang.Object(List(o502:0:0))) -> F3063_0_LENGTH_NULL(o502: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: f2561_0_mk_Inc(EOS(STATIC_2561), i303, i303) -> f2579_0_mk_LE(EOS(STATIC_2579), i303 + -1, i303) :|: TRUE f2579_0_mk_LE(EOS(STATIC_2579), i317, i328) -> f2584_0_mk_LE(EOS(STATIC_2584), i317, i328) :|: TRUE f2584_0_mk_LE(EOS(STATIC_2584), i317, i328) -> f2590_0_mk_New(EOS(STATIC_2590), i317) :|: i328 > 0 f2590_0_mk_New(EOS(STATIC_2590), i317) -> f2603_0_mk_Duplicate(EOS(STATIC_2603), i317) :|: TRUE f2603_0_mk_Duplicate(EOS(STATIC_2603), i317) -> f2606_0_mk_New(EOS(STATIC_2606), i317) :|: TRUE f2606_0_mk_New(EOS(STATIC_2606), i317) -> f2642_0_mk_Duplicate(EOS(STATIC_2642), i317) :|: TRUE f2642_0_mk_Duplicate(EOS(STATIC_2642), i317) -> f2669_0_mk_InvokeMethod(EOS(STATIC_2669), i317) :|: TRUE f2669_0_mk_InvokeMethod(EOS(STATIC_2669), i317) -> f2680_0_mk_Load(EOS(STATIC_2680), i317) :|: TRUE f2680_0_mk_Load(EOS(STATIC_2680), i317) -> f2686_0_mk_InvokeMethod(EOS(STATIC_2686), i317) :|: TRUE f2686_0_mk_InvokeMethod(EOS(STATIC_2686), i317) -> f2692_0__init__Load(EOS(STATIC_2692), i317) :|: TRUE f2692_0__init__Load(EOS(STATIC_2692), i317) -> f2718_0__init__InvokeMethod(EOS(STATIC_2718), i317) :|: TRUE f2718_0__init__InvokeMethod(EOS(STATIC_2718), i317) -> f2726_0__init__Load(EOS(STATIC_2726), i317) :|: TRUE f2726_0__init__Load(EOS(STATIC_2726), i317) -> f2740_0__init__Load(EOS(STATIC_2740), i317) :|: TRUE f2740_0__init__Load(EOS(STATIC_2740), i317) -> f2744_0__init__FieldAccess(EOS(STATIC_2744), i317) :|: TRUE f2744_0__init__FieldAccess(EOS(STATIC_2744), i317) -> f2750_0__init__Load(EOS(STATIC_2750), i317) :|: TRUE f2750_0__init__Load(EOS(STATIC_2750), i317) -> f2753_0__init__Load(EOS(STATIC_2753), i317) :|: TRUE f2753_0__init__Load(EOS(STATIC_2753), i317) -> f2757_0__init__FieldAccess(EOS(STATIC_2757), i317) :|: TRUE f2757_0__init__FieldAccess(EOS(STATIC_2757), i317) -> f2771_0__init__Return(EOS(STATIC_2771), i317) :|: TRUE f2771_0__init__Return(EOS(STATIC_2771), i317) -> f2776_0_mk_Store(EOS(STATIC_2776), i317) :|: TRUE f2776_0_mk_Store(EOS(STATIC_2776), i317) -> f2781_0_mk_JMP(EOS(STATIC_2781), i317) :|: TRUE f2781_0_mk_JMP(EOS(STATIC_2781), i317) -> f2803_0_mk_Load(EOS(STATIC_2803), i317) :|: TRUE f2803_0_mk_Load(EOS(STATIC_2803), i317) -> f2553_0_mk_Load(EOS(STATIC_2553), i317) :|: TRUE f2553_0_mk_Load(EOS(STATIC_2553), i303) -> f2561_0_mk_Inc(EOS(STATIC_2561), i303, i303) :|: TRUE Combined rules. Obtained 1 IRulesP rules: f2561_0_mk_Inc(EOS(STATIC_2561), i303:0, i303:0) -> f2561_0_mk_Inc(EOS(STATIC_2561), i303:0 - 1, i303:0 - 1) :|: i303:0 > 0 Filtered constant ground arguments: f2561_0_mk_Inc(x1, x2, x3) -> f2561_0_mk_Inc(x2, x3) EOS(x1) -> EOS Filtered duplicate arguments: f2561_0_mk_Inc(x1, x2) -> f2561_0_mk_Inc(x2) Finished conversion. Obtained 1 rules.P rules: f2561_0_mk_Inc(i303:0) -> f2561_0_mk_Inc(i303:0 - 1) :|: i303:0 > 0 ---------------------------------------- (19) Obligation: Rules: f2561_0_mk_Inc(i303:0) -> f2561_0_mk_Inc(i303:0 - 1) :|: i303:0 > 0 ---------------------------------------- (20) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (21) Obligation: Rules: f2561_0_mk_Inc(i303:0) -> f2561_0_mk_Inc(arith) :|: i303:0 > 0 && arith = i303:0 - 1 ---------------------------------------- (22) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f2561_0_mk_Inc(i303:0) -> f2561_0_mk_Inc(arith) :|: i303:0 > 0 && arith = i303:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (23) Obligation: Termination digraph: Nodes: (1) f2561_0_mk_Inc(i303:0) -> f2561_0_mk_Inc(arith) :|: i303:0 > 0 && arith = i303:0 - 1 Arcs: (1) -> (1) This digraph is fully evaluated! ---------------------------------------- (24) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (25) Obligation: Rules: f2561_0_mk_Inc(i303:0:0) -> f2561_0_mk_Inc(i303:0:0 - 1) :|: i303:0:0 > 0 ---------------------------------------- (26) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f2561_0_mk_Inc(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (27) Obligation: Rules: f2561_0_mk_Inc(i303:0:0) -> f2561_0_mk_Inc(c) :|: c = i303:0:0 - 1 && i303:0:0 > 0 ---------------------------------------- (28) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f2561_0_mk_Inc(x)] = x The following rules are decreasing: f2561_0_mk_Inc(i303:0:0) -> f2561_0_mk_Inc(c) :|: c = i303:0:0 - 1 && i303:0:0 > 0 The following rules are bounded: f2561_0_mk_Inc(i303:0:0) -> f2561_0_mk_Inc(c) :|: c = i303:0:0 - 1 && i303: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: f5576_0_main_InvokeMethod(EOS(STATIC_5576), o1420, o1421, o1422, o1420) -> f5577_0_length_ConstantStackPush(EOS(STATIC_5577), o1420, o1420) :|: TRUE f5576_0_main_InvokeMethod(EOS(STATIC_5576), o1420, o1421, o1422, o1420) -> f5577_1_length_ConstantStackPush(EOS(STATIC_5577), o1420, o1421, o1422, o1420) :|: TRUE f5577_0_length_ConstantStackPush(EOS(STATIC_5577), o1420, o1420) -> f5965_0_length_ConstantStackPush(EOS(STATIC_5965), o1420, o1420) :|: TRUE f5579_0_length_Return(EOS(STATIC_5579), o1438, o1421, o1422, i593) -> f5580_0_main_LE(EOS(STATIC_5580), o1438, o1421, o1422, i593) :|: TRUE f5580_0_main_LE(EOS(STATIC_5580), o1438, o1421, o1422, i594) -> f5582_0_main_LE(EOS(STATIC_5582), o1438, o1421, o1422, i594) :|: TRUE f5582_0_main_LE(EOS(STATIC_5582), o1438, o1421, o1422, i594) -> f5584_0_main_Load(EOS(STATIC_5584), o1438, o1421, o1422) :|: i594 > 0 f5584_0_main_Load(EOS(STATIC_5584), o1438, o1421, o1422) -> f5586_0_main_Store(EOS(STATIC_5586), o1421, o1422, o1438) :|: TRUE f5586_0_main_Store(EOS(STATIC_5586), o1421, o1422, o1438) -> f5587_0_main_Load(EOS(STATIC_5587), o1421, o1422, o1438) :|: TRUE f5587_0_main_Load(EOS(STATIC_5587), o1421, o1422, o1438) -> f5588_0_main_Store(EOS(STATIC_5588), o1422, o1438, o1421) :|: TRUE f5588_0_main_Store(EOS(STATIC_5588), o1422, o1438, o1421) -> f5589_0_main_Load(EOS(STATIC_5589), o1421, o1422, o1438) :|: TRUE f5589_0_main_Load(EOS(STATIC_5589), o1421, o1422, o1438) -> f5590_0_main_Store(EOS(STATIC_5590), o1421, o1438, o1422) :|: TRUE f5590_0_main_Store(EOS(STATIC_5590), o1421, o1438, o1422) -> f5591_0_main_Load(EOS(STATIC_5591), o1421, o1422, o1438) :|: TRUE f5591_0_main_Load(EOS(STATIC_5591), o1421, o1422, o1438) -> f5592_0_main_Store(EOS(STATIC_5592), o1421, o1422, o1438, o1438) :|: TRUE f5592_0_main_Store(EOS(STATIC_5592), o1421, o1422, o1438, o1438) -> f5593_0_main_Load(EOS(STATIC_5593), o1421, o1422, o1438, o1438) :|: TRUE f5593_0_main_Load(EOS(STATIC_5593), o1421, o1422, o1438, o1438) -> f5594_0_main_InvokeMethod(EOS(STATIC_5594), o1421, o1422, o1438, o1438, o1422) :|: TRUE f5594_0_main_InvokeMethod(EOS(STATIC_5594), o1421, o1422, o1438, o1438, o1422) -> f5595_0_length_ConstantStackPush(EOS(STATIC_5595), o1422, o1422) :|: TRUE f5594_0_main_InvokeMethod(EOS(STATIC_5594), o1421, o1422, o1438, o1438, o1422) -> f5595_1_length_ConstantStackPush(EOS(STATIC_5595), o1421, o1422, o1438, o1438, o1422) :|: TRUE f5595_0_length_ConstantStackPush(EOS(STATIC_5595), o1422, o1422) -> f6001_0_length_ConstantStackPush(EOS(STATIC_6001), o1422, o1422) :|: TRUE f5597_0_length_Return(EOS(STATIC_5597), o1421, o1443, o1438, o1438, i595) -> f5598_0_main_ConstantStackPush(EOS(STATIC_5598), o1421, o1443, o1438, o1438, i595) :|: TRUE f5598_0_main_ConstantStackPush(EOS(STATIC_5598), o1421, o1443, o1438, o1438, i595) -> f5599_0_main_IntArithmetic(EOS(STATIC_5599), o1421, o1443, o1438, o1438, i595, 3) :|: TRUE f5599_0_main_IntArithmetic(EOS(STATIC_5599), o1421, o1443, o1438, o1438, i595, matching1) -> f5600_0_main_NE(EOS(STATIC_5600), o1421, o1443, o1438, o1438, i595 % 3) :|: TRUE && matching1 = 3 f5600_0_main_NE(EOS(STATIC_5600), o1421, o1443, o1438, o1438, i597) -> f5601_0_main_NE(EOS(STATIC_5601), o1421, o1443, o1438, o1438, i597) :|: TRUE f5600_0_main_NE(EOS(STATIC_5600), o1421, o1443, o1438, o1438, matching1) -> f5602_0_main_NE(EOS(STATIC_5602), o1421, o1443, o1438, o1438, 0) :|: TRUE && matching1 = 0 f5601_0_main_NE(EOS(STATIC_5601), o1421, o1443, o1438, o1438, i597) -> f5603_0_main_Load(EOS(STATIC_5603), o1421, o1443, o1438) :|: i597 > 0 f5603_0_main_Load(EOS(STATIC_5603), o1421, o1443, o1438) -> f5605_0_main_InvokeMethod(EOS(STATIC_5605), o1421, o1443, o1438, o1438) :|: TRUE f5605_0_main_InvokeMethod(EOS(STATIC_5605), o1421, o1443, o1438, o1438) -> f5607_0_length_ConstantStackPush(EOS(STATIC_5607), o1438, o1438) :|: TRUE f5605_0_main_InvokeMethod(EOS(STATIC_5605), o1421, o1443, o1438, o1438) -> f5607_1_length_ConstantStackPush(EOS(STATIC_5607), o1421, o1443, o1438, o1438) :|: TRUE f5607_0_length_ConstantStackPush(EOS(STATIC_5607), o1438, o1438) -> f6027_0_length_ConstantStackPush(EOS(STATIC_6027), o1438, o1438) :|: TRUE f5617_0_length_Return(EOS(STATIC_5617), o1421, o1443, o1450, i598) -> f5619_0_main_ConstantStackPush(EOS(STATIC_5619), o1421, o1443, o1450, i598) :|: TRUE f5619_0_main_ConstantStackPush(EOS(STATIC_5619), o1421, o1443, o1450, i598) -> f5622_0_main_IntArithmetic(EOS(STATIC_5622), o1421, o1443, o1450, i598, 5) :|: TRUE f5622_0_main_IntArithmetic(EOS(STATIC_5622), o1421, o1443, o1450, i598, matching1) -> f5625_0_main_NE(EOS(STATIC_5625), o1421, o1443, o1450, i598 % 5) :|: TRUE && matching1 = 5 f5625_0_main_NE(EOS(STATIC_5625), o1421, o1443, o1450, i600) -> f5627_0_main_NE(EOS(STATIC_5627), o1421, o1443, o1450, i600) :|: TRUE f5625_0_main_NE(EOS(STATIC_5625), o1421, o1443, o1450, matching1) -> f5628_0_main_NE(EOS(STATIC_5628), o1421, o1443, o1450, 0) :|: TRUE && matching1 = 0 f5627_0_main_NE(EOS(STATIC_5627), o1421, o1443, o1450, i600) -> f5631_0_main_Load(EOS(STATIC_5631), o1421, o1443, o1450) :|: i600 > 0 f5631_0_main_Load(EOS(STATIC_5631), o1421, o1443, o1450) -> f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421, o1443, o1450, o1421) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421, o1443, o1450, o1421) -> f5637_0_length_ConstantStackPush(EOS(STATIC_5637), o1421, o1421) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421, o1443, o1450, o1421) -> f5637_1_length_ConstantStackPush(EOS(STATIC_5637), o1421, o1443, o1450, o1421) :|: TRUE f5637_0_length_ConstantStackPush(EOS(STATIC_5637), o1421, o1421) -> f6053_0_length_ConstantStackPush(EOS(STATIC_6053), o1421, o1421) :|: TRUE f5655_0_length_Return(EOS(STATIC_5655), o1481, o1443, o1450, i602) -> f5659_0_main_Load(EOS(STATIC_5659), o1481, o1443, o1450, i602) :|: TRUE f5659_0_main_Load(EOS(STATIC_5659), o1481, o1443, o1450, i602) -> f5663_0_main_InvokeMethod(EOS(STATIC_5663), o1481, o1443, o1450, i602, o1443) :|: TRUE f5663_0_main_InvokeMethod(EOS(STATIC_5663), o1481, o1443, o1450, i602, o1443) -> f5667_0_length_ConstantStackPush(EOS(STATIC_5667), o1443, o1443) :|: TRUE f5663_0_main_InvokeMethod(EOS(STATIC_5663), o1481, o1443, o1450, i602, o1443) -> f5667_1_length_ConstantStackPush(EOS(STATIC_5667), o1481, o1443, o1450, i602, o1443) :|: TRUE f5667_0_length_ConstantStackPush(EOS(STATIC_5667), o1443, o1443) -> f6069_0_length_ConstantStackPush(EOS(STATIC_6069), o1443, o1443) :|: TRUE f5677_0_length_Return(EOS(STATIC_5677), o1481, o1501, o1450, i602, i606) -> f5679_0_main_LE(EOS(STATIC_5679), o1481, o1501, o1450, i602, i606) :|: TRUE f5679_0_main_LE(EOS(STATIC_5679), o1481, o1501, o1450, i602, i606) -> f5681_0_main_LE(EOS(STATIC_5681), o1481, o1501, o1450, i602, i606) :|: i602 <= i606 f5679_0_main_LE(EOS(STATIC_5679), o1481, o1501, o1450, i602, i606) -> f5682_0_main_LE(EOS(STATIC_5682), o1481, o1501, o1450, i602, i606) :|: i602 > i606 f5681_0_main_LE(EOS(STATIC_5681), o1481, o1501, o1450, i602, i606) -> f5684_0_main_Load(EOS(STATIC_5684), o1481, o1501, o1450) :|: i602 <= i606 f5684_0_main_Load(EOS(STATIC_5684), o1481, o1501, o1450) -> f5687_0_main_InvokeMethod(EOS(STATIC_5687), o1481, o1501, o1450, o1481) :|: TRUE f5687_0_main_InvokeMethod(EOS(STATIC_5687), o1481, o1501, o1450, o1481) -> f5690_0_length_ConstantStackPush(EOS(STATIC_5690), o1481, o1481) :|: TRUE f5687_0_main_InvokeMethod(EOS(STATIC_5687), o1481, o1501, o1450, o1481) -> f5690_1_length_ConstantStackPush(EOS(STATIC_5690), o1481, o1501, o1450, o1481) :|: TRUE f5690_0_length_ConstantStackPush(EOS(STATIC_5690), o1481, o1481) -> f6091_0_length_ConstantStackPush(EOS(STATIC_6091), o1481, o1481) :|: TRUE f5705_0_length_Return(EOS(STATIC_5705), o1526, o1501, o1450, i607) -> f5708_0_main_Load(EOS(STATIC_5708), o1526, o1501, o1450, i607) :|: TRUE f5708_0_main_Load(EOS(STATIC_5708), o1526, o1501, o1450, i607) -> f5712_0_main_InvokeMethod(EOS(STATIC_5712), o1526, o1501, o1450, i607, o1501) :|: TRUE f5712_0_main_InvokeMethod(EOS(STATIC_5712), o1526, o1501, o1450, i607, o1501) -> f5715_0_length_ConstantStackPush(EOS(STATIC_5715), o1501, o1501) :|: TRUE f5712_0_main_InvokeMethod(EOS(STATIC_5712), o1526, o1501, o1450, i607, o1501) -> f5715_1_length_ConstantStackPush(EOS(STATIC_5715), o1526, o1501, o1450, i607, o1501) :|: TRUE f5715_0_length_ConstantStackPush(EOS(STATIC_5715), o1501, o1501) -> f6107_0_length_ConstantStackPush(EOS(STATIC_6107), o1501, o1501) :|: TRUE f5725_0_length_Return(EOS(STATIC_5725), o1526, o1540, o1450, i607, i608) -> f5728_0_main_NE(EOS(STATIC_5728), o1526, o1540, o1450, i607, i608) :|: TRUE f5728_0_main_NE(EOS(STATIC_5728), o1526, o1540, o1450, i607, i608) -> f5730_0_main_NE(EOS(STATIC_5730), o1526, o1540, o1450, i607, i608) :|: !(i607 = i608) f5728_0_main_NE(EOS(STATIC_5728), o1526, o1540, o1450, i608, i608) -> f5731_0_main_NE(EOS(STATIC_5731), o1526, o1540, o1450, i608, i608) :|: i607 = i608 f5730_0_main_NE(EOS(STATIC_5730), o1526, o1540, o1450, i607, i608) -> f5733_0_main_Load(EOS(STATIC_5733), o1526, o1540, o1450) :|: !(i607 = i608) f5733_0_main_Load(EOS(STATIC_5733), o1526, o1540, o1450) -> f5736_0_main_InvokeMethod(EOS(STATIC_5736), o1526, o1540, o1450) :|: TRUE f5736_0_main_InvokeMethod(EOS(STATIC_5736), o1526, o1540, java.lang.Object(o1568sub)) -> f5740_0_main_InvokeMethod(EOS(STATIC_5740), o1526, o1540, java.lang.Object(o1568sub)) :|: TRUE f5740_0_main_InvokeMethod(EOS(STATIC_5740), o1526, o1540, java.lang.Object(o1568sub)) -> f5746_0_getTail_Load(EOS(STATIC_5746), o1526, o1540, java.lang.Object(o1568sub)) :|: TRUE f5746_0_getTail_Load(EOS(STATIC_5746), o1526, o1540, java.lang.Object(o1568sub)) -> f5753_0_getTail_FieldAccess(EOS(STATIC_5753), o1526, o1540, java.lang.Object(o1568sub)) :|: TRUE f5753_0_getTail_FieldAccess(EOS(STATIC_5753), o1526, o1540, java.lang.Object(List(EOC, o1613))) -> f5758_0_getTail_FieldAccess(EOS(STATIC_5758), o1526, o1540, java.lang.Object(List(EOC, o1613))) :|: TRUE f5758_0_getTail_FieldAccess(EOS(STATIC_5758), o1526, o1540, java.lang.Object(List(EOC, o1613))) -> f5763_0_getTail_Return(EOS(STATIC_5763), o1526, o1540, o1613) :|: TRUE f5763_0_getTail_Return(EOS(STATIC_5763), o1526, o1540, o1613) -> f5766_0_main_Store(EOS(STATIC_5766), o1526, o1540, o1613) :|: TRUE f5766_0_main_Store(EOS(STATIC_5766), o1526, o1540, o1613) -> f5771_0_main_Load(EOS(STATIC_5771), o1526, o1540, o1613) :|: TRUE f5771_0_main_Load(EOS(STATIC_5771), o1526, o1540, o1613) -> f5716_0_main_Load(EOS(STATIC_5716), o1526, o1540, o1613) :|: TRUE f5716_0_main_Load(EOS(STATIC_5716), o1529, o1501, o1450) -> f5718_0_main_Load(EOS(STATIC_5718), o1529, o1501, o1450, o1529) :|: TRUE f5718_0_main_Load(EOS(STATIC_5718), o1529, o1501, o1450, o1529) -> f5720_0_main_Load(EOS(STATIC_5720), o1529, o1501, o1450, o1529, o1501) :|: TRUE f5720_0_main_Load(EOS(STATIC_5720), o1529, o1501, o1450, o1529, o1501) -> f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529, o1501, o1450, o1529, o1501, o1450) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529, o1501, o1450, o1529, o1501, o1450) -> f5723_0_test_Load(EOS(STATIC_5723), o1529, o1501, o1450, o1529, o1501, o1450) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529, o1501, o1450, o1529, o1501, o1450) -> f5723_1_test_Load(EOS(STATIC_5723), o1529, o1501, o1450, o1529, o1501, o1450) :|: TRUE f5723_0_test_Load(EOS(STATIC_5723), o1529, o1501, o1450, o1529, o1501, o1450) -> f6151_0_test_Load(EOS(STATIC_6151), o1529, o1501, o1450, o1529, o1501, o1450) :|: TRUE f5738_0_test_Return(EOS(STATIC_5738), o1563, o1561, o1559) -> f5744_0_main_JMP(EOS(STATIC_5744), o1563, o1561, o1559) :|: TRUE f5744_0_main_JMP(EOS(STATIC_5744), o1563, o1561, o1559) -> f5750_0_main_Load(EOS(STATIC_5750), o1563, o1561, o1559) :|: TRUE f5750_0_main_Load(EOS(STATIC_5750), o1563, o1561, o1559) -> f5574_0_main_Load(EOS(STATIC_5574), o1563, o1561, o1559) :|: TRUE f5574_0_main_Load(EOS(STATIC_5574), o1420, o1421, o1422) -> f5576_0_main_InvokeMethod(EOS(STATIC_5576), o1420, o1421, o1422, o1420) :|: TRUE f5731_0_main_NE(EOS(STATIC_5731), o1526, o1540, o1450, i608, i608) -> f5734_0_main_Load(EOS(STATIC_5734), o1526, o1540, o1450) :|: TRUE f5734_0_main_Load(EOS(STATIC_5734), o1526, o1540, o1450) -> f5737_0_main_InvokeMethod(EOS(STATIC_5737), o1526, o1450, o1540) :|: TRUE f5737_0_main_InvokeMethod(EOS(STATIC_5737), o1526, o1450, java.lang.Object(o1569sub)) -> f5742_0_main_InvokeMethod(EOS(STATIC_5742), o1526, o1450, java.lang.Object(o1569sub)) :|: TRUE f5742_0_main_InvokeMethod(EOS(STATIC_5742), o1526, o1450, java.lang.Object(o1569sub)) -> f5748_0_getTail_Load(EOS(STATIC_5748), o1526, o1450, java.lang.Object(o1569sub)) :|: TRUE f5748_0_getTail_Load(EOS(STATIC_5748), o1526, o1450, java.lang.Object(o1569sub)) -> f5755_0_getTail_FieldAccess(EOS(STATIC_5755), o1526, o1450, java.lang.Object(o1569sub)) :|: TRUE f5755_0_getTail_FieldAccess(EOS(STATIC_5755), o1526, o1450, java.lang.Object(List(EOC, o1616))) -> f5760_0_getTail_FieldAccess(EOS(STATIC_5760), o1526, o1450, java.lang.Object(List(EOC, o1616))) :|: TRUE f5760_0_getTail_FieldAccess(EOS(STATIC_5760), o1526, o1450, java.lang.Object(List(EOC, o1616))) -> f5764_0_getTail_Return(EOS(STATIC_5764), o1526, o1450, o1616) :|: TRUE f5764_0_getTail_Return(EOS(STATIC_5764), o1526, o1450, o1616) -> f5768_0_main_Store(EOS(STATIC_5768), o1526, o1450, o1616) :|: TRUE f5768_0_main_Store(EOS(STATIC_5768), o1526, o1450, o1616) -> f5773_0_main_JMP(EOS(STATIC_5773), o1526, o1616, o1450) :|: TRUE f5773_0_main_JMP(EOS(STATIC_5773), o1526, o1616, o1450) -> f5775_0_main_Load(EOS(STATIC_5775), o1526, o1616, o1450) :|: TRUE f5775_0_main_Load(EOS(STATIC_5775), o1526, o1616, o1450) -> f5716_0_main_Load(EOS(STATIC_5716), o1526, o1616, o1450) :|: TRUE f5682_0_main_LE(EOS(STATIC_5682), o1481, o1501, o1450, i602, i606) -> f5685_0_main_Load(EOS(STATIC_5685), o1481, o1501, o1450) :|: i602 > i606 f5685_0_main_Load(EOS(STATIC_5685), o1481, o1501, o1450) -> f5688_0_main_InvokeMethod(EOS(STATIC_5688), o1501, o1450, o1481) :|: TRUE f5688_0_main_InvokeMethod(EOS(STATIC_5688), o1501, o1450, java.lang.Object(o1508sub)) -> f5691_0_main_InvokeMethod(EOS(STATIC_5691), o1501, o1450, java.lang.Object(o1508sub)) :|: TRUE f5691_0_main_InvokeMethod(EOS(STATIC_5691), o1501, o1450, java.lang.Object(o1508sub)) -> f5695_0_getTail_Load(EOS(STATIC_5695), o1501, o1450, java.lang.Object(o1508sub)) :|: TRUE f5695_0_getTail_Load(EOS(STATIC_5695), o1501, o1450, java.lang.Object(o1508sub)) -> f5699_0_getTail_FieldAccess(EOS(STATIC_5699), o1501, o1450, java.lang.Object(o1508sub)) :|: TRUE f5699_0_getTail_FieldAccess(EOS(STATIC_5699), o1501, o1450, java.lang.Object(List(EOC, o1529))) -> f5702_0_getTail_FieldAccess(EOS(STATIC_5702), o1501, o1450, java.lang.Object(List(EOC, o1529))) :|: TRUE f5702_0_getTail_FieldAccess(EOS(STATIC_5702), o1501, o1450, java.lang.Object(List(EOC, o1529))) -> f5706_0_getTail_Return(EOS(STATIC_5706), o1501, o1450, o1529) :|: TRUE f5706_0_getTail_Return(EOS(STATIC_5706), o1501, o1450, o1529) -> f5709_0_main_Store(EOS(STATIC_5709), o1501, o1450, o1529) :|: TRUE f5709_0_main_Store(EOS(STATIC_5709), o1501, o1450, o1529) -> f5713_0_main_JMP(EOS(STATIC_5713), o1529, o1501, o1450) :|: TRUE f5713_0_main_JMP(EOS(STATIC_5713), o1529, o1501, o1450) -> f5716_0_main_Load(EOS(STATIC_5716), o1529, o1501, o1450) :|: TRUE f5628_0_main_NE(EOS(STATIC_5628), o1421, o1443, o1450, matching1) -> f5632_0_main_Load(EOS(STATIC_5632), o1421, o1443, o1450) :|: TRUE && matching1 = 0 f5632_0_main_Load(EOS(STATIC_5632), o1421, o1443, o1450) -> f5636_0_main_InvokeMethod(EOS(STATIC_5636), o1421, o1443, o1450) :|: TRUE f5636_0_main_InvokeMethod(EOS(STATIC_5636), o1421, o1443, java.lang.Object(o1460sub)) -> f5638_0_main_InvokeMethod(EOS(STATIC_5638), o1421, o1443, java.lang.Object(o1460sub)) :|: TRUE f5638_0_main_InvokeMethod(EOS(STATIC_5638), o1421, o1443, java.lang.Object(o1460sub)) -> f5642_0_getTail_Load(EOS(STATIC_5642), o1421, o1443, java.lang.Object(o1460sub)) :|: TRUE f5642_0_getTail_Load(EOS(STATIC_5642), o1421, o1443, java.lang.Object(o1460sub)) -> f5647_0_getTail_FieldAccess(EOS(STATIC_5647), o1421, o1443, java.lang.Object(o1460sub)) :|: TRUE f5647_0_getTail_FieldAccess(EOS(STATIC_5647), o1421, o1443, java.lang.Object(List(EOC, o1484))) -> f5651_0_getTail_FieldAccess(EOS(STATIC_5651), o1421, o1443, java.lang.Object(List(EOC, o1484))) :|: TRUE f5651_0_getTail_FieldAccess(EOS(STATIC_5651), o1421, o1443, java.lang.Object(List(EOC, o1484))) -> f5656_0_getTail_Return(EOS(STATIC_5656), o1421, o1443, o1484) :|: TRUE f5656_0_getTail_Return(EOS(STATIC_5656), o1421, o1443, o1484) -> f5660_0_main_Store(EOS(STATIC_5660), o1421, o1443, o1484) :|: TRUE f5660_0_main_Store(EOS(STATIC_5660), o1421, o1443, o1484) -> f5664_0_main_Load(EOS(STATIC_5664), o1421, o1443, o1484) :|: TRUE f5664_0_main_Load(EOS(STATIC_5664), o1421, o1443, o1484) -> f5631_0_main_Load(EOS(STATIC_5631), o1421, o1443, o1484) :|: TRUE f5602_0_main_NE(EOS(STATIC_5602), o1421, o1443, o1438, o1438, matching1) -> f5604_0_main_Load(EOS(STATIC_5604), o1421, o1443, o1438, o1438) :|: TRUE && matching1 = 0 f5604_0_main_Load(EOS(STATIC_5604), o1421, o1443, o1438, o1438) -> f5606_0_main_InvokeMethod(EOS(STATIC_5606), o1421, o1443, o1438, o1438) :|: TRUE f5606_0_main_InvokeMethod(EOS(STATIC_5606), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) -> f5608_0_main_InvokeMethod(EOS(STATIC_5608), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) :|: TRUE f5608_0_main_InvokeMethod(EOS(STATIC_5608), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) -> f5611_0_getTail_Load(EOS(STATIC_5611), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) :|: TRUE f5611_0_getTail_Load(EOS(STATIC_5611), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) -> f5613_0_getTail_FieldAccess(EOS(STATIC_5613), o1421, o1443, java.lang.Object(o1444sub), java.lang.Object(o1444sub)) :|: TRUE f5613_0_getTail_FieldAccess(EOS(STATIC_5613), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f5615_0_getTail_FieldAccess(EOS(STATIC_5615), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) :|: TRUE f5615_0_getTail_FieldAccess(EOS(STATIC_5615), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f5618_0_getTail_Return(EOS(STATIC_5618), o1421, o1443, java.lang.Object(List(EOC, o1453))) :|: TRUE f5618_0_getTail_Return(EOS(STATIC_5618), o1421, o1443, java.lang.Object(List(EOC, o1453))) -> f5620_0_main_Store(EOS(STATIC_5620), o1421, o1443, java.lang.Object(List(EOC, o1453))) :|: TRUE f5620_0_main_Store(EOS(STATIC_5620), o1421, o1443, java.lang.Object(List(EOC, o1453))) -> f5623_0_main_Load(EOS(STATIC_5623), o1421, o1443, java.lang.Object(List(EOC, o1453))) :|: TRUE f5623_0_main_Load(EOS(STATIC_5623), o1421, o1443, java.lang.Object(List(EOC, o1453))) -> f5626_0_main_InvokeMethod(EOS(STATIC_5626), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) :|: TRUE f5626_0_main_InvokeMethod(EOS(STATIC_5626), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f5629_0_length_ConstantStackPush(EOS(STATIC_5629), java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) :|: TRUE f5626_0_main_InvokeMethod(EOS(STATIC_5626), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f5629_1_length_ConstantStackPush(EOS(STATIC_5629), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) :|: TRUE f5629_0_length_ConstantStackPush(EOS(STATIC_5629), java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f6253_0_length_ConstantStackPush(EOS(STATIC_6253), java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) :|: TRUE f5645_0_length_Return(EOS(STATIC_5645), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601) -> f5649_0_main_ConstantStackPush(EOS(STATIC_5649), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601) :|: TRUE f5649_0_main_ConstantStackPush(EOS(STATIC_5649), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601) -> f5653_0_main_IntArithmetic(EOS(STATIC_5653), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601, 5) :|: TRUE f5653_0_main_IntArithmetic(EOS(STATIC_5653), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601, matching1) -> f5657_0_main_NE(EOS(STATIC_5657), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601 % 5) :|: TRUE && matching1 = 5 f5657_0_main_NE(EOS(STATIC_5657), o1421, o1443, java.lang.Object(List(EOC, o1453)), i603) -> f5625_0_main_NE(EOS(STATIC_5625), o1421, o1443, java.lang.Object(List(EOC, o1453)), i603) :|: TRUE f5577_1_length_ConstantStackPush(EOS(STATIC_5577), o1438, o1421, o1422, o1438) -> f5579_0_length_Return(EOS(STATIC_5579), o1438, o1421, o1422, i593) :|: TRUE f5595_1_length_ConstantStackPush(EOS(STATIC_5595), o1421, o1443, o1438, o1438, o1443) -> f5597_0_length_Return(EOS(STATIC_5597), o1421, o1443, o1438, o1438, i595) :|: TRUE f5607_1_length_ConstantStackPush(EOS(STATIC_5607), o1421, o1443, o1450, o1450) -> f5617_0_length_Return(EOS(STATIC_5617), o1421, o1443, o1450, i598) :|: TRUE f5637_1_length_ConstantStackPush(EOS(STATIC_5637), o1481, o1443, o1450, o1481) -> f5655_0_length_Return(EOS(STATIC_5655), o1481, o1443, o1450, i602) :|: TRUE f5667_1_length_ConstantStackPush(EOS(STATIC_5667), o1481, o1501, o1450, i602, o1501) -> f5677_0_length_Return(EOS(STATIC_5677), o1481, o1501, o1450, i602, i606) :|: TRUE f5690_1_length_ConstantStackPush(EOS(STATIC_5690), o1526, o1501, o1450, o1526) -> f5705_0_length_Return(EOS(STATIC_5705), o1526, o1501, o1450, i607) :|: TRUE f5715_1_length_ConstantStackPush(EOS(STATIC_5715), o1526, o1540, o1450, i607, o1540) -> f5725_0_length_Return(EOS(STATIC_5725), o1526, o1540, o1450, i607, i608) :|: TRUE f5723_1_test_Load(EOS(STATIC_5723), o1563, o1561, o1559, o1563, o1561, o1559) -> f5738_0_test_Return(EOS(STATIC_5738), o1563, o1561, o1559) :|: TRUE f5629_1_length_ConstantStackPush(EOS(STATIC_5629), o1421, o1443, java.lang.Object(List(EOC, o1453)), java.lang.Object(List(EOC, o1453))) -> f5645_0_length_Return(EOS(STATIC_5645), o1421, o1443, java.lang.Object(List(EOC, o1453)), i601) :|: TRUE Combined rules. Obtained 18 IRulesP rules: f5625_0_main_NE(EOS(STATIC_5625), o1421:0, o1443:0, java.lang.Object(List(EOC, o1484:0)), 0) -> f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1484:0, o1421:0) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, java.lang.Object(List(EOC, o1613:0)), o1421:0) -> f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1421:0, o1443:0, o1613:0, o1421:0, o1443:0, o1613:0) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0, java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(EOS(STATIC_5722), java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0, java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod'(EOS(STATIC_5722), java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0, java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0) -> f5625_0_main_NE(EOS(STATIC_5625), o1501:0, o1450:0, java.lang.Object(List(EOC, o1453:0)), i601:0 - 5 * div) :|: i595:0 - 3 * div1 = 0 && i593:0 > 0 && i601:0 - 5 * div > -5 && i601:0 - 5 * div < 5 && i595:0 - 3 * div1 < 3 && i595:0 - 3 * div1 > -3 f5625_0_main_NE(EOS(STATIC_5625), o1421:0, o1443:0, o1450:0, i600:0) -> f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1450:0, o1421:0) :|: i600:0 > 0 f5722_0_main_InvokeMethod'(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f5625_0_main_NE(EOS(STATIC_5625), o1501:0, o1450:0, o1529:0, i598:0 - 5 * div) :|: i595:0 - 3 * div1 > 0 && i593:0 > 0 && i598:0 - 5 * div > -5 && i595:0 - 3 * div1 < 3 && i598:0 - 5 * div < 5 f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, java.lang.Object(List(EOC, o1616:0)), o1450:0, o1421:0) -> f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1421:0, o1616:0, o1450:0, o1421:0, o1616:0, o1450:0) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), java.lang.Object(List(EOC, o1529:0)), o1443:0, o1450:0, java.lang.Object(List(EOC, o1529:0))) -> f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529:0, o1443:0, o1450:0, o1529:0, o1443:0, o1450:0) :|: TRUE Removed following non-SCC rules: f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1450:0, o1421:0) -> f6091_0_length_ConstantStackPush(EOS(STATIC_6091), o1421:0, o1421:0) :|: TRUE f5722_0_main_InvokeMethod'(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f6027_0_length_ConstantStackPush(EOS(STATIC_6027), o1529:0, o1529:0) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1450:0, o1421:0) -> f6107_0_length_ConstantStackPush(EOS(STATIC_6107), o1443:0, o1443:0) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f5965_0_length_ConstantStackPush(EOS(STATIC_5965), o1529:0, o1529:0) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f6151_0_test_Load(EOS(STATIC_6151), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod(EOS(STATIC_5722), o1529:0, o1501:0, o1450:0, o1529:0, o1501:0, o1450:0) -> f6001_0_length_ConstantStackPush(EOS(STATIC_6001), o1450:0, o1450:0) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1450:0, o1421:0) -> f6069_0_length_ConstantStackPush(EOS(STATIC_6069), o1443:0, o1443:0) :|: TRUE f5722_0_main_InvokeMethod'(EOS(STATIC_5722), java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0, java.lang.Object(List(EOC, o1453:0)), o1501:0, o1450:0) -> f6253_0_length_ConstantStackPush(EOS(STATIC_6253), java.lang.Object(List(EOC, o1453:0)), java.lang.Object(List(EOC, o1453:0))) :|: TRUE f5635_0_main_InvokeMethod(EOS(STATIC_5635), o1421:0, o1443:0, o1450:0, o1421:0) -> f6053_0_length_ConstantStackPush(EOS(STATIC_6053), o1421:0, o1421:0) :|: TRUE Filtered constant ground arguments: f5625_0_main_NE(x1, x2, x3, x4, x5) -> f5625_0_main_NE(x2, x3, x4, x5) f5635_0_main_InvokeMethod(x1, x2, x3, x4, x5) -> f5635_0_main_InvokeMethod(x2, x3, x4, x5) f5722_0_main_InvokeMethod(x1, x2, x3, x4, x5, x6, x7) -> f5722_0_main_InvokeMethod(x2, x3, x4, x5, x6, x7) f5722_0_main_InvokeMethod'(x1, x2, x3, x4, x5, x6, x7) -> f5722_0_main_InvokeMethod'(x2, x3, x4, x5, x6, x7) List(x1, x2) -> List(x2) Filtered duplicate arguments: f5635_0_main_InvokeMethod(x1, x2, x3, x4) -> f5635_0_main_InvokeMethod(x2, x3, x4) f5722_0_main_InvokeMethod(x1, x2, x3, x4, x5, x6) -> f5722_0_main_InvokeMethod(x4, x5, x6) f5722_0_main_InvokeMethod'(x1, x2, x3, x4, x5, x6) -> f5722_0_main_InvokeMethod'(x4, x5, x6) Finished conversion. Obtained 9 rules.P rules: f5625_0_main_NE(o1421:0, o1443:0, java.lang.Object(List(o1484:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0, o1484:0, o1421:0) :|: TRUE && cons_0 = 0 f5635_0_main_InvokeMethod(o1443:0, java.lang.Object(List(o1613:0)), o1421:0) -> f5722_0_main_InvokeMethod(o1421:0, o1443:0, o1613:0) :|: TRUE f5722_0_main_InvokeMethod(o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod(java.lang.Object(List(o1453:0)), o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(o1453:0)), o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod'(java.lang.Object(List(o1453:0)), o1501:0, o1450:0) -> f5625_0_main_NE(o1501:0, o1450:0, java.lang.Object(List(o1453:0)), i601:0 - 5 * div) :|: i593:0 > 0 && i595:0 - 3 * div1 = 0 && i601:0 - 5 * div > -5 && i601:0 - 5 * div < 5 && i595:0 - 3 * div1 > -3 && i595:0 - 3 * div1 < 3 f5625_0_main_NE(o1421:0, o1443:0, o1450:0, i600:0) -> f5635_0_main_InvokeMethod(o1443:0, o1450:0, o1421:0) :|: i600:0 > 0 f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) -> f5625_0_main_NE(o1501:0, o1450:0, o1529:0, i598:0 - 5 * div) :|: i593:0 > 0 && i595:0 - 3 * div1 > 0 && i598:0 - 5 * div > -5 && i598:0 - 5 * div < 5 && i595:0 - 3 * div1 < 3 f5635_0_main_InvokeMethod(java.lang.Object(List(o1616:0)), o1450:0, o1421:0) -> f5722_0_main_InvokeMethod(o1421:0, o1616:0, o1450:0) :|: TRUE f5635_0_main_InvokeMethod(o1443:0, o1450:0, java.lang.Object(List(o1529:0))) -> f5722_0_main_InvokeMethod(o1529:0, o1443:0, o1450:0) :|: TRUE ---------------------------------------- (32) Obligation: Rules: f5625_0_main_NE(o1421:0, o1443:0, java.lang.Object(List(o1484:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0, o1484:0, o1421:0) :|: TRUE && cons_0 = 0 f5635_0_main_InvokeMethod(x, java.lang.Object(List(x1)), x2) -> f5722_0_main_InvokeMethod(x2, x, x1) :|: TRUE f5722_0_main_InvokeMethod(o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod(java.lang.Object(List(x3)), x4, x5) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) :|: TRUE f5722_0_main_InvokeMethod'(java.lang.Object(List(x6)), x7, x8) -> f5625_0_main_NE(x7, x8, java.lang.Object(List(x6)), x9 - 5 * x10) :|: x11 > 0 && x12 - 3 * x13 = 0 && x9 - 5 * x10 > -5 && x9 - 5 * x10 < 5 && x12 - 3 * x13 > -3 && x12 - 3 * x13 < 3 f5625_0_main_NE(x14, x15, x16, x17) -> f5635_0_main_InvokeMethod(x15, x16, x14) :|: x17 > 0 f5722_0_main_InvokeMethod'(x18, x19, x20) -> f5625_0_main_NE(x19, x20, x18, x21 - 5 * x22) :|: x23 > 0 && x24 - 3 * x25 > 0 && x21 - 5 * x22 > -5 && x21 - 5 * x22 < 5 && x24 - 3 * x25 < 3 f5635_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5722_0_main_InvokeMethod(x28, x26, x27) :|: TRUE f5635_0_main_InvokeMethod(x29, x30, java.lang.Object(List(x31))) -> f5722_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: f5625_0_main_NE(o1421:0, o1443:0, java.lang.Object(List(o1484:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0, o1484:0, o1421:0) :|: TRUE && cons_0 = 0 f5635_0_main_InvokeMethod(x, java.lang.Object(List(x1)), x2) -> f5722_0_main_InvokeMethod(x2, x, x1) :|: TRUE f5722_0_main_InvokeMethod(o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) :|: TRUE f5722_0_main_InvokeMethod(java.lang.Object(List(x3)), x4, x5) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) :|: TRUE f5722_0_main_InvokeMethod'(java.lang.Object(List(x6)), x7, x8) -> f5625_0_main_NE(x7, x8, java.lang.Object(List(x6)), arith) :|: x11 > 0 && x12 - 3 * x13 = 0 && x9 - 5 * x10 > -5 && x9 - 5 * x10 < 5 && x12 - 3 * x13 > -3 && x12 - 3 * x13 < 3 && arith = x9 - 5 * x10 f5625_0_main_NE(x14, x15, x16, x17) -> f5635_0_main_InvokeMethod(x15, x16, x14) :|: x17 > 0 f5722_0_main_InvokeMethod'(x32, x33, x34) -> f5625_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 f5635_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5722_0_main_InvokeMethod(x28, x26, x27) :|: TRUE f5635_0_main_InvokeMethod(x29, x30, java.lang.Object(List(x31))) -> f5722_0_main_InvokeMethod(x31, x29, x30) :|: TRUE ---------------------------------------- (35) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f5625_0_main_NE(o1421:0, o1443:0, java.lang.Object(List(o1484:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0, o1484:0, o1421:0) :|: TRUE && cons_0 = 0 (2) f5635_0_main_InvokeMethod(x, java.lang.Object(List(x1)), x2) -> f5722_0_main_InvokeMethod(x2, x, x1) :|: TRUE (3) f5722_0_main_InvokeMethod(o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) :|: TRUE (4) f5722_0_main_InvokeMethod(java.lang.Object(List(x3)), x4, x5) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) :|: TRUE (5) f5722_0_main_InvokeMethod'(java.lang.Object(List(x6)), x7, x8) -> f5625_0_main_NE(x7, x8, java.lang.Object(List(x6)), arith) :|: x11 > 0 && x12 - 3 * x13 = 0 && x9 - 5 * x10 > -5 && x9 - 5 * x10 < 5 && x12 - 3 * x13 > -3 && x12 - 3 * x13 < 3 && arith = x9 - 5 * x10 (6) f5625_0_main_NE(x14, x15, x16, x17) -> f5635_0_main_InvokeMethod(x15, x16, x14) :|: x17 > 0 (7) f5722_0_main_InvokeMethod'(x32, x33, x34) -> f5625_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 (8) f5635_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5722_0_main_InvokeMethod(x28, x26, x27) :|: TRUE (9) f5635_0_main_InvokeMethod(x29, x30, java.lang.Object(List(x31))) -> f5722_0_main_InvokeMethod(x31, x29, x30) :|: TRUE Arcs: (1) -> (2), (8), (9) (2) -> (3), (4) (3) -> (5), (7) (4) -> (5), (7) (5) -> (1), (6) (6) -> (2), (8), (9) (7) -> (1), (6) (8) -> (3), (4) (9) -> (3), (4) This digraph is fully evaluated! ---------------------------------------- (36) Obligation: Termination digraph: Nodes: (1) f5625_0_main_NE(o1421:0, o1443:0, java.lang.Object(List(o1484:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0, o1484:0, o1421:0) :|: TRUE && cons_0 = 0 (2) f5722_0_main_InvokeMethod'(java.lang.Object(List(x6)), x7, x8) -> f5625_0_main_NE(x7, x8, java.lang.Object(List(x6)), arith) :|: x11 > 0 && x12 - 3 * x13 = 0 && x9 - 5 * x10 > -5 && x9 - 5 * x10 < 5 && x12 - 3 * x13 > -3 && x12 - 3 * x13 < 3 && arith = x9 - 5 * x10 (3) f5722_0_main_InvokeMethod(o1529:0, o1501:0, o1450:0) -> f5722_0_main_InvokeMethod'(o1529:0, o1501:0, o1450:0) :|: TRUE (4) f5635_0_main_InvokeMethod(x, java.lang.Object(List(x1)), x2) -> f5722_0_main_InvokeMethod(x2, x, x1) :|: TRUE (5) f5625_0_main_NE(x14, x15, x16, x17) -> f5635_0_main_InvokeMethod(x15, x16, x14) :|: x17 > 0 (6) f5722_0_main_InvokeMethod'(x32, x33, x34) -> f5625_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) f5722_0_main_InvokeMethod(java.lang.Object(List(x3)), x4, x5) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3)), x4, x5) :|: TRUE (8) f5635_0_main_InvokeMethod(x29, x30, java.lang.Object(List(x31))) -> f5722_0_main_InvokeMethod(x31, x29, x30) :|: TRUE (9) f5635_0_main_InvokeMethod(java.lang.Object(List(x26)), x27, x28) -> f5722_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: f5635_0_main_InvokeMethod(x29:0, x30:0, java.lang.Object(List(x31:0))) -> f5722_0_main_InvokeMethod(x31:0, x29:0, x30:0) :|: TRUE f5722_0_main_InvokeMethod'(java.lang.Object(List(x6:0)), x7:0, x8:0) -> f5625_0_main_NE(x7:0, x8:0, java.lang.Object(List(x6:0)), x9:0 - 5 * x10:0) :|: x12:0 - 3 * x13:0 > -3 && x12:0 - 3 * x13:0 < 3 && x9:0 - 5 * x10:0 < 5 && x9:0 - 5 * x10:0 > -5 && x12:0 - 3 * x13:0 = 0 && x11:0 > 0 f5625_0_main_NE(x14:0, x15:0, x16:0, x17:0) -> f5635_0_main_InvokeMethod(x15:0, x16:0, x14:0) :|: x17:0 > 0 f5722_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5625_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 f5635_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5722_0_main_InvokeMethod(x28:0, x26:0, x27:0) :|: TRUE f5722_0_main_InvokeMethod(o1529:0:0, o1501:0:0, o1450:0:0) -> f5722_0_main_InvokeMethod'(o1529:0:0, o1501:0:0, o1450:0:0) :|: TRUE f5722_0_main_InvokeMethod(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) :|: TRUE f5625_0_main_NE(o1421:0:0, o1443:0:0, java.lang.Object(List(o1484:0:0)), cons_0) -> f5635_0_main_InvokeMethod(o1443:0:0, o1484:0:0, o1421:0:0) :|: TRUE && cons_0 = 0 f5635_0_main_InvokeMethod(x:0, java.lang.Object(List(x1:0)), x2:0) -> f5722_0_main_InvokeMethod(x2:0, x:0, x1:0) :|: TRUE ---------------------------------------- (39) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f5635_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) java.lang.Object(VARIABLE) List(VARIABLE) f5722_0_main_InvokeMethod(VARIABLE, VARIABLE, VARIABLE) f5722_0_main_InvokeMethod'(VARIABLE, VARIABLE, VARIABLE) f5625_0_main_NE(VARIABLE, VARIABLE, VARIABLE, INTEGER) Removed predefined arithmetic. ---------------------------------------- (40) Obligation: Rules: f5635_0_main_InvokeMethod(x29:0, x30:0, java.lang.Object(List(x31:0))) -> f5722_0_main_InvokeMethod(x31:0, x29:0, x30:0) f5722_0_main_InvokeMethod'(java.lang.Object(List(x6:0)), x7:0, x8:0) -> f5625_0_main_NE(x7:0, x8:0, java.lang.Object(List(x6:0))) f5625_0_main_NE(x14:0, x15:0, x16:0) -> f5635_0_main_InvokeMethod(x15:0, x16:0, x14:0) f5722_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5625_0_main_NE(x33:0, x34:0, x32:0) f5635_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5722_0_main_InvokeMethod(x28:0, x26:0, x27:0) f5722_0_main_InvokeMethod(o1529:0:0, o1501:0:0, o1450:0:0) -> f5722_0_main_InvokeMethod'(o1529:0:0, o1501:0:0, o1450:0:0) f5722_0_main_InvokeMethod(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) f5625_0_main_NE(o1421:0:0, o1443:0:0, java.lang.Object(List(o1484:0:0))) -> f5635_0_main_InvokeMethod(o1443:0:0, o1484:0:0, o1421:0:0) f5635_0_main_InvokeMethod(x:0, java.lang.Object(List(x1:0)), x2:0) -> f5722_0_main_InvokeMethod(x2:0, x:0, x1: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: f5635_0_main_InvokeMethod(x29:0, x30:0, java.lang.Object(List(x31:0))) -> f5722_0_main_InvokeMethod(x31:0, x29:0, x30:0) f5722_0_main_InvokeMethod'(java.lang.Object(List(x6:0)), x7:0, x8:0) -> f5625_0_main_NE(x7:0, x8:0, java.lang.Object(List(x6:0))) f5625_0_main_NE(x14:0, x15:0, x16:0) -> f5635_0_main_InvokeMethod(x15:0, x16:0, x14:0) f5722_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5625_0_main_NE(x33:0, x34:0, x32:0) f5635_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5722_0_main_InvokeMethod(x28:0, x26:0, x27:0) f5722_0_main_InvokeMethod(o1529:0:0, o1501:0:0, o1450:0:0) -> f5722_0_main_InvokeMethod'(o1529:0:0, o1501:0:0, o1450:0:0) f5722_0_main_InvokeMethod(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) f5625_0_main_NE(o1421:0:0, o1443:0:0, java.lang.Object(List(o1484:0:0))) -> f5635_0_main_InvokeMethod(o1443:0:0, o1484:0:0, o1421:0:0) f5635_0_main_InvokeMethod(x:0, java.lang.Object(List(x1:0)), x2:0) -> f5722_0_main_InvokeMethod(x2:0, x:0, x1: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: *f5722_0_main_InvokeMethod(o1529:0:0, o1501:0:0, o1450:0:0) -> f5722_0_main_InvokeMethod'(o1529:0:0, o1501:0:0, o1450:0:0) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f5722_0_main_InvokeMethod(java.lang.Object(List(x3:0)), x4:0, x5:0) -> f5722_0_main_InvokeMethod'(java.lang.Object(List(x3:0)), x4:0, x5:0) The graph contains the following edges 1 >= 1, 2 >= 2, 3 >= 3 *f5625_0_main_NE(x14:0, x15:0, x16:0) -> f5635_0_main_InvokeMethod(x15:0, x16:0, x14:0) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 *f5625_0_main_NE(o1421:0:0, o1443:0:0, java.lang.Object(List(o1484:0:0))) -> f5635_0_main_InvokeMethod(o1443:0:0, o1484:0:0, o1421:0:0) The graph contains the following edges 2 >= 1, 3 > 2, 1 >= 3 *f5635_0_main_InvokeMethod(x29:0, x30:0, java.lang.Object(List(x31:0))) -> f5722_0_main_InvokeMethod(x31:0, x29:0, x30:0) The graph contains the following edges 3 > 1, 1 >= 2, 2 >= 3 *f5635_0_main_InvokeMethod(java.lang.Object(List(x26:0)), x27:0, x28:0) -> f5722_0_main_InvokeMethod(x28:0, x26:0, x27:0) The graph contains the following edges 3 >= 1, 1 > 2, 2 >= 3 *f5635_0_main_InvokeMethod(x:0, java.lang.Object(List(x1:0)), x2:0) -> f5722_0_main_InvokeMethod(x2:0, x:0, x1:0) The graph contains the following edges 3 >= 1, 1 >= 2, 2 > 3 *f5722_0_main_InvokeMethod'(java.lang.Object(List(x6:0)), x7:0, x8:0) -> f5625_0_main_NE(x7:0, x8:0, java.lang.Object(List(x6:0))) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 *f5722_0_main_InvokeMethod'(x32:0, x33:0, x34:0) -> f5625_0_main_NE(x33:0, x34:0, x32:0) The graph contains the following edges 2 >= 1, 3 >= 2, 1 >= 3 ---------------------------------------- (44) YES