13.69/4.27 NO 13.69/4.28 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 13.69/4.28 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 13.69/4.28 13.69/4.28 13.69/4.28 Termination of the given C Problem could be disproven: 13.69/4.28 13.69/4.28 (0) C Problem 13.69/4.28 (1) CToIRSProof [EQUIVALENT, 0 ms] 13.69/4.28 (2) IntTRS 13.69/4.28 (3) IRS2T2 [EQUIVALENT, 0 ms] 13.69/4.28 (4) T2IntSys 13.69/4.28 (5) T2 [COMPLETE, 2437 ms] 13.69/4.28 (6) NO 13.69/4.28 13.69/4.28 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (0) 13.69/4.28 Obligation: 13.69/4.28 c file /export/starexec/sandbox/benchmark/theBenchmark.c 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (1) CToIRSProof (EQUIVALENT) 13.69/4.28 Parsed C Integer Program as IRS. 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (2) 13.69/4.28 Obligation: 13.69/4.28 Rules: 13.69/4.28 f1(i, range) -> f2(x_1, range) :|: TRUE 13.69/4.28 f2(x, x1) -> f3(x, 20) :|: TRUE 13.69/4.28 f5(x2, x3) -> f8(arith, x3) :|: TRUE && arith = x2 * (0 - 1) 13.69/4.28 f6(x32, x33) -> f9(x32, x34) :|: TRUE && x34 = x33 + 1 13.69/4.28 f9(x35, x36) -> f10(x37, x36) :|: TRUE && x37 = x35 - 1 13.69/4.28 f11(x38, x39) -> f14(x38, x40) :|: TRUE && x40 = 0 - 1 13.69/4.28 f10(x10, x11) -> f11(x10, x11) :|: x10 = 0 13.69/4.28 f10(x12, x13) -> f12(x12, x13) :|: x12 < 0 13.69/4.28 f10(x41, x42) -> f12(x41, x42) :|: x41 > 0 13.69/4.28 f14(x14, x15) -> f13(x14, x15) :|: TRUE 13.69/4.28 f12(x16, x17) -> f13(x16, x17) :|: TRUE 13.69/4.28 f4(x18, x19) -> f5(x18, x19) :|: x19 - x18 < 5 13.69/4.28 f4(x43, x44) -> f5(x43, x44) :|: x44 + x43 < 5 13.69/4.28 f4(x20, x21) -> f6(x20, x21) :|: x21 - x20 >= 5 && x21 + x20 >= 5 13.69/4.28 f8(x22, x23) -> f7(x22, x23) :|: TRUE 13.69/4.28 f13(x24, x25) -> f7(x24, x25) :|: TRUE 13.69/4.28 f3(x26, x27) -> f4(x26, x27) :|: 0 - x27 <= x26 && x26 <= x27 13.69/4.28 f7(x28, x29) -> f3(x28, x29) :|: TRUE 13.69/4.28 f3(x30, x31) -> f15(x30, x31) :|: 0 - x31 > x30 13.69/4.28 f3(x45, x46) -> f15(x45, x46) :|: x45 > x46 13.69/4.28 Start term: f1(i, range) 13.69/4.28 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (3) IRS2T2 (EQUIVALENT) 13.69/4.28 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 13.69/4.28 13.69/4.28 (f1_2,1) 13.69/4.28 (f2_2,2) 13.69/4.28 (f3_2,3) 13.69/4.28 (f5_2,4) 13.69/4.28 (f8_2,5) 13.69/4.28 (f6_2,6) 13.69/4.28 (f9_2,7) 13.69/4.28 (f10_2,8) 13.69/4.28 (f11_2,9) 13.69/4.28 (f14_2,10) 13.69/4.28 (f12_2,11) 13.69/4.28 (f13_2,12) 13.69/4.28 (f4_2,13) 13.69/4.28 (f7_2,14) 13.69/4.28 (f15_2,15) 13.69/4.28 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (4) 13.69/4.28 Obligation: 13.69/4.28 START: 1; 13.69/4.28 13.69/4.28 FROM: 1; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 oldX2 := nondet(); 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX2; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 2; 13.69/4.28 13.69/4.28 FROM: 2; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := 20; 13.69/4.28 TO: 3; 13.69/4.28 13.69/4.28 FROM: 4; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 oldX2 := nondet(); 13.69/4.28 assume(0 = 0 && oldX2 = oldX0 * (0 - 1)); 13.69/4.28 x0 := oldX2; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 5; 13.69/4.28 13.69/4.28 FROM: 6; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 oldX2 := -(-(oldX1 + 1)); 13.69/4.28 assume(0 = 0 && oldX2 = oldX1 + 1); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := -(-(oldX1 + 1)); 13.69/4.28 TO: 7; 13.69/4.28 13.69/4.28 FROM: 7; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 oldX2 := -(1 - oldX0); 13.69/4.28 assume(0 = 0 && oldX2 = oldX0 - 1); 13.69/4.28 x0 := -(1 - oldX0); 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 8; 13.69/4.28 13.69/4.28 FROM: 9; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 oldX2 := -(1); 13.69/4.28 assume(0 = 0 && oldX2 = 0 - 1); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := -(1); 13.69/4.28 TO: 10; 13.69/4.28 13.69/4.28 FROM: 8; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 9; 13.69/4.28 13.69/4.28 FROM: 8; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX0 < 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 11; 13.69/4.28 13.69/4.28 FROM: 8; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX0 > 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 11; 13.69/4.28 13.69/4.28 FROM: 10; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 12; 13.69/4.28 13.69/4.28 FROM: 11; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 12; 13.69/4.28 13.69/4.28 FROM: 13; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX1 - oldX0 < 5); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 4; 13.69/4.28 13.69/4.28 FROM: 13; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX1 + oldX0 < 5); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 4; 13.69/4.28 13.69/4.28 FROM: 13; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX1 - oldX0 >= 5 && oldX1 + oldX0 >= 5); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 6; 13.69/4.28 13.69/4.28 FROM: 5; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 14; 13.69/4.28 13.69/4.28 FROM: 12; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 14; 13.69/4.28 13.69/4.28 FROM: 3; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 - oldX1 <= oldX0 && oldX0 <= oldX1); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 13; 13.69/4.28 13.69/4.28 FROM: 14; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 = 0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 3; 13.69/4.28 13.69/4.28 FROM: 3; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(0 - oldX1 > oldX0); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 15; 13.69/4.28 13.69/4.28 FROM: 3; 13.69/4.28 oldX0 := x0; 13.69/4.28 oldX1 := x1; 13.69/4.28 assume(oldX0 > oldX1); 13.69/4.28 x0 := oldX0; 13.69/4.28 x1 := oldX1; 13.69/4.28 TO: 15; 13.69/4.28 13.69/4.28 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (5) T2 (COMPLETE) 13.69/4.28 Found this recurrent set for cutpoint 12: -16 <= oldX2 and oldX2 <= -1 and x0 <= -1 and 21 <= x1 and x0-oldX2 <= 0 and oldX2+x0 <= -2 and oldX2-x1 <= -22 and 5 <= oldX2+x1 and x0-x1 <= -22 and x0+x1 <= 20 and 5 <= x0+x1 and -x1-x0 <= 0 and -x1+x0 <= 0 13.69/4.28 13.69/4.28 ---------------------------------------- 13.69/4.28 13.69/4.28 (6) 13.69/4.28 NO 13.96/4.39 EOF