9.64/3.24 NO 9.75/3.28 proof of /export/starexec/sandbox/benchmark/theBenchmark.c 9.75/3.28 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 9.75/3.28 9.75/3.28 9.75/3.28 Termination of the given C Problem could be disproven: 9.75/3.28 9.75/3.28 (0) C Problem 9.75/3.28 (1) CToIRSProof [EQUIVALENT, 0 ms] 9.75/3.28 (2) IntTRS 9.75/3.28 (3) IRS2T2 [EQUIVALENT, 0 ms] 9.75/3.28 (4) T2IntSys 9.75/3.28 (5) T2 [COMPLETE, 1404 ms] 9.75/3.28 (6) NO 9.75/3.28 9.75/3.28 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (0) 9.75/3.28 Obligation: 9.75/3.28 c file /export/starexec/sandbox/benchmark/theBenchmark.c 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (1) CToIRSProof (EQUIVALENT) 9.75/3.28 Parsed C Integer Program as IRS. 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (2) 9.75/3.28 Obligation: 9.75/3.28 Rules: 9.75/3.28 f1(i) -> f2(x_1) :|: TRUE 9.75/3.28 f4(x) -> f7(arith) :|: TRUE && arith = x - 1 9.75/3.28 f3(x1) -> f4(x1) :|: x1 < 20 9.75/3.28 f3(x2) -> f5(x2) :|: x2 >= 20 9.75/3.28 f7(x3) -> f6(x3) :|: TRUE 9.75/3.28 f5(x4) -> f6(x4) :|: TRUE 9.75/3.28 f8(x18) -> f11(x19) :|: TRUE && x19 = x18 + 1 9.75/3.28 f6(x6) -> f8(x6) :|: x6 > 10 9.75/3.28 f6(x7) -> f9(x7) :|: x7 <= 10 9.75/3.28 f11(x8) -> f10(x8) :|: TRUE 9.75/3.28 f9(x9) -> f10(x9) :|: TRUE 9.75/3.28 f12(x20) -> f15(x21) :|: TRUE && x21 = x20 - 1 9.75/3.28 f10(x11) -> f12(x11) :|: 30 <= x11 && x11 <= 40 9.75/3.28 f10(x12) -> f13(x12) :|: 30 > x12 9.75/3.28 f10(x22) -> f13(x22) :|: x22 > 40 9.75/3.28 f15(x13) -> f14(x13) :|: TRUE 9.75/3.28 f13(x14) -> f14(x14) :|: TRUE 9.75/3.28 f2(x15) -> f3(x15) :|: x15 > 0 && x15 < 50 9.75/3.28 f14(x16) -> f2(x16) :|: TRUE 9.75/3.28 f2(x17) -> f16(x17) :|: x17 <= 0 9.75/3.28 f2(x23) -> f16(x23) :|: x23 >= 50 9.75/3.28 Start term: f1(i) 9.75/3.28 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (3) IRS2T2 (EQUIVALENT) 9.75/3.28 Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: 9.75/3.28 9.75/3.28 (f1_1,1) 9.75/3.28 (f2_1,2) 9.75/3.28 (f4_1,3) 9.75/3.28 (f7_1,4) 9.75/3.28 (f3_1,5) 9.75/3.28 (f5_1,6) 9.75/3.28 (f6_1,7) 9.75/3.28 (f8_1,8) 9.75/3.28 (f11_1,9) 9.75/3.28 (f9_1,10) 9.75/3.28 (f10_1,11) 9.75/3.28 (f12_1,12) 9.75/3.28 (f15_1,13) 9.75/3.28 (f13_1,14) 9.75/3.28 (f14_1,15) 9.75/3.28 (f16_1,16) 9.75/3.28 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (4) 9.75/3.28 Obligation: 9.75/3.28 START: 1; 9.75/3.28 9.75/3.28 FROM: 1; 9.75/3.28 oldX0 := x0; 9.75/3.28 oldX1 := nondet(); 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX1; 9.75/3.28 TO: 2; 9.75/3.28 9.75/3.28 FROM: 3; 9.75/3.28 oldX0 := x0; 9.75/3.28 oldX1 := -(1 - oldX0); 9.75/3.28 assume(0 = 0 && oldX1 = oldX0 - 1); 9.75/3.28 x0 := -(1 - oldX0); 9.75/3.28 TO: 4; 9.75/3.28 9.75/3.28 FROM: 5; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 < 20); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 3; 9.75/3.28 9.75/3.28 FROM: 5; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 >= 20); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 6; 9.75/3.28 9.75/3.28 FROM: 4; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 7; 9.75/3.28 9.75/3.28 FROM: 6; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 7; 9.75/3.28 9.75/3.28 FROM: 8; 9.75/3.28 oldX0 := x0; 9.75/3.28 oldX1 := -(-(oldX0 + 1)); 9.75/3.28 assume(0 = 0 && oldX1 = oldX0 + 1); 9.75/3.28 x0 := -(-(oldX0 + 1)); 9.75/3.28 TO: 9; 9.75/3.28 9.75/3.28 FROM: 7; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 > 10); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 8; 9.75/3.28 9.75/3.28 FROM: 7; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 <= 10); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 10; 9.75/3.28 9.75/3.28 FROM: 9; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 11; 9.75/3.28 9.75/3.28 FROM: 10; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 11; 9.75/3.28 9.75/3.28 FROM: 12; 9.75/3.28 oldX0 := x0; 9.75/3.28 oldX1 := -(1 - oldX0); 9.75/3.28 assume(0 = 0 && oldX1 = oldX0 - 1); 9.75/3.28 x0 := -(1 - oldX0); 9.75/3.28 TO: 13; 9.75/3.28 9.75/3.28 FROM: 11; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(30 <= oldX0 && oldX0 <= 40); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 12; 9.75/3.28 9.75/3.28 FROM: 11; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(30 > oldX0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 14; 9.75/3.28 9.75/3.28 FROM: 11; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 > 40); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 14; 9.75/3.28 9.75/3.28 FROM: 13; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 15; 9.75/3.28 9.75/3.28 FROM: 14; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 15; 9.75/3.28 9.75/3.28 FROM: 2; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 > 0 && oldX0 < 50); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 5; 9.75/3.28 9.75/3.28 FROM: 15; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(0 = 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 2; 9.75/3.28 9.75/3.28 FROM: 2; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 <= 0); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 16; 9.75/3.28 9.75/3.28 FROM: 2; 9.75/3.28 oldX0 := x0; 9.75/3.28 assume(oldX0 >= 50); 9.75/3.28 x0 := oldX0; 9.75/3.28 TO: 16; 9.75/3.28 9.75/3.28 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (5) T2 (COMPLETE) 9.75/3.28 Found this recurrent set for cutpoint 11: oldX0 == 29 and oldX1 == 29 and x0 == 29 9.75/3.28 9.75/3.28 ---------------------------------------- 9.75/3.28 9.75/3.28 (6) 9.75/3.28 NO 9.75/3.33 EOF