YES proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty Termination of the given C Problem could be proven: (0) C Problem (1) CToIRSProof [EQUIVALENT, 0 ms] (2) IntTRS (3) IRS2T2 [EQUIVALENT, 0 ms] (4) T2IntSys (5) T2 [EQUIVALENT, 1667 ms] (6) YES ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(a, b) -> f2(x_1, b) :|: TRUE f2(x, x1) -> f3(x, x2) :|: TRUE f6(x3, x4) -> f9(x3, arith) :|: TRUE && arith = x4 + 7 f7(x43, x44) -> f10(x43, x45) :|: TRUE && x45 = x44 + 2 f5(x7, x8) -> f6(x7, x8) :|: x8 > 5 f5(x9, x10) -> f7(x9, x10) :|: x10 <= 5 f9(x11, x12) -> f8(x11, x12) :|: TRUE f10(x13, x14) -> f8(x13, x14) :|: TRUE f11(x46, x47) -> f14(x48, x47) :|: TRUE && x48 = x46 + 10 f12(x49, x50) -> f15(x51, x50) :|: TRUE && x51 = x49 + 1 f8(x19, x20) -> f11(x19, x20) :|: x20 >= 10 && x20 <= 12 f8(x21, x22) -> f12(x21, x22) :|: x22 < 10 f8(x52, x53) -> f12(x52, x53) :|: x53 > 12 f14(x23, x24) -> f13(x23, x24) :|: TRUE f15(x25, x26) -> f13(x25, x26) :|: TRUE f4(x27, x28) -> f5(x27, x28) :|: x28 < x27 f13(x29, x30) -> f4(x29, x30) :|: TRUE f4(x31, x32) -> f16(x31, x32) :|: x32 >= x31 f16(x54, x55) -> f17(x56, x55) :|: TRUE && x56 = x54 + 2 f17(x57, x58) -> f18(x57, x59) :|: TRUE && x59 = x58 - 10 f3(x37, x38) -> f4(x37, x38) :|: x37 < 30 f18(x39, x40) -> f3(x39, x40) :|: TRUE f3(x41, x42) -> f19(x41, x42) :|: x41 >= 30 Start term: f1(a, b) ---------------------------------------- (3) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f1_2,1) (f2_2,2) (f3_2,3) (f6_2,4) (f9_2,5) (f7_2,6) (f10_2,7) (f5_2,8) (f8_2,9) (f11_2,10) (f14_2,11) (f12_2,12) (f15_2,13) (f13_2,14) (f4_2,15) (f16_2,16) (f17_2,17) (f18_2,18) (f19_2,19) ---------------------------------------- (4) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := nondet(); assume(0 = 0); x0 := oldX2; x1 := oldX1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX2; TO: 3; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 7)); assume(0 = 0 && oldX2 = oldX1 + 7); x0 := oldX0; x1 := -(-(oldX1 + 7)); TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 2)); assume(0 = 0 && oldX2 = oldX1 + 2); x0 := oldX0; x1 := -(-(oldX1 + 2)); TO: 7; FROM: 8; oldX0 := x0; oldX1 := x1; assume(oldX1 > 5); x0 := oldX0; x1 := oldX1; TO: 4; FROM: 8; oldX0 := x0; oldX1 := x1; assume(oldX1 <= 5); x0 := oldX0; x1 := oldX1; TO: 6; FROM: 5; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 9; FROM: 7; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 9; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 10)); assume(0 = 0 && oldX2 = oldX0 + 10); x0 := -(-(oldX0 + 10)); x1 := oldX1; TO: 11; FROM: 12; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 1)); assume(0 = 0 && oldX2 = oldX0 + 1); x0 := -(-(oldX0 + 1)); x1 := oldX1; TO: 13; FROM: 9; oldX0 := x0; oldX1 := x1; assume(oldX1 >= 10 && oldX1 <= 12); x0 := oldX0; x1 := oldX1; TO: 10; FROM: 9; oldX0 := x0; oldX1 := x1; assume(oldX1 < 10); x0 := oldX0; x1 := oldX1; TO: 12; FROM: 9; oldX0 := x0; oldX1 := x1; assume(oldX1 > 12); x0 := oldX0; x1 := oldX1; TO: 12; FROM: 11; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 14; FROM: 13; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 14; FROM: 15; oldX0 := x0; oldX1 := x1; assume(oldX1 < oldX0); x0 := oldX0; x1 := oldX1; TO: 8; FROM: 14; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 15; FROM: 15; oldX0 := x0; oldX1 := x1; assume(oldX1 >= oldX0); x0 := oldX0; x1 := oldX1; TO: 16; FROM: 16; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 2)); assume(0 = 0 && oldX2 = oldX0 + 2); x0 := -(-(oldX0 + 2)); x1 := oldX1; TO: 17; FROM: 17; oldX0 := x0; oldX1 := x1; oldX2 := -(10 - oldX1); assume(0 = 0 && oldX2 = oldX1 - 10); x0 := oldX0; x1 := -(10 - oldX1); TO: 18; FROM: 3; oldX0 := x0; oldX1 := x1; assume(oldX0 < 30); x0 := oldX0; x1 := oldX1; TO: 15; FROM: 18; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; assume(oldX0 >= 30); x0 := oldX0; x1 := oldX1; TO: 19; ---------------------------------------- (5) T2 (EQUIVALENT) Initially, performed program simplifications using lexicographic rank functions: * Removed transitions 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 27, 28, 31, 32 using the following rank functions: - Rank function 1: RF for loc. 12: -6*x0 RF for loc. 13: -1-6*x0 RF for loc. 14: -2-6*x0 RF for loc. 15: 3-6*x0 RF for loc. 16: 2-6*x0 RF for loc. 17: 1-6*x0 RF for loc. 21: 3-6*x0 Bound for (chained) transitions 31: -171 Bound for (chained) transitions 32: -171 - Rank function 2: RF for loc. 12: -3-6*x1 RF for loc. 13: 8-6*x1 RF for loc. 14: 1-6*x1 RF for loc. 15: -6*x1 RF for loc. 16: -1-6*x1 RF for loc. 17: -2-6*x1 RF for loc. 21: -61-6*oldX2 Bound for (chained) transitions 15: -33 Bound for (chained) transitions 18: -46 - Rank function 3: RF for loc. 12: -21-5*x1 RF for loc. 13: 7-5*x1 RF for loc. 14: 7-5*x1 RF for loc. 15: -5*x1 RF for loc. 16: -7-5*x1 RF for loc. 17: -14-5*x1 RF for loc. 21: -58-5*x1 Bound for (chained) transitions 17: -53 - Rank function 4: RF for loc. 12: -2+2*x0-2*x1 RF for loc. 13: 11+2*x0-2*x1 RF for loc. 14: 4+2*x0-2*x1 RF for loc. 15: 1+2*x0-2*x1 RF for loc. 16: 2*x0-2*x1 RF for loc. 17: -1+2*x0-2*x1 RF for loc. 21: -25+2*oldX0-2*oldX1 Bound for (chained) transitions 23: 1 Bound for (chained) transitions 24: 1 - Rank function 5: RF for loc. 12: 14*x1 RF for loc. 13: 6*x1 RF for loc. 14: 0 RF for loc. 15: -1 RF for loc. 16: -2 RF for loc. 17: -3 RF for loc. 21: -3 Bound for (chained) transitions 14: 84 Bound for (chained) transitions 16: 0 Bound for (chained) transitions 19: 78 Bound for (chained) transitions 20: -2 Bound for (chained) transitions 22, 28: -2 Bound for (chained) transitions 27: -1 ---------------------------------------- (6) YES