/export/starexec/sandbox2/solver/bin/starexec_run_c /export/starexec/sandbox2/benchmark/theBenchmark.c /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- YES proof of /export/starexec/sandbox2/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToIRSProof [EQUIVALENT, 86 ms] (2) IntTRS (3) IRS2T2 [EQUIVALENT, 0 ms] (4) T2IntSys (5) T2 [EQUIVALENT, 1635 ms] (6) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox2/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(N, x, y, i, r) -> f2(10, x, y, i, r) :|: TRUE f2(x1, x2, x3, x4, x5) -> f3(x1, 0, x3, x4, x5) :|: TRUE f3(x6, x7, x8, x9, x10) -> f4(x6, x7, 0, x9, x10) :|: TRUE f4(x11, x12, x13, x14, x15) -> f5(x11, x12, x13, 0, x15) :|: TRUE f6(x16, x17, x18, x19, x20) -> f7(x16, x17, x18, arith, x20) :|: TRUE && arith = x19 + 1 f7(x21, x22, x23, x24, x25) -> f8(x21, x22, x23, x24, x26) :|: TRUE f12(x162, x163, x164, x165, x166) -> f15(x162, x167, x164, x165, x166) :|: TRUE && x167 = x163 + 1 f16(x168, x169, x170, x171, x172) -> f19(x168, x173, x170, x171, x172) :|: TRUE && x173 = x169 - 1 f20(x174, x175, x176, x177, x178) -> f23(x174, x175, x179, x177, x178) :|: TRUE && x179 = x176 + 1 f24(x180, x181, x182, x183, x184) -> f27(x180, x181, x185, x183, x184) :|: TRUE && x185 = x182 - 1 f21(x47, x48, x49, x50, x51) -> f24(x47, x48, x49, x50, x51) :|: x51 = 3 f21(x52, x53, x54, x55, x56) -> f25(x52, x53, x54, x55, x56) :|: x56 < 3 f21(x186, x187, x188, x189, x190) -> f25(x186, x187, x188, x189, x190) :|: x190 > 3 f27(x57, x58, x59, x60, x61) -> f26(x57, x58, x59, x60, x61) :|: TRUE f25(x62, x63, x64, x65, x66) -> f26(x62, x63, x64, x65, x66) :|: TRUE f17(x67, x68, x69, x70, x71) -> f20(x67, x68, x69, x70, x71) :|: x71 = 2 f17(x72, x73, x74, x75, x76) -> f21(x72, x73, x74, x75, x76) :|: x76 < 2 f17(x191, x192, x193, x194, x195) -> f21(x191, x192, x193, x194, x195) :|: x195 > 2 f23(x77, x78, x79, x80, x81) -> f22(x77, x78, x79, x80, x81) :|: TRUE f26(x82, x83, x84, x85, x86) -> f22(x82, x83, x84, x85, x86) :|: TRUE f13(x87, x88, x89, x90, x91) -> f16(x87, x88, x89, x90, x91) :|: x91 = 1 f13(x92, x93, x94, x95, x96) -> f17(x92, x93, x94, x95, x96) :|: x96 < 1 f13(x196, x197, x198, x199, x200) -> f17(x196, x197, x198, x199, x200) :|: x200 > 1 f19(x97, x98, x99, x100, x101) -> f18(x97, x98, x99, x100, x101) :|: TRUE f22(x102, x103, x104, x105, x106) -> f18(x102, x103, x104, x105, x106) :|: TRUE f9(x107, x108, x109, x110, x111) -> f12(x107, x108, x109, x110, x111) :|: x111 = 0 f9(x112, x113, x114, x115, x116) -> f13(x112, x113, x114, x115, x116) :|: x116 < 0 f9(x201, x202, x203, x204, x205) -> f13(x201, x202, x203, x204, x205) :|: x205 > 0 f15(x117, x118, x119, x120, x121) -> f14(x117, x118, x119, x120, x121) :|: TRUE f18(x122, x123, x124, x125, x126) -> f14(x122, x123, x124, x125, x126) :|: TRUE f8(x127, x128, x129, x130, x131) -> f9(x127, x128, x129, x130, x131) :|: x131 >= 0 && x131 <= 3 f8(x132, x133, x134, x135, x136) -> f10(x132, x133, x134, x135, x136) :|: x136 < 0 f8(x206, x207, x208, x209, x210) -> f10(x206, x207, x208, x209, x210) :|: x210 > 3 f14(x137, x138, x139, x140, x141) -> f11(x137, x138, x139, x140, x141) :|: TRUE f10(x142, x143, x144, x145, x146) -> f11(x142, x143, x144, x145, x146) :|: TRUE f5(x147, x148, x149, x150, x151) -> f6(x147, x148, x149, x150, x151) :|: x150 < x147 f11(x152, x153, x154, x155, x156) -> f5(x152, x153, x154, x155, x156) :|: TRUE f5(x157, x158, x159, x160, x161) -> f28(x157, x158, x159, x160, x161) :|: x160 >= x157 Start term: f1(N, x, y, i, r) ---------------------------------------- (3) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f1_5,1) (f2_5,2) (f3_5,3) (f4_5,4) (f5_5,5) (f6_5,6) (f7_5,7) (f8_5,8) (f12_5,9) (f15_5,10) (f16_5,11) (f19_5,12) (f20_5,13) (f23_5,14) (f24_5,15) (f27_5,16) (f21_5,17) (f25_5,18) (f26_5,19) (f17_5,20) (f22_5,21) (f13_5,22) (f18_5,23) (f9_5,24) (f14_5,25) (f10_5,26) (f11_5,27) (f28_5,28) ---------------------------------------- (4) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := 10; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := 0; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := 0; x3 := oldX3; x4 := oldX4; TO: 4; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := 0; x4 := oldX4; TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := -(-(oldX3 + 1)); assume(0 = 0 && oldX5 = oldX3 + 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := -(-(oldX3 + 1)); x4 := oldX4; TO: 7; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX5; TO: 8; FROM: 9; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := -(-(oldX1 + 1)); assume(0 = 0 && oldX5 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 10; FROM: 11; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := -(1 - oldX1); assume(0 = 0 && oldX5 = oldX1 - 1); x0 := oldX0; x1 := -(1 - oldX1); x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 12; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := -(-(oldX2 + 1)); assume(0 = 0 && oldX5 = oldX2 + 1); x0 := oldX0; x1 := oldX1; x2 := -(-(oldX2 + 1)); x3 := oldX3; x4 := oldX4; TO: 14; FROM: 15; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; oldX5 := -(1 - oldX2); assume(0 = 0 && oldX5 = oldX2 - 1); x0 := oldX0; x1 := oldX1; x2 := -(1 - oldX2); x3 := oldX3; x4 := oldX4; TO: 16; FROM: 17; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 = 3); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 15; FROM: 17; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 < 3); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 18; FROM: 17; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 > 3); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 18; FROM: 16; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 19; FROM: 18; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 19; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 = 2); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 13; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 < 2); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 17; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 > 2); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 17; FROM: 14; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 21; FROM: 19; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 21; FROM: 22; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 = 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 11; FROM: 22; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 < 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 20; FROM: 22; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 > 1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 20; FROM: 12; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 23; FROM: 21; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 23; FROM: 24; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 9; FROM: 24; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 < 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 22; FROM: 24; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 > 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 22; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 25; FROM: 23; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 25; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 >= 0 && oldX4 <= 3); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 24; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 < 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 26; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX4 > 3); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 26; FROM: 25; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 27; FROM: 26; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 27; FROM: 5; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX3 < oldX0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 6; FROM: 27; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 5; FROM: 5; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := x4; assume(oldX3 >= oldX0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; x4 := oldX4; TO: 28; ---------------------------------------- (5) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 54 using the following rank functions: - Rank function 1: RF for loc. 19: -8+15*x0-15*x3 RF for loc. 20: -10+15*x0-15*x3 RF for loc. 21: -9+15*x0-15*x3 RF for loc. 22: -7+15*x0-15*x3 RF for loc. 23: -11+15*x0-15*x3 RF for loc. 24: -6+15*x0-15*x3 RF for loc. 25: -12+15*x0-15*x3 RF for loc. 26: -1+15*x0-15*x3 RF for loc. 27: -13+15*x0-15*x3 RF for loc. 28: 15*x0-15*x3 RF for loc. 29: 15*x0-15*x3 RF for loc. 30: -13+15*x0-15*x3 RF for loc. 31: -14+15*x0-15*x3 Bound for (chained) transitions 50: 1 Bound for (chained) transitions 51: 1 - Rank function 2: RF for loc. 19: 7+x3 RF for loc. 20: 3+x3 RF for loc. 21: 6+x3 RF for loc. 22: 8+x3 RF for loc. 23: 2+x3 RF for loc. 24: 9+x3 RF for loc. 25: 1+x3 RF for loc. 26: oldX3+x3+9*x4 RF for loc. 27: x3 RF for loc. 28: 28*oldX3+2*x3 RF for loc. 29: x3 RF for loc. 30: 0 RF for loc. 31: -x3 Bound for (chained) transitions 26: 8 Bound for (chained) transitions 27: 8 Bound for (chained) transitions 28: 8 Bound for (chained) transitions 29: 7 Bound for (chained) transitions 30: 9 Bound for (chained) transitions 31: 9 Bound for (chained) transitions 32: 9 Bound for (chained) transitions 33: 4 Bound for (chained) transitions 34: 10 Bound for (chained) transitions 35: 10 Bound for (chained) transitions 36: 10 Bound for (chained) transitions 37: 3 Bound for (chained) transitions 38: 2 Bound for (chained) transitions 39: 2 Bound for (chained) transitions 40: 2 Bound for (chained) transitions 41: 2 Bound for (chained) transitions 42: 30 Bound for (chained) transitions 43: 30 Bound for (chained) transitions 44: 30 Bound for (chained) transitions 45: 1 Bound for (chained) transitions 46: 1 Bound for (chained) transitions 47, 54: 0 ---------------------------------------- (6) YES