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