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, 2733 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(x, y, z, tx) -> f2(x_1, y, z, tx) :|: TRUE f2(x1, x2, x3, x4) -> f3(x1, x5, x3, x4) :|: TRUE f3(x6, x7, x8, x9) -> f4(x6, x7, x10, x9) :|: TRUE f4(x11, x12, x13, x14) -> f5(x11, x12, x13, x15) :|: TRUE f7(x16, x17, x18, x19) -> f10(x16, x17, arith, x19) :|: TRUE && arith = x18 - 1 f10(x20, x21, x22, x23) -> f11(x20, x21, x22, x20) :|: TRUE f11(x24, x25, x26, x27) -> f12(x28, x25, x26, x27) :|: TRUE f8(x63, x64, x65, x66) -> f13(x63, x67, x65, x66) :|: TRUE && x67 = x64 + 1 f6(x33, x34, x35, x36) -> f7(x33, x34, x35, x36) :|: x37 < 0 f6(x68, x69, x70, x71) -> f7(x68, x69, x70, x71) :|: x72 > 0 f6(x38, x39, x40, x41) -> f8(x38, x39, x40, x41) :|: x42 = 0 f12(x43, x44, x45, x46) -> f9(x43, x44, x45, x46) :|: TRUE f13(x47, x48, x49, x50) -> f9(x47, x48, x49, x50) :|: TRUE f5(x51, x52, x53, x54) -> f6(x51, x52, x53, x54) :|: x51 >= x52 && x51 <= x54 + x53 f9(x55, x56, x57, x58) -> f5(x55, x56, x57, x58) :|: TRUE f5(x59, x60, x61, x62) -> f14(x59, x60, x61, x62) :|: x59 < x60 f5(x73, x74, x75, x76) -> f14(x73, x74, x75, x76) :|: x73 > x76 + x75 Start term: f1(x, y, z, tx) ---------------------------------------- (3) IRS2T2 (EQUIVALENT) Transformed input IRS into an integer transition system.Used the following mapping from defined symbols to location IDs: (f1_4,1) (f2_4,2) (f3_4,3) (f4_4,4) (f5_4,5) (f7_4,6) (f10_4,7) (f11_4,8) (f12_4,9) (f8_4,10) (f13_4,11) (f6_4,12) (f9_4,13) (f14_4,14) ---------------------------------------- (4) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(0 = 0); x0 := oldX4; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX4; x2 := oldX2; x3 := oldX3; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX4; x3 := oldX3; TO: 4; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX4; TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := -(1 - oldX2); assume(0 = 0 && oldX4 = oldX2 - 1); x0 := oldX0; x1 := oldX1; x2 := -(1 - oldX2); x3 := oldX3; TO: 7; FROM: 7; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX0; TO: 8; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(0 = 0); x0 := oldX4; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 9; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := -(-(oldX1 + 1)); assume(0 = 0 && oldX4 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); x2 := oldX2; x3 := oldX3; TO: 11; FROM: 12; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(oldX4 < 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 6; FROM: 12; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := nondet(); assume(oldX4 > 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 6; FROM: 12; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; oldX4 := -(0); assume(oldX4 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 10; FROM: 9; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 13; FROM: 11; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 13; FROM: 5; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(oldX0 >= oldX1 && oldX0 <= oldX3 + oldX2); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 12; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(0 = 0); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 5; FROM: 5; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(oldX0 < oldX1); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 14; FROM: 5; oldX0 := x0; oldX1 := x1; oldX2 := x2; oldX3 := x3; assume(oldX0 > oldX3 + oldX2); x0 := oldX0; x1 := oldX1; x2 := oldX2; x3 := oldX3; TO: 14; ---------------------------------------- (5) T2 (EQUIVALENT) Used the following cutpoint-specific lexicographic rank functions: * For cutpoint 9, used the following rank functions/bounds (in descending priority order): - RF -x1+x0, bound 0 ---------------------------------------- (6) YES