/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, 1032 ms] (4) JBCTerminationGraph (5) TerminationGraphToSCCProof [SOUND, 2 ms] (6) AND (7) JBCTerminationSCC (8) SCCToIRSProof [SOUND, 186 ms] (9) IRSwT (10) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (11) IRSwT (12) IRSwTTerminationDigraphProof [EQUIVALENT, 89 ms] (13) IRSwT (14) IntTRSCompressionProof [EQUIVALENT, 0 ms] (15) IRSwT (16) TempFilterProof [SOUND, 19 ms] (17) IntTRS (18) RankingReductionPairProof [EQUIVALENT, 0 ms] (19) YES (20) JBCTerminationSCC (21) SCCToIRSProof [SOUND, 143 ms] (22) IRSwT (23) IRSFormatTransformerProof [EQUIVALENT, 0 ms] (24) IRSwT (25) IRSwTTerminationDigraphProof [EQUIVALENT, 104 ms] (26) IRSwT (27) IntTRSCompressionProof [EQUIVALENT, 0 ms] (28) IRSwT (29) TempFilterProof [SOUND, 102 ms] (30) IntTRS (31) RankingReductionPairProof [EQUIVALENT, 40 ms] (32) IntTRS (33) RankingReductionPairProof [EQUIVALENT, 16 ms] (34) YES ---------------------------------------- (0) Obligation: need to prove termination of the following program: public class Parts { public static int parts(int p, int q) { if (p <= 0) return 1; else if (q <= 0) return 0; else if (q > p) return parts(p, p); else return parts(p-q, q) + parts(p, q-1); } public static void main(String args[]) { for (int p = 0; p <= args.length; p++) for (int q = 0; q <= args.length; q++) parts(p, q); } } ---------------------------------------- (1) BareJBCToJBCProof (EQUIVALENT) initialized classpath ---------------------------------------- (2) Obligation: need to prove termination of the following program: public class Parts { public static int parts(int p, int q) { if (p <= 0) return 1; else if (q <= 0) return 0; else if (q > p) return parts(p, p); else return parts(p-q, q) + parts(p, q-1); } public static void main(String args[]) { for (int p = 0; p <= args.length; p++) for (int q = 0; q <= args.length; q++) parts(p, q); } } ---------------------------------------- (3) JBCToGraph (EQUIVALENT) Constructed TerminationGraph. ---------------------------------------- (4) Obligation: Termination Graph based on JBC Program: Parts.main([Ljava/lang/String;)V: Graph of 60 nodes with 1 SCC. Parts.parts(II)I: Graph of 105 nodes with 0 SCCs. ---------------------------------------- (5) TerminationGraphToSCCProof (SOUND) Splitted TerminationGraph to 2 SCCss. ---------------------------------------- (6) Complex Obligation (AND) ---------------------------------------- (7) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Parts.parts(II)I SCC calls the following helper methods: Parts.parts(II)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (8) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 63 IRulesP rules: f1461_0_parts_GT(EOS(STATIC_1461), i80, i79, i80, i79, i80) -> f1463_0_parts_GT(EOS(STATIC_1463), i80, i79, i80, i79, i80) :|: TRUE f1463_0_parts_GT(EOS(STATIC_1463), i80, i79, i80, i79, i80) -> f1465_0_parts_Load(EOS(STATIC_1465), i80, i79, i80, i79) :|: i80 > 0 f1465_0_parts_Load(EOS(STATIC_1465), i80, i79, i80, i79) -> f1467_0_parts_GT(EOS(STATIC_1467), i80, i79, i80, i79, i79) :|: TRUE f1467_0_parts_GT(EOS(STATIC_1467), i80, i81, i80, i81, i81) -> f1470_0_parts_GT(EOS(STATIC_1470), i80, i81, i80, i81, i81) :|: TRUE f1470_0_parts_GT(EOS(STATIC_1470), i80, i81, i80, i81, i81) -> f1472_0_parts_Load(EOS(STATIC_1472), i80, i81, i80, i81) :|: i81 > 0 f1472_0_parts_Load(EOS(STATIC_1472), i80, i81, i80, i81) -> f1475_0_parts_Load(EOS(STATIC_1475), i80, i81, i80, i81, i81) :|: TRUE f1475_0_parts_Load(EOS(STATIC_1475), i80, i81, i80, i81, i81) -> f1478_0_parts_LE(EOS(STATIC_1478), i80, i81, i80, i81, i81, i80) :|: TRUE f1478_0_parts_LE(EOS(STATIC_1478), i80, i81, i80, i81, i81, i80) -> f1490_0_parts_LE(EOS(STATIC_1490), i80, i81, i80, i81, i81, i80) :|: i81 <= i80 f1478_0_parts_LE(EOS(STATIC_1478), i80, i81, i80, i81, i81, i80) -> f1491_0_parts_LE(EOS(STATIC_1491), i80, i81, i80, i81, i81, i80) :|: i81 > i80 f1490_0_parts_LE(EOS(STATIC_1490), i80, i81, i80, i81, i81, i80) -> f1496_0_parts_Load(EOS(STATIC_1496), i80, i81, i80, i81) :|: i81 <= i80 f1496_0_parts_Load(EOS(STATIC_1496), i80, i81, i80, i81) -> f1542_0_parts_Load(EOS(STATIC_1542), i80, i81, i80, i81, i80) :|: TRUE f1542_0_parts_Load(EOS(STATIC_1542), i80, i81, i80, i81, i80) -> f1545_0_parts_IntArithmetic(EOS(STATIC_1545), i80, i81, i80, i81, i80, i81) :|: TRUE f1545_0_parts_IntArithmetic(EOS(STATIC_1545), i80, i81, i80, i81, i80, i81) -> f1552_0_parts_Load(EOS(STATIC_1552), i80, i81, i80, i81, i80 - i81) :|: i80 > 0 && i81 > 0 f1552_0_parts_Load(EOS(STATIC_1552), i80, i81, i80, i81, i96) -> f1559_0_parts_InvokeMethod(EOS(STATIC_1559), i80, i81, i80, i81, i96, i81) :|: TRUE f1559_0_parts_InvokeMethod(EOS(STATIC_1559), i80, i81, i80, i81, i96, i81) -> f1578_0_parts_Load(EOS(STATIC_1578), i96, i81, i96, i81) :|: i80 >= 1 && i81 >= 1 && i81 <= i80 f1559_0_parts_InvokeMethod(EOS(STATIC_1559), i80, i81, i80, i81, i96, i81) -> f1578_1_parts_Load(EOS(STATIC_1578), i80, i81, i80, i81, i96, i81) :|: i80 >= 1 && i81 >= 1 && i81 <= i80 f1578_0_parts_Load(EOS(STATIC_1578), i96, i81, i96, i81) -> f1597_0_parts_Load(EOS(STATIC_1597), i96, i81, i96, i81) :|: TRUE f1597_0_parts_Load(EOS(STATIC_1597), i96, i81, i96, i81) -> f1460_0_parts_Load(EOS(STATIC_1460), i96, i81, i96, i81) :|: TRUE f1460_0_parts_Load(EOS(STATIC_1460), i78, i79, i78, i79) -> f1461_0_parts_GT(EOS(STATIC_1461), i78, i79, i78, i79, i78) :|: TRUE f4250_0_parts_Return(EOS(STATIC_4250), i80, i116, i80, i116) -> f4253_0_parts_Load(EOS(STATIC_4253), i80, i116, i80, i116) :|: TRUE f4253_0_parts_Load(EOS(STATIC_4253), i80, i116, i80, i116) -> f5986_0_parts_Load(EOS(STATIC_5986), i80, i116, i80, i116) :|: TRUE f5986_0_parts_Load(EOS(STATIC_5986), i80, i301, i80, i301) -> f6056_0_parts_Load(EOS(STATIC_6056), i80, i301, i80, i301) :|: TRUE f6056_0_parts_Load(EOS(STATIC_6056), i80, i563, i80, i563) -> f6059_0_parts_Load(EOS(STATIC_6059), i80, i563, i563, i80) :|: TRUE f6059_0_parts_Load(EOS(STATIC_6059), i80, i563, i563, i80) -> f6061_0_parts_ConstantStackPush(EOS(STATIC_6061), i80, i563, i80, i563) :|: TRUE f6061_0_parts_ConstantStackPush(EOS(STATIC_6061), i80, i563, i80, i563) -> f6069_0_parts_IntArithmetic(EOS(STATIC_6069), i80, i563, i80, i563, 1) :|: TRUE f6069_0_parts_IntArithmetic(EOS(STATIC_6069), i80, i563, i80, i563, matching1) -> f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80, i563, i80, i563 - 1) :|: i563 > 0 && matching1 = 1 f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80, i563, i80, i640) -> f6078_0_parts_Load(EOS(STATIC_6078), i80, i640, i80, i640) :|: i80 >= 1 && i563 >= 1 && i562 >= 1 && i563 <= i80 && i640 < i563 && i640 < i80 f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80, i563, i80, i640) -> f6078_1_parts_Load(EOS(STATIC_6078), i80, i563, i80, i640) :|: i80 >= 1 && i563 >= 1 && i562 >= 1 && i563 <= i80 && i640 < i563 && i640 < i80 f6078_0_parts_Load(EOS(STATIC_6078), i80, i640, i80, i640) -> f6081_0_parts_Load(EOS(STATIC_6081), i80, i640, i80, i640) :|: TRUE f6081_0_parts_Load(EOS(STATIC_6081), i80, i640, i80, i640) -> f1460_0_parts_Load(EOS(STATIC_1460), i80, i640, i80, i640) :|: TRUE f4261_0_parts_Return(EOS(STATIC_4261), i80, i134, i80, i134) -> f5996_0_parts_Return(EOS(STATIC_5996), i80, i134, i80, i134) :|: TRUE f5996_0_parts_Return(EOS(STATIC_5996), i80, i356, i80, i356) -> f6066_0_parts_Return(EOS(STATIC_6066), i80, i356, i80, i356) :|: TRUE f6066_0_parts_Return(EOS(STATIC_6066), i80, i626, i80, i626) -> f6072_0_parts_Load(EOS(STATIC_6072), i80, i626, i80, i626) :|: TRUE f6072_0_parts_Load(EOS(STATIC_6072), i80, i626, i80, i626) -> f6076_0_parts_Load(EOS(STATIC_6076), i80, i626, i626, i80) :|: TRUE f6076_0_parts_Load(EOS(STATIC_6076), i80, i626, i626, i80) -> f6079_0_parts_ConstantStackPush(EOS(STATIC_6079), i80, i626, i80, i626) :|: TRUE f6079_0_parts_ConstantStackPush(EOS(STATIC_6079), i80, i626, i80, i626) -> f6085_0_parts_IntArithmetic(EOS(STATIC_6085), i80, i626, i80, i626, 1) :|: TRUE f6085_0_parts_IntArithmetic(EOS(STATIC_6085), i80, i626, i80, i626, matching1) -> f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80, i626, i80, i626 - 1) :|: i626 > 0 && matching1 = 1 f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80, i626, i80, i674) -> f6088_0_parts_Load(EOS(STATIC_6088), i80, i674, i80, i674) :|: i80 >= 1 && i626 > 1 && i625 >= 1 && i674 >= 1 && i626 <= i80 && i674 < i626 && i674 < i80 f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80, i626, i80, i674) -> f6088_1_parts_Load(EOS(STATIC_6088), i80, i626, i80, i674) :|: i80 >= 1 && i626 > 1 && i625 >= 1 && i674 >= 1 && i626 <= i80 && i674 < i626 && i674 < i80 f6088_0_parts_Load(EOS(STATIC_6088), i80, i674, i80, i674) -> f6089_0_parts_Load(EOS(STATIC_6089), i80, i674, i80, i674) :|: TRUE f6089_0_parts_Load(EOS(STATIC_6089), i80, i674, i80, i674) -> f1460_0_parts_Load(EOS(STATIC_1460), i80, i674, i80, i674) :|: TRUE f5995_0_parts_Return(EOS(STATIC_5995), i80, i338, i80, i338) -> f5996_0_parts_Return(EOS(STATIC_5996), i80, i338, i80, i338) :|: TRUE f6065_0_parts_Return(EOS(STATIC_6065), i80, i608, i80, i608) -> f6066_0_parts_Return(EOS(STATIC_6066), i80, i608, i80, i608) :|: TRUE f6083_0_parts_Return(EOS(STATIC_6083), i80, i652, i80, i652) -> f6066_0_parts_Return(EOS(STATIC_6066), i80, i652, i80, i652) :|: TRUE f6114_0_parts_Return(EOS(STATIC_6114), i80, i783, i80, i783) -> f6047_0_parts_Return(EOS(STATIC_6047), i80, i783, i80, i783) :|: TRUE f6047_0_parts_Return(EOS(STATIC_6047), i80, i563, i80, i563) -> f6056_0_parts_Load(EOS(STATIC_6056), i80, i563, i80, i563) :|: TRUE f6119_0_parts_Return(EOS(STATIC_6119), i80, i816, i80, i816) -> f6047_0_parts_Return(EOS(STATIC_6047), i80, i816, i80, i816) :|: TRUE f6129_0_parts_Return(EOS(STATIC_6129), i80, i884, i80, i884) -> f6047_0_parts_Return(EOS(STATIC_6047), i80, i884, i80, i884) :|: TRUE f1491_0_parts_LE(EOS(STATIC_1491), i80, i81, i80, i81, i81, i80) -> f1499_0_parts_Load(EOS(STATIC_1499), i80, i81, i80) :|: i81 > i80 f1499_0_parts_Load(EOS(STATIC_1499), i80, i81, i80) -> f1543_0_parts_Load(EOS(STATIC_1543), i80, i81, i80, i80) :|: TRUE f1543_0_parts_Load(EOS(STATIC_1543), i80, i81, i80, i80) -> f1546_0_parts_InvokeMethod(EOS(STATIC_1546), i80, i81, i80, i80) :|: TRUE f1546_0_parts_InvokeMethod(EOS(STATIC_1546), i80, i81, i80, i80) -> f1554_0_parts_Load(EOS(STATIC_1554), i80, i80, i80, i80) :|: i80 >= 1 && i81 > 1 && i81 > i80 f1546_0_parts_InvokeMethod(EOS(STATIC_1546), i80, i81, i80, i80) -> f1554_1_parts_Load(EOS(STATIC_1554), i80, i81, i80, i80) :|: i80 >= 1 && i81 > 1 && i81 > i80 f1554_0_parts_Load(EOS(STATIC_1554), i80, i80, i80, i80) -> f1562_0_parts_Load(EOS(STATIC_1562), i80, i80, i80, i80) :|: TRUE f1562_0_parts_Load(EOS(STATIC_1562), i80, i80, i80, i80) -> f1460_0_parts_Load(EOS(STATIC_1460), i80, i80, i80, i80) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i116, i80, i116, i96, i116) -> f4250_0_parts_Return(EOS(STATIC_4250), i80, i116, i80, i116) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i134, i80, i134, i96, i134) -> f4261_0_parts_Return(EOS(STATIC_4261), i80, i134, i80, i134) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i338, i80, i338, i96, i338) -> f5995_0_parts_Return(EOS(STATIC_5995), i80, i338, i80, i338) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i608, i80, i608, i96, i608) -> f6065_0_parts_Return(EOS(STATIC_6065), i80, i608, i80, i608) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i652, i80, i652, i96, i652) -> f6083_0_parts_Return(EOS(STATIC_6083), i80, i652, i80, i652) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i783, i80, i783, i96, i783) -> f6114_0_parts_Return(EOS(STATIC_6114), i80, i783, i80, i783) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i816, i80, i816, i96, i816) -> f6119_0_parts_Return(EOS(STATIC_6119), i80, i816, i80, i816) :|: TRUE f1578_1_parts_Load(EOS(STATIC_1578), i80, i884, i80, i884, i96, i884) -> f6129_0_parts_Return(EOS(STATIC_6129), i80, i884, i80, i884) :|: TRUE Combined rules. Obtained 9 IRulesP rules: f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i79:0, i80:0, i79:0, i80:0) -> f1461_0_parts_GT(EOS(STATIC_1461), i80:0 - i79:0, i79:0, i80:0 - i79:0, i79:0, i80:0 - i79:0) :|: i80:0 > 0 && i79:0 > 0 && i80:0 >= i79:0 f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i79:0, i80:0, i79:0, i80:0) -> f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80:0, i79:0, i80:0, i79:0 - 1) :|: i80:0 > 0 && i79:0 > 0 && i80:0 >= i79:0 f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80:0, i626:0, i80:0, i674:0) -> f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i674:0, i80:0, i674:0, i80:0) :|: i626:0 > 1 && i80:0 > 0 && i625:0 > 0 && i674:0 > 0 && i80:0 >= i626:0 && i80:0 > i674:0 && i674:0 < i626:0 f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80:0, i563:0, i80:0, i640:0) -> f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i640:0, i80:0, i640:0, i80:0) :|: i563:0 > 0 && i80:0 > 0 && i562:0 > 0 && i80:0 >= i563:0 && i80:0 > i640:0 && i640:0 < i563:0 f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i79:0, i80:0, i79:0, i80:0) -> f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80:0, i79:0, i80:0, i79:0 - 1) :|: i80:0 > 0 && i79:0 > 0 && i80:0 >= i79:0 f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i79:0, i80:0, i79:0, i80:0) -> f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i80:0, i80:0, i80:0, i80:0) :|: i79:0 > 1 && i80:0 > 0 && i80:0 < i79:0 Removed following non-SCC rules: f6074_0_parts_InvokeMethod(EOS(STATIC_6074), i80:0, i563:0, i80:0, i640:0) -> f6078_1_parts_Load(EOS(STATIC_6078), i80:0, i563:0, i80:0, i640:0) :|: i563:0 > 0 && i80:0 > 0 && i562:0 > 0 && i80:0 >= i563:0 && i80:0 > i640:0 && i640:0 < i563:0 f1461_0_parts_GT(EOS(STATIC_1461), i80:0, i79:0, i80:0, i79:0, i80:0) -> f1554_1_parts_Load(EOS(STATIC_1554), i80:0, i79:0, i80:0, i80:0) :|: i79:0 > 1 && i80:0 > 0 && i80:0 < i79:0 f6087_0_parts_InvokeMethod(EOS(STATIC_6087), i80:0, i626:0, i80:0, i674:0) -> f6088_1_parts_Load(EOS(STATIC_6088), i80:0, i626:0, i80:0, i674:0) :|: i626:0 > 1 && i80:0 > 0 && i625:0 > 0 && i674:0 > 0 && i80:0 >= i626:0 && i80:0 > i674:0 && i674:0 < i626:0 Filtered constant ground arguments: f1461_0_parts_GT(x1, x2, x3, x4, x5, x6) -> f1461_0_parts_GT(x2, x3, x4, x5, x6) f6074_0_parts_InvokeMethod(x1, x2, x3, x4, x5) -> f6074_0_parts_InvokeMethod(x2, x3, x4, x5) f6087_0_parts_InvokeMethod(x1, x2, x3, x4, x5) -> f6087_0_parts_InvokeMethod(x2, x3, x4, x5) Filtered duplicate arguments: f1461_0_parts_GT(x1, x2, x3, x4, x5) -> f1461_0_parts_GT(x4, x5) f6074_0_parts_InvokeMethod(x1, x2, x3, x4) -> f6074_0_parts_InvokeMethod(x2, x3, x4) f6087_0_parts_InvokeMethod(x1, x2, x3, x4) -> f6087_0_parts_InvokeMethod(x2, x3, x4) Finished conversion. Obtained 6 rules.P rules: f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i79:0, i80:0 - i79:0) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 f1461_0_parts_GT(i79:0, i80:0) -> f6074_0_parts_InvokeMethod(i79:0, i80:0, i79:0 - 1) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 f6087_0_parts_InvokeMethod(i626:0, i80:0, i674:0) -> f1461_0_parts_GT(i674:0, i80:0) :|: i80:0 > 0 && i626:0 > 1 && i625:0 > 0 && i674:0 > 0 && i80:0 >= i626:0 && i674:0 < i626:0 && i80:0 > i674:0 f6074_0_parts_InvokeMethod(i563:0, i80:0, i640:0) -> f1461_0_parts_GT(i640:0, i80:0) :|: i80:0 > 0 && i563:0 > 0 && i562:0 > 0 && i80:0 >= i563:0 && i640:0 < i563:0 && i80:0 > i640:0 f1461_0_parts_GT(i79:0, i80:0) -> f6087_0_parts_InvokeMethod(i79:0, i80:0, i79:0 - 1) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i80:0, i80:0) :|: i80:0 > 0 && i80:0 < i79:0 && i79:0 > 1 ---------------------------------------- (9) Obligation: Rules: f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i79:0, i80:0 - i79:0) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 f1461_0_parts_GT(x, x1) -> f6074_0_parts_InvokeMethod(x, x1, x - 1) :|: x > 0 && x1 >= x && x1 > 0 f6087_0_parts_InvokeMethod(x2, x3, x4) -> f1461_0_parts_GT(x4, x3) :|: x3 > 0 && x2 > 1 && x5 > 0 && x4 > 0 && x3 >= x2 && x4 < x2 && x3 > x4 f6074_0_parts_InvokeMethod(x6, x7, x8) -> f1461_0_parts_GT(x8, x7) :|: x7 > 0 && x6 > 0 && x9 > 0 && x7 >= x6 && x8 < x6 && x7 > x8 f1461_0_parts_GT(x10, x11) -> f6087_0_parts_InvokeMethod(x10, x11, x10 - 1) :|: x10 > 0 && x11 >= x10 && x11 > 0 f1461_0_parts_GT(x12, x13) -> f1461_0_parts_GT(x13, x13) :|: x13 > 0 && x13 < x12 && x12 > 1 ---------------------------------------- (10) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (11) Obligation: Rules: f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i79:0, arith) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 && arith = i80:0 - i79:0 f1461_0_parts_GT(x14, x15) -> f6074_0_parts_InvokeMethod(x14, x15, x16) :|: x14 > 0 && x15 >= x14 && x15 > 0 && x16 = x14 - 1 f6087_0_parts_InvokeMethod(x2, x3, x4) -> f1461_0_parts_GT(x4, x3) :|: x3 > 0 && x2 > 1 && x5 > 0 && x4 > 0 && x3 >= x2 && x4 < x2 && x3 > x4 f6074_0_parts_InvokeMethod(x6, x7, x8) -> f1461_0_parts_GT(x8, x7) :|: x7 > 0 && x6 > 0 && x9 > 0 && x7 >= x6 && x8 < x6 && x7 > x8 f1461_0_parts_GT(x17, x18) -> f6087_0_parts_InvokeMethod(x17, x18, x19) :|: x17 > 0 && x18 >= x17 && x18 > 0 && x19 = x17 - 1 f1461_0_parts_GT(x12, x13) -> f1461_0_parts_GT(x13, x13) :|: x13 > 0 && x13 < x12 && x12 > 1 ---------------------------------------- (12) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i79:0, arith) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 && arith = i80:0 - i79:0 (2) f1461_0_parts_GT(x14, x15) -> f6074_0_parts_InvokeMethod(x14, x15, x16) :|: x14 > 0 && x15 >= x14 && x15 > 0 && x16 = x14 - 1 (3) f6087_0_parts_InvokeMethod(x2, x3, x4) -> f1461_0_parts_GT(x4, x3) :|: x3 > 0 && x2 > 1 && x5 > 0 && x4 > 0 && x3 >= x2 && x4 < x2 && x3 > x4 (4) f6074_0_parts_InvokeMethod(x6, x7, x8) -> f1461_0_parts_GT(x8, x7) :|: x7 > 0 && x6 > 0 && x9 > 0 && x7 >= x6 && x8 < x6 && x7 > x8 (5) f1461_0_parts_GT(x17, x18) -> f6087_0_parts_InvokeMethod(x17, x18, x19) :|: x17 > 0 && x18 >= x17 && x18 > 0 && x19 = x17 - 1 (6) f1461_0_parts_GT(x12, x13) -> f1461_0_parts_GT(x13, x13) :|: x13 > 0 && x13 < x12 && x12 > 1 Arcs: (1) -> (1), (2), (5), (6) (2) -> (4) (3) -> (1), (2), (5) (4) -> (1), (2), (5) (5) -> (3) (6) -> (1), (2), (5) This digraph is fully evaluated! ---------------------------------------- (13) Obligation: Termination digraph: Nodes: (1) f1461_0_parts_GT(i79:0, i80:0) -> f1461_0_parts_GT(i79:0, arith) :|: i79:0 > 0 && i80:0 >= i79:0 && i80:0 > 0 && arith = i80:0 - i79:0 (2) f6087_0_parts_InvokeMethod(x2, x3, x4) -> f1461_0_parts_GT(x4, x3) :|: x3 > 0 && x2 > 1 && x5 > 0 && x4 > 0 && x3 >= x2 && x4 < x2 && x3 > x4 (3) f1461_0_parts_GT(x17, x18) -> f6087_0_parts_InvokeMethod(x17, x18, x19) :|: x17 > 0 && x18 >= x17 && x18 > 0 && x19 = x17 - 1 (4) f6074_0_parts_InvokeMethod(x6, x7, x8) -> f1461_0_parts_GT(x8, x7) :|: x7 > 0 && x6 > 0 && x9 > 0 && x7 >= x6 && x8 < x6 && x7 > x8 (5) f1461_0_parts_GT(x14, x15) -> f6074_0_parts_InvokeMethod(x14, x15, x16) :|: x14 > 0 && x15 >= x14 && x15 > 0 && x16 = x14 - 1 (6) f1461_0_parts_GT(x12, x13) -> f1461_0_parts_GT(x13, x13) :|: x13 > 0 && x13 < x12 && x12 > 1 Arcs: (1) -> (1), (3), (5), (6) (2) -> (1), (3), (5) (3) -> (2) (4) -> (1), (3), (5) (5) -> (4) (6) -> (1), (3), (5) This digraph is fully evaluated! ---------------------------------------- (14) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (15) Obligation: Rules: f1461_0_parts_GT(x17:0, x18:0) -> f1461_0_parts_GT(x17:0 - 1, x18:0) :|: x18:0 > x17:0 - 1 && x17:0 - 1 < x17:0 && x18:0 >= x17:0 && x5:0 > 0 && x17:0 > 1 && x18:0 > 0 f1461_0_parts_GT(x14:0, x15:0) -> f1461_0_parts_GT(x14:0 - 1, x15:0) :|: x15:0 > x14:0 - 1 && x14:0 - 1 < x14:0 && x15:0 >= x14:0 && x9:0 > 0 && x14:0 > 0 && x15:0 > 0 f1461_0_parts_GT(x12:0, x13:0) -> f1461_0_parts_GT(x13:0, x13:0) :|: x13:0 > 0 && x13:0 < x12:0 && x12:0 > 1 f1461_0_parts_GT(i79:0:0, i80:0:0) -> f1461_0_parts_GT(i79:0:0, i80:0:0 - i79:0:0) :|: i79:0:0 > 0 && i80:0:0 >= i79:0:0 && i80:0:0 > 0 ---------------------------------------- (16) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1461_0_parts_GT(INTEGER, INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (17) Obligation: Rules: f1461_0_parts_GT(x17:0, x18:0) -> f1461_0_parts_GT(c, x18:0) :|: c = x17:0 - 1 && (x18:0 > x17:0 - 1 && x17:0 - 1 < x17:0 && x18:0 >= x17:0 && x5:0 > 0 && x17:0 > 1 && x18:0 > 0) f1461_0_parts_GT(x14:0, x15:0) -> f1461_0_parts_GT(c1, x15:0) :|: c1 = x14:0 - 1 && (x15:0 > x14:0 - 1 && x14:0 - 1 < x14:0 && x15:0 >= x14:0 && x9:0 > 0 && x14:0 > 0 && x15:0 > 0) f1461_0_parts_GT(x12:0, x13:0) -> f1461_0_parts_GT(x13:0, x13:0) :|: x13:0 > 0 && x13:0 < x12:0 && x12:0 > 1 f1461_0_parts_GT(i79:0:0, i80:0:0) -> f1461_0_parts_GT(i79:0:0, c2) :|: c2 = i80:0:0 - i79:0:0 && (i79:0:0 > 0 && i80:0:0 >= i79:0:0 && i80:0:0 > 0) ---------------------------------------- (18) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1461_0_parts_GT ] = f1461_0_parts_GT_2 + f1461_0_parts_GT_1 The following rules are decreasing: f1461_0_parts_GT(x17:0, x18:0) -> f1461_0_parts_GT(c, x18:0) :|: c = x17:0 - 1 && (x18:0 > x17:0 - 1 && x17:0 - 1 < x17:0 && x18:0 >= x17:0 && x5:0 > 0 && x17:0 > 1 && x18:0 > 0) f1461_0_parts_GT(x14:0, x15:0) -> f1461_0_parts_GT(c1, x15:0) :|: c1 = x14:0 - 1 && (x15:0 > x14:0 - 1 && x14:0 - 1 < x14:0 && x15:0 >= x14:0 && x9:0 > 0 && x14:0 > 0 && x15:0 > 0) f1461_0_parts_GT(x12:0, x13:0) -> f1461_0_parts_GT(x13:0, x13:0) :|: x13:0 > 0 && x13:0 < x12:0 && x12:0 > 1 f1461_0_parts_GT(i79:0:0, i80:0:0) -> f1461_0_parts_GT(i79:0:0, c2) :|: c2 = i80:0:0 - i79:0:0 && (i79:0:0 > 0 && i80:0:0 >= i79:0:0 && i80:0:0 > 0) The following rules are bounded: f1461_0_parts_GT(x17:0, x18:0) -> f1461_0_parts_GT(c, x18:0) :|: c = x17:0 - 1 && (x18:0 > x17:0 - 1 && x17:0 - 1 < x17:0 && x18:0 >= x17:0 && x5:0 > 0 && x17:0 > 1 && x18:0 > 0) f1461_0_parts_GT(x14:0, x15:0) -> f1461_0_parts_GT(c1, x15:0) :|: c1 = x14:0 - 1 && (x15:0 > x14:0 - 1 && x14:0 - 1 < x14:0 && x15:0 >= x14:0 && x9:0 > 0 && x14:0 > 0 && x15:0 > 0) f1461_0_parts_GT(x12:0, x13:0) -> f1461_0_parts_GT(x13:0, x13:0) :|: x13:0 > 0 && x13:0 < x12:0 && x12:0 > 1 f1461_0_parts_GT(i79:0:0, i80:0:0) -> f1461_0_parts_GT(i79:0:0, c2) :|: c2 = i80:0:0 - i79:0:0 && (i79:0:0 > 0 && i80:0:0 >= i79:0:0 && i80:0:0 > 0) ---------------------------------------- (19) YES ---------------------------------------- (20) Obligation: SCC of termination graph based on JBC Program. SCC contains nodes from the following methods: Parts.main([Ljava/lang/String;)V SCC calls the following helper methods: Parts.parts(II)I Performed SCC analyses: *Used field analysis yielded the following read fields: *Marker field analysis yielded the following relations that could be markers: ---------------------------------------- (21) SCCToIRSProof (SOUND) Transformed FIGraph SCCs to intTRSs. Log: Generated rules. Obtained 63 IRulesP rules: f394_0_main_Load(EOS(STATIC_394), java.lang.Object(o8sub), java.lang.Object(o8sub), i23, i23) -> f395_0_main_ArrayLength(EOS(STATIC_395), java.lang.Object(o8sub), java.lang.Object(o8sub), i23, i23, java.lang.Object(o8sub)) :|: TRUE f395_0_main_ArrayLength(EOS(STATIC_395), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, java.lang.Object(ARRAY(i25))) -> f397_0_main_ArrayLength(EOS(STATIC_397), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, java.lang.Object(ARRAY(i25))) :|: i25 >= 0 f397_0_main_ArrayLength(EOS(STATIC_397), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, java.lang.Object(ARRAY(i25))) -> f400_0_main_GT(EOS(STATIC_400), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, i25) :|: i25 >= 0 f400_0_main_GT(EOS(STATIC_400), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, i25) -> f410_0_main_GT(EOS(STATIC_410), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, i25) :|: i23 <= i25 f410_0_main_GT(EOS(STATIC_410), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, i23, i25) -> f441_0_main_ConstantStackPush(EOS(STATIC_441), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23) :|: i23 <= i25 f441_0_main_ConstantStackPush(EOS(STATIC_441), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23) -> f445_0_main_Store(EOS(STATIC_445), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, 0) :|: TRUE f445_0_main_Store(EOS(STATIC_445), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, matching1) -> f447_0_main_Load(EOS(STATIC_447), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, 0) :|: TRUE && matching1 = 0 f447_0_main_Load(EOS(STATIC_447), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, matching1) -> f577_0_main_Load(EOS(STATIC_577), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i23, 0) :|: TRUE && matching1 = 0 f577_0_main_Load(EOS(STATIC_577), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i34, i35) -> f776_0_main_Load(EOS(STATIC_776), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i34, i35) :|: TRUE f776_0_main_Load(EOS(STATIC_776), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i56, i57) -> f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i56, i57) :|: TRUE f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91) -> f1544_0_main_Load(EOS(STATIC_1544), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91) :|: TRUE f1544_0_main_Load(EOS(STATIC_1544), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91) -> f1547_0_main_ArrayLength(EOS(STATIC_1547), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, java.lang.Object(ARRAY(i25))) :|: TRUE f1547_0_main_ArrayLength(EOS(STATIC_1547), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, java.lang.Object(ARRAY(i25))) -> f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) :|: i25 >= 0 f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) -> f1575_0_main_GT(EOS(STATIC_1575), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) :|: i91 > i25 f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) -> f1576_0_main_GT(EOS(STATIC_1576), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) :|: i91 <= i25 f1575_0_main_GT(EOS(STATIC_1575), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) -> f1583_0_main_Inc(EOS(STATIC_1583), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90) :|: i91 > i25 f1583_0_main_Inc(EOS(STATIC_1583), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90) -> f1600_0_main_JMP(EOS(STATIC_1600), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90 + 1) :|: TRUE f1600_0_main_JMP(EOS(STATIC_1600), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i97) -> f1632_0_main_Load(EOS(STATIC_1632), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i97) :|: TRUE f1632_0_main_Load(EOS(STATIC_1632), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i97) -> f393_0_main_Load(EOS(STATIC_393), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i97) :|: TRUE f393_0_main_Load(EOS(STATIC_393), java.lang.Object(o8sub), java.lang.Object(o8sub), i23) -> f394_0_main_Load(EOS(STATIC_394), java.lang.Object(o8sub), java.lang.Object(o8sub), i23, i23) :|: TRUE f1576_0_main_GT(EOS(STATIC_1576), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i91, i25) -> f1593_0_main_Load(EOS(STATIC_1593), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91) :|: i91 <= i25 f1593_0_main_Load(EOS(STATIC_1593), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91) -> f1603_0_main_Load(EOS(STATIC_1603), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90) :|: TRUE f1603_0_main_Load(EOS(STATIC_1603), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90) -> f1633_0_main_InvokeMethod(EOS(STATIC_1633), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90, i91) :|: TRUE f1633_0_main_InvokeMethod(EOS(STATIC_1633), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90, i91) -> f2310_0_parts_Load(EOS(STATIC_2310), i90, i91, i90, i91) :|: i25 >= i90 && i91 <= i25 f1633_0_main_InvokeMethod(EOS(STATIC_1633), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90, i91) -> f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i90, i91, i90, i91) :|: i25 >= i90 && i91 <= i25 f2310_0_parts_Load(EOS(STATIC_2310), i90, i91, i90, i91) -> f6516_0_parts_Load(EOS(STATIC_6516), i90, i91, i90, i91) :|: TRUE f5918_0_parts_Return(EOS(STATIC_5918), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i143) -> f5924_0_main_StackPop(EOS(STATIC_5924), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i143) :|: TRUE && matching1 = 0 f5924_0_main_StackPop(EOS(STATIC_5924), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i143) -> f5929_0_main_Inc(EOS(STATIC_5929), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i143) :|: TRUE && matching1 = 0 f5929_0_main_Inc(EOS(STATIC_5929), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i143) -> f5937_0_main_JMP(EOS(STATIC_5937), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i143 + 1) :|: TRUE && matching1 = 0 f5937_0_main_JMP(EOS(STATIC_5937), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i180) -> f5942_0_main_Load(EOS(STATIC_5942), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i180) :|: TRUE && matching1 = 0 f5942_0_main_Load(EOS(STATIC_5942), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i180) -> f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i180) :|: TRUE && matching1 = 0 f5919_0_parts_Return(EOS(STATIC_5919), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1, matching2) -> f5925_0_main_StackPop(EOS(STATIC_5925), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f5925_0_main_StackPop(EOS(STATIC_5925), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1, matching2) -> f5930_0_main_Inc(EOS(STATIC_5930), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f5930_0_main_Inc(EOS(STATIC_5930), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1) -> f5938_0_main_JMP(EOS(STATIC_5938), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 1) :|: TRUE && matching1 = 0 f5938_0_main_JMP(EOS(STATIC_5938), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1) -> f5943_0_main_Load(EOS(STATIC_5943), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 1) :|: TRUE && matching1 = 1 f5943_0_main_Load(EOS(STATIC_5943), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1) -> f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 1) :|: TRUE && matching1 = 1 f5920_0_parts_Return(EOS(STATIC_5920), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i150, i152) -> f5998_0_parts_Return(EOS(STATIC_5998), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i150, i152) :|: TRUE f5998_0_parts_Return(EOS(STATIC_5998), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i361, i362) -> f6068_0_parts_Return(EOS(STATIC_6068), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i361, i362) :|: TRUE f6068_0_parts_Return(EOS(STATIC_6068), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632) -> f6073_0_main_StackPop(EOS(STATIC_6073), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632) :|: TRUE f6073_0_main_StackPop(EOS(STATIC_6073), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632) -> f6077_0_main_Inc(EOS(STATIC_6077), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632) :|: TRUE f6077_0_main_Inc(EOS(STATIC_6077), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632) -> f6080_0_main_JMP(EOS(STATIC_6080), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i632 + 1) :|: TRUE f6080_0_main_JMP(EOS(STATIC_6080), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i662) -> f6086_0_main_Load(EOS(STATIC_6086), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i662) :|: TRUE f6086_0_main_Load(EOS(STATIC_6086), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i662) -> f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i631, i662) :|: TRUE f5997_0_parts_Return(EOS(STATIC_5997), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i345, i347) -> f5998_0_parts_Return(EOS(STATIC_5998), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i345, i347) :|: TRUE f6067_0_parts_Return(EOS(STATIC_6067), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i615, i617) -> f6068_0_parts_Return(EOS(STATIC_6068), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i615, i617) :|: TRUE f6084_0_parts_Return(EOS(STATIC_6084), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i659, i661) -> f6068_0_parts_Return(EOS(STATIC_6068), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i659, i661) :|: TRUE f6115_0_parts_Return(EOS(STATIC_6115), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i790, i792) -> f6049_0_parts_Return(EOS(STATIC_6049), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i790, i792) :|: TRUE f6049_0_parts_Return(EOS(STATIC_6049), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569) -> f6057_0_main_StackPop(EOS(STATIC_6057), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569) :|: TRUE f6057_0_main_StackPop(EOS(STATIC_6057), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569) -> f6060_0_main_Inc(EOS(STATIC_6060), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569) :|: TRUE f6060_0_main_Inc(EOS(STATIC_6060), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569) -> f6062_0_main_JMP(EOS(STATIC_6062), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i569 + 1) :|: TRUE f6062_0_main_JMP(EOS(STATIC_6062), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i618) -> f6070_0_main_Load(EOS(STATIC_6070), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i618) :|: TRUE f6070_0_main_Load(EOS(STATIC_6070), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i618) -> f1541_0_main_Load(EOS(STATIC_1541), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i568, i618) :|: TRUE f6120_0_parts_Return(EOS(STATIC_6120), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i823, i825) -> f6049_0_parts_Return(EOS(STATIC_6049), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i823, i825) :|: TRUE f6130_0_parts_Return(EOS(STATIC_6130), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i891, i893) -> f6049_0_parts_Return(EOS(STATIC_6049), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i891, i893) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), matching1, i143, matching2, i143) -> f5918_0_parts_Return(EOS(STATIC_5918), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), 0, i143) :|: TRUE && matching1 = 0 && matching2 = 0 f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, matching1, i146, matching2) -> f5919_0_parts_Return(EOS(STATIC_5919), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i146, 0, 0) :|: TRUE && matching1 = 0 && matching2 = 0 f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i150, i152, i150, i152) -> f5920_0_parts_Return(EOS(STATIC_5920), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i150, i152) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i345, i347, i345, i347) -> f5997_0_parts_Return(EOS(STATIC_5997), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i345, i347) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i615, i617, i615, i617) -> f6067_0_parts_Return(EOS(STATIC_6067), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i615, i617) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i659, i661, i659, i661) -> f6084_0_parts_Return(EOS(STATIC_6084), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i659, i661) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i790, i792, i790, i792) -> f6115_0_parts_Return(EOS(STATIC_6115), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i790, i792) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i823, i825, i823, i825) -> f6120_0_parts_Return(EOS(STATIC_6120), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i823, i825) :|: TRUE f2310_1_parts_Load(EOS(STATIC_2310), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i891, i893, i891, i893) -> f6130_0_parts_Return(EOS(STATIC_6130), java.lang.Object(ARRAY(i25)), java.lang.Object(ARRAY(i25)), i891, i893) :|: TRUE Combined rules. Obtained 5 IRulesP rules: f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i91:0, i25:0) -> f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0 + 1, 0, 0, i25:0) :|: i25:0 > -1 && i90:0 + 1 <= i25:0 && i91:0 > i25:0 f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), 0, i91:0, i91:0, i25:0) -> f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), 0, i91:0 + 1, i91:0 + 1, i25:0) :|: i91:0 <= i25:0 && i25:0 > -1 f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, 0, 0, i25:0) -> f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, 1, 1, i25:0) :|: i25:0 > -1 && i90:0 <= i25:0 f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i91:0, i25:0) -> f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, i91:0 + 1, i91:0 + 1, i25:0) :|: i91:0 <= i25:0 && i25:0 > -1 && i90:0 <= i25:0 Removed following non-SCC rules: f1556_0_main_GT(EOS(STATIC_1556), java.lang.Object(ARRAY(i25:0)), java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i91:0, i25:0) -> f6516_0_parts_Load(EOS(STATIC_6516), i90:0, i91:0, i90:0, i91:0) :|: i91:0 <= i25:0 && i90:0 <= i25:0 Filtered constant ground arguments: f1556_0_main_GT(x1, x2, x3, x4, x5, x6, x7) -> f1556_0_main_GT(x2, x3, x4, x5, x6, x7) EOS(x1) -> EOS Filtered duplicate arguments: f1556_0_main_GT(x1, x2, x3, x4, x5, x6) -> f1556_0_main_GT(x2, x3, x5, x6) Finished conversion. Obtained 4 rules.P rules: f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0 + 1, 0, i25:0, i25:0) :|: i90:0 + 1 <= i25:0 && i91:0 > i25:0 && i25:0 > -1 f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), cons_0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), 0, i91:0 + 1, i25:0, i25:0) :|: i91:0 <= i25:0 && i25:0 > -1 && cons_0 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, cons_0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, 1, i25:0, i25:0) :|: i25:0 > -1 && i90:0 <= i25:0 && cons_0 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0 + 1, i25:0, i25:0) :|: i25:0 > -1 && i90:0 <= i25:0 && i91:0 <= i25:0 ---------------------------------------- (22) Obligation: Rules: f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0 + 1, 0, i25:0, i25:0) :|: i90:0 + 1 <= i25:0 && i91:0 > i25:0 && i25:0 > -1 f1556_0_main_GT(java.lang.Object(ARRAY(x)), x1, x2, x, x) -> f1556_0_main_GT(java.lang.Object(ARRAY(x)), 0, x2 + 1, x, x) :|: x2 <= x && x > -1 && x1 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3) -> f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, 1, x3, x3) :|: x3 > -1 && x4 <= x3 && x5 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(x6)), x7, x8, x6, x6) -> f1556_0_main_GT(java.lang.Object(ARRAY(x6)), x7, x8 + 1, x6, x6) :|: x6 > -1 && x7 <= x6 && x8 <= x6 ---------------------------------------- (23) IRSFormatTransformerProof (EQUIVALENT) Reformatted IRS to match normalized format (transformed away non-linear left-hand sides, !=, / and %). ---------------------------------------- (24) Obligation: Rules: f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), arith, 0, i25:0, i25:0) :|: i90:0 + 1 <= i25:0 && i91:0 > i25:0 && i25:0 > -1 && arith = i90:0 + 1 f1556_0_main_GT(java.lang.Object(ARRAY(x9)), x10, x11, x9, x9) -> f1556_0_main_GT(java.lang.Object(ARRAY(x9)), 0, x12, x9, x9) :|: x11 <= x9 && x9 > -1 && x10 = 0 && x12 = x11 + 1 f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3) -> f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, 1, x3, x3) :|: x3 > -1 && x4 <= x3 && x5 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x15, x13, x13) -> f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x16, x13, x13) :|: x13 > -1 && x14 <= x13 && x15 <= x13 && x16 = x15 + 1 ---------------------------------------- (25) IRSwTTerminationDigraphProof (EQUIVALENT) Constructed termination digraph! Nodes: (1) f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), arith, 0, i25:0, i25:0) :|: i90:0 + 1 <= i25:0 && i91:0 > i25:0 && i25:0 > -1 && arith = i90:0 + 1 (2) f1556_0_main_GT(java.lang.Object(ARRAY(x9)), x10, x11, x9, x9) -> f1556_0_main_GT(java.lang.Object(ARRAY(x9)), 0, x12, x9, x9) :|: x11 <= x9 && x9 > -1 && x10 = 0 && x12 = x11 + 1 (3) f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3) -> f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, 1, x3, x3) :|: x3 > -1 && x4 <= x3 && x5 = 0 (4) f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x15, x13, x13) -> f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x16, x13, x13) :|: x13 > -1 && x14 <= x13 && x15 <= x13 && x16 = x15 + 1 Arcs: (1) -> (2), (3), (4) (2) -> (1), (2), (3), (4) (3) -> (1), (2), (4) (4) -> (1), (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (26) Obligation: Termination digraph: Nodes: (1) f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), i90:0, i91:0, i25:0, i25:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0)), arith, 0, i25:0, i25:0) :|: i90:0 + 1 <= i25:0 && i91:0 > i25:0 && i25:0 > -1 && arith = i90:0 + 1 (2) f1556_0_main_GT(java.lang.Object(ARRAY(x9)), x10, x11, x9, x9) -> f1556_0_main_GT(java.lang.Object(ARRAY(x9)), 0, x12, x9, x9) :|: x11 <= x9 && x9 > -1 && x10 = 0 && x12 = x11 + 1 (3) f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, x5, x3, x3) -> f1556_0_main_GT(java.lang.Object(ARRAY(x3)), x4, 1, x3, x3) :|: x3 > -1 && x4 <= x3 && x5 = 0 (4) f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x15, x13, x13) -> f1556_0_main_GT(java.lang.Object(ARRAY(x13)), x14, x16, x13, x13) :|: x13 > -1 && x14 <= x13 && x15 <= x13 && x16 = x15 + 1 Arcs: (1) -> (2), (3), (4) (2) -> (1), (2), (3), (4) (3) -> (1), (2), (4) (4) -> (1), (2), (3), (4) This digraph is fully evaluated! ---------------------------------------- (27) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (28) Obligation: Rules: f1556_0_main_GT(java.lang.Object(ARRAY(x13:0)), x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(x13:0)), x14:0, x15:0 + 1, x13:0, x13:0) :|: x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0 f1556_0_main_GT(java.lang.Object(ARRAY(x3:0)), x4:0, cons_0, x3:0, x3:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(x3:0)), x4:0, 1, x3:0, x3:0) :|: x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(x)), x1, x2, x, x) -> f1556_0_main_GT(java.lang.Object(ARRAY(x)), 0, x2 + 1, x, x) :|: x >= x2 && x > -1 && x1 = 0 f1556_0_main_GT(java.lang.Object(ARRAY(i25:0:0)), i90:0:0, i91:0:0, i25:0:0, i25:0:0) -> f1556_0_main_GT(java.lang.Object(ARRAY(i25:0:0)), i90:0:0 + 1, 0, i25:0:0, i25:0:0) :|: i90:0:0 + 1 <= i25:0:0 && i91:0:0 > i25:0:0 && i25:0:0 > -1 ---------------------------------------- (29) TempFilterProof (SOUND) Used the following sort dictionary for filtering: f1556_0_main_GT(VARIABLE, VARIABLE, VARIABLE, INTEGER, INTEGER) java.lang.Object(VARIABLE) ARRAY(INTEGER) Replaced non-predefined constructor symbols by 0. ---------------------------------------- (30) Obligation: Rules: f1556_0_main_GT(c, x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(c1, x14:0, c2, x13:0, x13:0) :|: c2 = x15:0 + 1 && (c1 = 0 && c = 0) && (x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0) f1556_0_main_GT(c3, x4:0, c4, x3:0, x3:0) -> f1556_0_main_GT(c5, x4:0, c6, x3:0, x3:0) :|: c6 = 1 && (c5 = 0 && (c4 = 0 && c3 = 0)) && (x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0) f1556_0_main_GT(c7, c8, x2, x, x) -> f1556_0_main_GT(c9, c10, c11, x, x) :|: c11 = x2 + 1 && (c10 = 0 && (c9 = 0 && (c8 = 0 && c7 = 0))) && (x >= x2 && x > -1 && x1 = 0) f1556_0_main_GT(c12, i90:0:0, i91:0:0, i25:0:0, i25:0:0) -> f1556_0_main_GT(c13, c14, c15, i25:0:0, i25:0:0) :|: c15 = 0 && (c14 = i90:0:0 + 1 && (c13 = 0 && c12 = 0)) && (i90:0:0 + 1 <= i25:0:0 && i91:0:0 > i25:0:0 && i25:0:0 > -1) ---------------------------------------- (31) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1556_0_main_GT ] = f1556_0_main_GT_5 + -1*f1556_0_main_GT_2 The following rules are decreasing: f1556_0_main_GT(c12, i90:0:0, i91:0:0, i25:0:0, i25:0:0) -> f1556_0_main_GT(c13, c14, c15, i25:0:0, i25:0:0) :|: c15 = 0 && (c14 = i90:0:0 + 1 && (c13 = 0 && c12 = 0)) && (i90:0:0 + 1 <= i25:0:0 && i91:0:0 > i25:0:0 && i25:0:0 > -1) The following rules are bounded: f1556_0_main_GT(c, x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(c1, x14:0, c2, x13:0, x13:0) :|: c2 = x15:0 + 1 && (c1 = 0 && c = 0) && (x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0) f1556_0_main_GT(c3, x4:0, c4, x3:0, x3:0) -> f1556_0_main_GT(c5, x4:0, c6, x3:0, x3:0) :|: c6 = 1 && (c5 = 0 && (c4 = 0 && c3 = 0)) && (x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0) f1556_0_main_GT(c7, c8, x2, x, x) -> f1556_0_main_GT(c9, c10, c11, x, x) :|: c11 = x2 + 1 && (c10 = 0 && (c9 = 0 && (c8 = 0 && c7 = 0))) && (x >= x2 && x > -1 && x1 = 0) f1556_0_main_GT(c12, i90:0:0, i91:0:0, i25:0:0, i25:0:0) -> f1556_0_main_GT(c13, c14, c15, i25:0:0, i25:0:0) :|: c15 = 0 && (c14 = i90:0:0 + 1 && (c13 = 0 && c12 = 0)) && (i90:0:0 + 1 <= i25:0:0 && i91:0:0 > i25:0:0 && i25:0:0 > -1) ---------------------------------------- (32) Obligation: Rules: f1556_0_main_GT(c, x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(c1, x14:0, c2, x13:0, x13:0) :|: c2 = x15:0 + 1 && (c1 = 0 && c = 0) && (x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0) f1556_0_main_GT(c3, x4:0, c4, x3:0, x3:0) -> f1556_0_main_GT(c5, x4:0, c6, x3:0, x3:0) :|: c6 = 1 && (c5 = 0 && (c4 = 0 && c3 = 0)) && (x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0) f1556_0_main_GT(c7, c8, x2, x, x) -> f1556_0_main_GT(c9, c10, c11, x, x) :|: c11 = x2 + 1 && (c10 = 0 && (c9 = 0 && (c8 = 0 && c7 = 0))) && (x >= x2 && x > -1 && x1 = 0) ---------------------------------------- (33) RankingReductionPairProof (EQUIVALENT) Interpretation: [ f1556_0_main_GT ] = f1556_0_main_GT_5 + -1*f1556_0_main_GT_3 The following rules are decreasing: f1556_0_main_GT(c, x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(c1, x14:0, c2, x13:0, x13:0) :|: c2 = x15:0 + 1 && (c1 = 0 && c = 0) && (x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0) f1556_0_main_GT(c3, x4:0, c4, x3:0, x3:0) -> f1556_0_main_GT(c5, x4:0, c6, x3:0, x3:0) :|: c6 = 1 && (c5 = 0 && (c4 = 0 && c3 = 0)) && (x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0) f1556_0_main_GT(c7, c8, x2, x, x) -> f1556_0_main_GT(c9, c10, c11, x, x) :|: c11 = x2 + 1 && (c10 = 0 && (c9 = 0 && (c8 = 0 && c7 = 0))) && (x >= x2 && x > -1 && x1 = 0) The following rules are bounded: f1556_0_main_GT(c, x14:0, x15:0, x13:0, x13:0) -> f1556_0_main_GT(c1, x14:0, c2, x13:0, x13:0) :|: c2 = x15:0 + 1 && (c1 = 0 && c = 0) && (x13:0 > -1 && x14:0 <= x13:0 && x15:0 <= x13:0) f1556_0_main_GT(c3, x4:0, c4, x3:0, x3:0) -> f1556_0_main_GT(c5, x4:0, c6, x3:0, x3:0) :|: c6 = 1 && (c5 = 0 && (c4 = 0 && c3 = 0)) && (x3:0 > -1 && x4:0 <= x3:0 && cons_0 = 0) f1556_0_main_GT(c7, c8, x2, x, x) -> f1556_0_main_GT(c9, c10, c11, x, x) :|: c11 = x2 + 1 && (c10 = 0 && (c9 = 0 && (c8 = 0 && c7 = 0))) && (x >= x2 && x > -1 && x1 = 0) ---------------------------------------- (34) YES