15.28/4.67 YES 15.28/4.68 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 15.28/4.68 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 15.28/4.68 15.28/4.68 15.28/4.68 Termination of the given C Problem could be proven: 15.28/4.68 15.28/4.68 (0) C Problem 15.28/4.68 (1) CToIRSProof [EQUIVALENT, 0 ms] 15.28/4.68 (2) IntTRS 15.28/4.68 (3) IRS2T2 [EQUIVALENT, 0 ms] 15.28/4.68 (4) T2IntSys 15.28/4.68 (5) T2 [EQUIVALENT, 2827 ms] 15.28/4.68 (6) YES 15.28/4.68 15.28/4.68 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (0) 15.28/4.68 Obligation: 15.28/4.68 c file /export/starexec/sandbox/benchmark/theBenchmark.c 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (1) CToIRSProof (EQUIVALENT) 15.28/4.68 Parsed C Integer Program as IRS. 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (2) 15.28/4.68 Obligation: 15.28/4.68 Rules: 15.28/4.68 f1(x, y, z, tx) -> f2(x_1, y, z, tx) :|: TRUE 15.28/4.68 f2(x1, x2, x3, x4) -> f3(x1, x5, x3, x4) :|: TRUE 15.28/4.68 f3(x6, x7, x8, x9) -> f4(x6, x7, x10, x9) :|: TRUE 15.28/4.68 f4(x11, x12, x13, x14) -> f5(x11, x12, x13, x15) :|: TRUE 15.28/4.68 f7(x16, x17, x18, x19) -> f10(x16, x17, arith, x19) :|: TRUE && arith = x18 - 1 15.28/4.68 f10(x20, x21, x22, x23) -> f11(x20, x21, x22, x20) :|: TRUE 15.28/4.68 f11(x24, x25, x26, x27) -> f12(x28, x25, x26, x27) :|: TRUE 15.28/4.68 f8(x63, x64, x65, x66) -> f13(x63, x67, x65, x66) :|: TRUE && x67 = x64 + 1 15.28/4.68 f6(x33, x34, x35, x36) -> f7(x33, x34, x35, x36) :|: x37 < 0 15.28/4.68 f6(x68, x69, x70, x71) -> f7(x68, x69, x70, x71) :|: x72 > 0 15.28/4.68 f6(x38, x39, x40, x41) -> f8(x38, x39, x40, x41) :|: x42 = 0 15.28/4.68 f12(x43, x44, x45, x46) -> f9(x43, x44, x45, x46) :|: TRUE 15.28/4.68 f13(x47, x48, x49, x50) -> f9(x47, x48, x49, x50) :|: TRUE 15.28/4.68 f5(x51, x52, x53, x54) -> f6(x51, x52, x53, x54) :|: x51 >= x52 && x51 <= x54 + x53 15.28/4.68 f9(x55, x56, x57, x58) -> f5(x55, x56, x57, x58) :|: TRUE 15.28/4.68 f5(x59, x60, x61, x62) -> f14(x59, x60, x61, x62) :|: x59 < x60 15.28/4.68 f5(x73, x74, x75, x76) -> f14(x73, x74, x75, x76) :|: x73 > x76 + x75 15.28/4.68 Start term: f1(x, y, z, tx) 15.28/4.68 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (3) IRS2T2 (EQUIVALENT) 15.28/4.68 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 15.28/4.68 15.28/4.68 (f1_4,1) 15.28/4.68 (f2_4,2) 15.28/4.68 (f3_4,3) 15.28/4.68 (f4_4,4) 15.28/4.68 (f5_4,5) 15.28/4.68 (f7_4,6) 15.28/4.68 (f10_4,7) 15.28/4.68 (f11_4,8) 15.28/4.68 (f12_4,9) 15.28/4.68 (f8_4,10) 15.28/4.68 (f13_4,11) 15.28/4.68 (f6_4,12) 15.28/4.68 (f9_4,13) 15.28/4.68 (f14_4,14) 15.28/4.68 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (4) 15.28/4.68 Obligation: 15.28/4.68 START: 1; 15.28/4.68 15.28/4.68 FROM: 1; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX4; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 2; 15.28/4.68 15.28/4.68 FROM: 2; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX4; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 3; 15.28/4.68 15.28/4.68 FROM: 3; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX4; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 4; 15.28/4.68 15.28/4.68 FROM: 4; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX4; 15.28/4.68 TO: 5; 15.28/4.68 15.28/4.68 FROM: 6; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := -(1 - oldX2); 15.28/4.68 assume(0 = 0 && oldX4 = oldX2 - 1); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := -(1 - oldX2); 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 7; 15.28/4.68 15.28/4.68 FROM: 7; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX0; 15.28/4.68 TO: 8; 15.28/4.68 15.28/4.68 FROM: 8; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX4; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 9; 15.28/4.68 15.28/4.68 FROM: 10; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := -(-(oldX1 + 1)); 15.28/4.68 assume(0 = 0 && oldX4 = oldX1 + 1); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := -(-(oldX1 + 1)); 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 11; 15.28/4.68 15.28/4.68 FROM: 12; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(oldX4 < 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 6; 15.28/4.68 15.28/4.68 FROM: 12; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := nondet(); 15.28/4.68 assume(oldX4 > 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 6; 15.28/4.68 15.28/4.68 FROM: 12; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 oldX4 := -(0); 15.28/4.68 assume(oldX4 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 10; 15.28/4.68 15.28/4.68 FROM: 9; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 13; 15.28/4.68 15.28/4.68 FROM: 11; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 13; 15.28/4.68 15.28/4.68 FROM: 5; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(oldX0 >= oldX1 && oldX0 <= oldX3 + oldX2); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 12; 15.28/4.68 15.28/4.68 FROM: 13; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(0 = 0); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 5; 15.28/4.68 15.28/4.68 FROM: 5; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(oldX0 < oldX1); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 14; 15.28/4.68 15.28/4.68 FROM: 5; 15.28/4.68 oldX0 := x0; 15.28/4.68 oldX1 := x1; 15.28/4.68 oldX2 := x2; 15.28/4.68 oldX3 := x3; 15.28/4.68 assume(oldX0 > oldX3 + oldX2); 15.28/4.68 x0 := oldX0; 15.28/4.68 x1 := oldX1; 15.28/4.68 x2 := oldX2; 15.28/4.68 x3 := oldX3; 15.28/4.68 TO: 14; 15.28/4.68 15.28/4.68 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (5) T2 (EQUIVALENT) 15.28/4.68 Used the following cutpoint-specific lexicographic rank functions: 15.28/4.68 * For cutpoint 9, used the following rank functions/bounds (in descending priority order): 15.28/4.68 - RF -x1+x0, bound 0 15.28/4.68 15.28/4.68 ---------------------------------------- 15.28/4.68 15.28/4.68 (6) 15.28/4.68 YES 15.28/4.75 EOF