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