YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToIRSProof [EQUIVALENT, 0 ms] (2) IntTRS (3) TerminationGraphProcessor [SOUND, 106 ms] (4) IntTRS (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] (6) IntTRS (7) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (8) IntTRS (9) PolynomialOrderProcessor [EQUIVALENT, 16 ms] (10) AND (11) IntTRS (12) TerminationGraphProcessor [EQUIVALENT, 16 ms] (13) YES (14) IntTRS (15) TerminationGraphProcessor [EQUIVALENT, 0 ms] (16) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(c, flag, x, y, z) -> f2(0, flag, x, y, z) :|: TRUE f2(x1, x2, x3, x4, x5) -> f3(x1, 1, x3, x4, x5) :|: TRUE f3(x6, x7, x8, x9, x10) -> f4(x6, x7, x11, x9, x10) :|: TRUE f4(x12, x13, x14, x15, x16) -> f5(x12, x13, x14, x17, x16) :|: TRUE f5(x18, x19, x20, x21, x22) -> f6(x18, x19, x20, x21, x23) :|: TRUE f8(x24, x25, x26, x27, x28) -> f11(x24, x25, x26, arith, x28) :|: TRUE && arith = x26 * x27 f12(x99, x100, x101, x102, x103) -> f15(x99, x100, x101, x104, x103) :|: TRUE && x104 = 0 - x101 * x102 f13(x34, x35, x36, x37, x38) -> f16(x34, 0, x36, x37, x38) :|: TRUE f9(x39, x40, x41, x42, x43) -> f12(x39, x40, x41, x42, x43) :|: x42 > 0 && x41 < 0 - 1 f9(x44, x45, x46, x47, x48) -> f13(x44, x45, x46, x47, x48) :|: x47 <= 0 f9(x105, x106, x107, x108, x109) -> f13(x105, x106, x107, x108, x109) :|: x107 >= 0 - 1 f15(x49, x50, x51, x52, x53) -> f14(x49, x50, x51, x52, x53) :|: TRUE f16(x54, x55, x56, x57, x58) -> f14(x54, x55, x56, x57, x58) :|: TRUE f7(x59, x60, x61, x62, x63) -> f8(x59, x60, x61, x62, x63) :|: x62 > 0 && x61 > 1 f7(x64, x65, x66, x67, x68) -> f9(x64, x65, x66, x67, x68) :|: x67 <= 0 f7(x110, x111, x112, x113, x114) -> f9(x110, x111, x112, x113, x114) :|: x112 <= 1 f11(x69, x70, x71, x72, x73) -> f10(x69, x70, x71, x72, x73) :|: TRUE f14(x74, x75, x76, x77, x78) -> f10(x74, x75, x76, x77, x78) :|: TRUE f10(x115, x116, x117, x118, x119) -> f17(x120, x116, x117, x118, x119) :|: TRUE && x120 = x115 + 1 f6(x84, x85, x86, x87, x88) -> f7(x84, x85, x86, x87, x88) :|: x87 < x88 && x85 > 0 f17(x89, x90, x91, x92, x93) -> f6(x89, x90, x91, x92, x93) :|: TRUE f6(x94, x95, x96, x97, x98) -> f18(x94, x95, x96, x97, x98) :|: x97 >= x98 f6(x121, x122, x123, x124, x125) -> f18(x121, x122, x123, x124, x125) :|: x122 <= 0 Start term: f1(c, flag, x, y, z) ---------------------------------------- (3) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (4) Obligation: Rules: f6(x84, x85, x86, x87, x88) -> f7(x84, x85, x86, x87, x88) :|: x87 < x88 && x85 > 0 f17(x89, x90, x91, x92, x93) -> f6(x89, x90, x91, x92, x93) :|: TRUE f10(x115, x116, x117, x118, x119) -> f17(x120, x116, x117, x118, x119) :|: TRUE && x120 = x115 + 1 f11(x69, x70, x71, x72, x73) -> f10(x69, x70, x71, x72, x73) :|: TRUE f8(x24, x25, x26, x27, x28) -> f11(x24, x25, x26, arith, x28) :|: TRUE && arith = x26 * x27 f7(x59, x60, x61, x62, x63) -> f8(x59, x60, x61, x62, x63) :|: x62 > 0 && x61 > 1 f14(x74, x75, x76, x77, x78) -> f10(x74, x75, x76, x77, x78) :|: TRUE f15(x49, x50, x51, x52, x53) -> f14(x49, x50, x51, x52, x53) :|: TRUE f12(x99, x100, x101, x102, x103) -> f15(x99, x100, x101, x104, x103) :|: TRUE && x104 = 0 - x101 * x102 f9(x39, x40, x41, x42, x43) -> f12(x39, x40, x41, x42, x43) :|: x42 > 0 && x41 < 0 - 1 f7(x64, x65, x66, x67, x68) -> f9(x64, x65, x66, x67, x68) :|: x67 <= 0 f7(x110, x111, x112, x113, x114) -> f9(x110, x111, x112, x113, x114) :|: x112 <= 1 f16(x54, x55, x56, x57, x58) -> f14(x54, x55, x56, x57, x58) :|: TRUE f13(x34, x35, x36, x37, x38) -> f16(x34, 0, x36, x37, x38) :|: TRUE f9(x44, x45, x46, x47, x48) -> f13(x44, x45, x46, x47, x48) :|: x47 <= 0 f9(x105, x106, x107, x108, x109) -> f13(x105, x106, x107, x108, x109) :|: x107 >= 0 - 1 ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f10(x115:0, x116:0, x117:0, x118:0, x119:0) -> f9(x115:0 + 1, x116:0, x117:0, x118:0, x119:0) :|: x119:0 > x118:0 && x116:0 > 0 && x118:0 < 1 f9(x39:0, x40:0, x41:0, x42:0, x43:0) -> f10(x39:0, x40:0, x41:0, 0 - x41:0 * x42:0, x43:0) :|: x42:0 > 0 && x41:0 < -1 f9(x44:0, x45:0, x46:0, x47:0, x48:0) -> f10(x44:0, 0, x46:0, x47:0, x48:0) :|: x47:0 < 1 f10(x, x1, x2, x3, x4) -> f9(x + 1, x1, x2, x3, x4) :|: x4 > x3 && x1 > 0 && x2 < 2 f9(x105:0, x106:0, x107:0, x108:0, x109:0) -> f10(x105:0, 0, x107:0, x108:0, x109:0) :|: x107:0 > -2 f10(x5, x6, x7, x8, x9) -> f10(x5 + 1, x6, x7, x7 * x8, x9) :|: x6 > 0 && x9 > x8 && x7 > 1 && x8 > 0 ---------------------------------------- (7) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f10(x1, x2, x3, x4, x5) -> f10(x2, x3, x4, x5) f9(x1, x2, x3, x4, x5) -> f9(x2, x3, x4, x5) ---------------------------------------- (8) Obligation: Rules: f10(x116:0, x117:0, x118:0, x119:0) -> f9(x116:0, x117:0, x118:0, x119:0) :|: x119:0 > x118:0 && x116:0 > 0 && x118:0 < 1 f9(x40:0, x41:0, x42:0, x43:0) -> f10(x40:0, x41:0, 0 - x41:0 * x42:0, x43:0) :|: x42:0 > 0 && x41:0 < -1 f9(x45:0, x46:0, x47:0, x48:0) -> f10(0, x46:0, x47:0, x48:0) :|: x47:0 < 1 f10(x1, x2, x3, x4) -> f9(x1, x2, x3, x4) :|: x4 > x3 && x1 > 0 && x2 < 2 f9(x106:0, x107:0, x108:0, x109:0) -> f10(0, x107:0, x108:0, x109:0) :|: x107:0 > -2 f10(x6, x7, x8, x9) -> f10(x6, x7, x7 * x8, x9) :|: x6 > 0 && x9 > x8 && x7 > 1 && x8 > 0 ---------------------------------------- (9) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f10(x, x1, x2, x3)] = -1 - x2 + x3 [f9(x4, x5, x6, x7)] = -1 - x6 + x7 The following rules are decreasing: f9(x40:0, x41:0, x42:0, x43:0) -> f10(x40:0, x41:0, 0 - x41:0 * x42:0, x43:0) :|: x42:0 > 0 && x41:0 < -1 f10(x6, x7, x8, x9) -> f10(x6, x7, x7 * x8, x9) :|: x6 > 0 && x9 > x8 && x7 > 1 && x8 > 0 The following rules are bounded: f10(x116:0, x117:0, x118:0, x119:0) -> f9(x116:0, x117:0, x118:0, x119:0) :|: x119:0 > x118:0 && x116:0 > 0 && x118:0 < 1 f10(x1, x2, x3, x4) -> f9(x1, x2, x3, x4) :|: x4 > x3 && x1 > 0 && x2 < 2 f10(x6, x7, x8, x9) -> f10(x6, x7, x7 * x8, x9) :|: x6 > 0 && x9 > x8 && x7 > 1 && x8 > 0 ---------------------------------------- (10) Complex Obligation (AND) ---------------------------------------- (11) Obligation: Rules: f10(x116:0, x117:0, x118:0, x119:0) -> f9(x116:0, x117:0, x118:0, x119:0) :|: x119:0 > x118:0 && x116:0 > 0 && x118:0 < 1 f9(x45:0, x46:0, x47:0, x48:0) -> f10(0, x46:0, x47:0, x48:0) :|: x47:0 < 1 f10(x1, x2, x3, x4) -> f9(x1, x2, x3, x4) :|: x4 > x3 && x1 > 0 && x2 < 2 f9(x106:0, x107:0, x108:0, x109:0) -> f10(0, x107:0, x108:0, x109:0) :|: x107:0 > -2 ---------------------------------------- (12) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained no non-trivial SCC(s). ---------------------------------------- (13) YES ---------------------------------------- (14) Obligation: Rules: f9(x40:0, x41:0, x42:0, x43:0) -> f10(x40:0, x41:0, 0 - x41:0 * x42:0, x43:0) :|: x42:0 > 0 && x41:0 < -1 f9(x45:0, x46:0, x47:0, x48:0) -> f10(0, x46:0, x47:0, x48:0) :|: x47:0 < 1 f9(x106:0, x107:0, x108:0, x109:0) -> f10(0, x107:0, x108:0, x109:0) :|: x107:0 > -2 ---------------------------------------- (15) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained no non-trivial SCC(s). ---------------------------------------- (16) YES