/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- 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, 113 ms] (4) IntTRS (5) IntTRSCompressionProof [EQUIVALENT, 0 ms] (6) IntTRS (7) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (8) IntTRS (9) PolynomialOrderProcessor [EQUIVALENT, 5 ms] (10) IntTRS (11) IntTRSCompressionProof [EQUIVALENT, 0 ms] (12) IntTRS (13) PolynomialOrderProcessor [EQUIVALENT, 0 ms] (14) IntTRS (15) IntTRSUnneededArgumentFilterProof [EQUIVALENT, 0 ms] (16) IntTRS (17) PolynomialOrderProcessor [EQUIVALENT, 1 ms] (18) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(i, j, k, m, n, N) -> f2(x_1, j, k, m, n, N) :|: TRUE f2(x, x1, x2, x3, x4, x5) -> f3(x, x6, x2, x3, x4, x5) :|: TRUE f3(x7, x8, x9, x10, x11, x12) -> f4(x7, x8, x13, x10, x11, x12) :|: TRUE f4(x14, x15, x16, x17, x18, x19) -> f5(x14, x15, x16, x17, x20, x19) :|: TRUE f5(x21, x22, x23, x24, x25, x26) -> f6(x21, x22, x23, x27, x25, x26) :|: TRUE f6(x28, x29, x30, x31, x32, x33) -> f7(x28, x29, x30, x31, x32, x34) :|: TRUE f8(x35, x36, x37, x38, x39, x40) -> f11(0, x36, x37, x38, x39, x40) :|: TRUE f12(x41, x42, x43, x44, x45, x46) -> f13(x41, 0, x43, x44, x45, x46) :|: TRUE f14(x47, x48, x49, x50, x51, x52) -> f15(x47, arith, x49, x50, x51, x52) :|: TRUE && arith = x48 + 1 f15(x53, x54, x55, x56, x57, x58) -> f16(x53, x54, x53, x56, x57, x58) :|: TRUE f17(x155, x156, x157, x158, x159, x160) -> f18(x155, x156, x161, x158, x159, x160) :|: TRUE && x161 = x157 + 1 f16(x65, x66, x67, x68, x69, x70) -> f17(x65, x66, x67, x68, x69, x70) :|: x67 < x70 f18(x71, x72, x73, x74, x75, x76) -> f16(x71, x72, x73, x74, x75, x76) :|: TRUE f16(x77, x78, x79, x80, x81, x82) -> f19(x77, x78, x79, x80, x81, x82) :|: x79 >= x82 f19(x83, x84, x85, x86, x87, x88) -> f20(x85, x84, x85, x86, x87, x88) :|: TRUE f13(x89, x90, x91, x92, x93, x94) -> f14(x89, x90, x91, x92, x93, x94) :|: x90 < x92 f20(x95, x96, x97, x98, x99, x100) -> f13(x95, x96, x97, x98, x99, x100) :|: TRUE f13(x101, x102, x103, x104, x105, x106) -> f21(x101, x102, x103, x104, x105, x106) :|: x102 >= x104 f21(x162, x163, x164, x165, x166, x167) -> f22(x168, x163, x164, x165, x166, x167) :|: TRUE && x168 = x162 + 1 f11(x113, x114, x115, x116, x117, x118) -> f12(x113, x114, x115, x116, x117, x118) :|: x113 < x117 f22(x119, x120, x121, x122, x123, x124) -> f11(x119, x120, x121, x122, x123, x124) :|: TRUE f11(x125, x126, x127, x128, x129, x130) -> f23(x125, x126, x127, x128, x129, x130) :|: x125 >= x129 f7(x131, x132, x133, x134, x135, x136) -> f8(x131, x132, x133, x134, x135, x136) :|: 0 <= x135 && 0 <= x134 && 0 <= x136 f7(x137, x138, x139, x140, x141, x142) -> f9(x137, x138, x139, x140, x141, x142) :|: 0 > x142 f7(x169, x170, x171, x172, x173, x174) -> f9(x169, x170, x171, x172, x173, x174) :|: 0 > x173 f7(x175, x176, x177, x178, x179, x180) -> f9(x175, x176, x177, x178, x179, x180) :|: 0 > x178 f23(x143, x144, x145, x146, x147, x148) -> f10(x143, x144, x145, x146, x147, x148) :|: TRUE f9(x149, x150, x151, x152, x153, x154) -> f10(x149, x150, x151, x152, x153, x154) :|: TRUE Start term: f1(i, j, k, m, n, N) ---------------------------------------- (3) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (4) Obligation: Rules: f11(x113, x114, x115, x116, x117, x118) -> f12(x113, x114, x115, x116, x117, x118) :|: x113 < x117 f22(x119, x120, x121, x122, x123, x124) -> f11(x119, x120, x121, x122, x123, x124) :|: TRUE f21(x162, x163, x164, x165, x166, x167) -> f22(x168, x163, x164, x165, x166, x167) :|: TRUE && x168 = x162 + 1 f13(x101, x102, x103, x104, x105, x106) -> f21(x101, x102, x103, x104, x105, x106) :|: x102 >= x104 f12(x41, x42, x43, x44, x45, x46) -> f13(x41, 0, x43, x44, x45, x46) :|: TRUE f20(x95, x96, x97, x98, x99, x100) -> f13(x95, x96, x97, x98, x99, x100) :|: TRUE f19(x83, x84, x85, x86, x87, x88) -> f20(x85, x84, x85, x86, x87, x88) :|: TRUE f16(x77, x78, x79, x80, x81, x82) -> f19(x77, x78, x79, x80, x81, x82) :|: x79 >= x82 f15(x53, x54, x55, x56, x57, x58) -> f16(x53, x54, x53, x56, x57, x58) :|: TRUE f14(x47, x48, x49, x50, x51, x52) -> f15(x47, arith, x49, x50, x51, x52) :|: TRUE && arith = x48 + 1 f13(x89, x90, x91, x92, x93, x94) -> f14(x89, x90, x91, x92, x93, x94) :|: x90 < x92 f18(x71, x72, x73, x74, x75, x76) -> f16(x71, x72, x73, x74, x75, x76) :|: TRUE f17(x155, x156, x157, x158, x159, x160) -> f18(x155, x156, x161, x158, x159, x160) :|: TRUE && x161 = x157 + 1 f16(x65, x66, x67, x68, x69, x70) -> f17(x65, x66, x67, x68, x69, x70) :|: x67 < x70 ---------------------------------------- (5) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (6) Obligation: Rules: f13(x89:0, x90:0, x91:0, x92:0, x93:0, x94:0) -> f16(x89:0, x90:0 + 1, x89:0, x92:0, x93:0, x94:0) :|: x92:0 > x90:0 f16(x65:0, x66:0, x67:0, x68:0, x69:0, x70:0) -> f16(x65:0, x66:0, x67:0 + 1, x68:0, x69:0, x70:0) :|: x70:0 > x67:0 f13(x101:0, x102:0, x103:0, x104:0, x105:0, x106:0) -> f13(x101:0 + 1, 0, x103:0, x104:0, x105:0, x106:0) :|: x104:0 <= x102:0 && x105:0 > x101:0 + 1 f16(x77:0, x78:0, x79:0, x80:0, x81:0, x82:0) -> f13(x79:0, x78:0, x79:0, x80:0, x81:0, x82:0) :|: x82:0 <= x79:0 ---------------------------------------- (7) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f13(x1, x2, x3, x4, x5, x6) -> f13(x1, x2, x4, x5, x6) f16(x1, x2, x3, x4, x5, x6) -> f16(x2, x3, x4, x5, x6) ---------------------------------------- (8) Obligation: Rules: f13(x89:0, x90:0, x92:0, x93:0, x94:0) -> f16(x90:0 + 1, x89:0, x92:0, x93:0, x94:0) :|: x92:0 > x90:0 f16(x66:0, x67:0, x68:0, x69:0, x70:0) -> f16(x66:0, x67:0 + 1, x68:0, x69:0, x70:0) :|: x70:0 > x67:0 f13(x101:0, x102:0, x104:0, x105:0, x106:0) -> f13(x101:0 + 1, 0, x104:0, x105:0, x106:0) :|: x104:0 <= x102:0 && x105:0 > x101:0 + 1 f16(x78:0, x79:0, x80:0, x81:0, x82:0) -> f13(x79:0, x78:0, x80:0, x81:0, x82:0) :|: x82:0 <= x79:0 ---------------------------------------- (9) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f13(x, x1, x2, x3, x4)] = -1 - x + x4 [f16(x5, x6, x7, x8, x9)] = -1 - x6 + x9 The following rules are decreasing: f16(x66:0, x67:0, x68:0, x69:0, x70:0) -> f16(x66:0, x67:0 + 1, x68:0, x69:0, x70:0) :|: x70:0 > x67:0 f13(x101:0, x102:0, x104:0, x105:0, x106:0) -> f13(x101:0 + 1, 0, x104:0, x105:0, x106:0) :|: x104:0 <= x102:0 && x105:0 > x101:0 + 1 The following rules are bounded: f16(x66:0, x67:0, x68:0, x69:0, x70:0) -> f16(x66:0, x67:0 + 1, x68:0, x69:0, x70:0) :|: x70:0 > x67:0 ---------------------------------------- (10) Obligation: Rules: f13(x89:0, x90:0, x92:0, x93:0, x94:0) -> f16(x90:0 + 1, x89:0, x92:0, x93:0, x94:0) :|: x92:0 > x90:0 f13(x101:0, x102:0, x104:0, x105:0, x106:0) -> f13(x101:0 + 1, 0, x104:0, x105:0, x106:0) :|: x104:0 <= x102:0 && x105:0 > x101:0 + 1 f16(x78:0, x79:0, x80:0, x81:0, x82:0) -> f13(x79:0, x78:0, x80:0, x81:0, x82:0) :|: x82:0 <= x79:0 ---------------------------------------- (11) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (12) Obligation: Rules: f13(x101:0:0, x102:0:0, x104:0:0, x105:0:0, x106:0:0) -> f13(x101:0:0 + 1, 0, x104:0:0, x105:0:0, x106:0:0) :|: x104:0:0 <= x102:0:0 && x105:0:0 > x101:0:0 + 1 f13(x89:0:0, x90:0:0, x92:0:0, x93:0:0, x94:0:0) -> f13(x89:0:0, x90:0:0 + 1, x92:0:0, x93:0:0, x94:0:0) :|: x92:0:0 > x90:0:0 && x94:0:0 <= x89:0:0 ---------------------------------------- (13) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f13(x, x1, x2, x3, x4)] = -1 - x + x3 The following rules are decreasing: f13(x101:0:0, x102:0:0, x104:0:0, x105:0:0, x106:0:0) -> f13(x101:0:0 + 1, 0, x104:0:0, x105:0:0, x106:0:0) :|: x104:0:0 <= x102:0:0 && x105:0:0 > x101:0:0 + 1 The following rules are bounded: f13(x101:0:0, x102:0:0, x104:0:0, x105:0:0, x106:0:0) -> f13(x101:0:0 + 1, 0, x104:0:0, x105:0:0, x106:0:0) :|: x104:0:0 <= x102:0:0 && x105:0:0 > x101:0:0 + 1 ---------------------------------------- (14) Obligation: Rules: f13(x89:0:0, x90:0:0, x92:0:0, x93:0:0, x94:0:0) -> f13(x89:0:0, x90:0:0 + 1, x92:0:0, x93:0:0, x94:0:0) :|: x92:0:0 > x90:0:0 && x94:0:0 <= x89:0:0 ---------------------------------------- (15) IntTRSUnneededArgumentFilterProof (EQUIVALENT) Some arguments are removed because they cannot influence termination. We removed arguments according to the following replacements: f13(x1, x2, x3, x4, x5) -> f13(x1, x2, x3, x5) ---------------------------------------- (16) Obligation: Rules: f13(x89:0:0, x90:0:0, x92:0:0, x94:0:0) -> f13(x89:0:0, x90:0:0 + 1, x92:0:0, x94:0:0) :|: x92:0:0 > x90:0:0 && x94:0:0 <= x89:0:0 ---------------------------------------- (17) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f13(x, x1, x2, x3)] = -x1 + x2 The following rules are decreasing: f13(x89:0:0, x90:0:0, x92:0:0, x94:0:0) -> f13(x89:0:0, x90:0:0 + 1, x92:0:0, x94:0:0) :|: x92:0:0 > x90:0:0 && x94:0:0 <= x89:0:0 The following rules are bounded: f13(x89:0:0, x90:0:0, x92:0:0, x94:0:0) -> f13(x89:0:0, x90:0:0 + 1, x92:0:0, x94:0:0) :|: x92:0:0 > x90:0:0 && x94:0:0 <= x89:0:0 ---------------------------------------- (18) YES