/export/starexec/sandbox/solver/bin/starexec_run_c /export/starexec/sandbox/benchmark/theBenchmark.c /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- MAYBE proof of /export/starexec/sandbox/benchmark/theBenchmark.c # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty Termination of the given C Problem could not be shown: (0) C Problem (1) CToIRSProof [EQUIVALENT, 0 ms] (2) IntTRS (3) IRS2T2 [EQUIVALENT, 0 ms] (4) T2IntSys (5) T2 Underapproximation [COMPLETE, 2869 ms] (6) T2IntSys (7) T2 Underapproximation [COMPLETE, 3623 ms] (8) T2IntSys (9) TerminationGraphProcessor [SOUND, 138 ms] (10) IntTRS (11) IntTRSCompressionProof [EQUIVALENT, 74 ms] (12) IntTRS (13) PolynomialOrderProcessor [EQUIVALENT, 24 ms] (14) IntTRS (15) TerminationGraphProcessor [EQUIVALENT, 82 ms] (16) IntTRS (17) IntTRSCompressionProof [EQUIVALENT, 0 ms] (18) IntTRS (19) IntTRSNonPeriodicNontermProof [COMPLETE, 6 ms] (20) NO (21) CToLLVMProof [EQUIVALENT, 166 ms] (22) LLVM problem ---------------------------------------- (0) Obligation: c file /export/starexec/sandbox/benchmark/theBenchmark.c ---------------------------------------- (1) CToIRSProof (EQUIVALENT) Parsed C Integer Program as IRS. ---------------------------------------- (2) Obligation: Rules: f1(i, j) -> f2(x_1, j) :|: TRUE f2(x, x1) -> f3(x, x) :|: TRUE f5(x2, x3) -> f8(arith, x3) :|: TRUE && arith = x2 + 1 f9(x78, x79) -> f12(x78, x80) :|: TRUE && x80 = x79 + 1 f13(x81, x82) -> f16(x83, x82) :|: TRUE && x83 = x81 + 1 f14(x84, x85) -> f17(x84, x86) :|: TRUE && x86 = x85 + 1 f12(x10, x11) -> f13(x10, x11) :|: x10 - x11 > 2 f12(x12, x13) -> f14(x12, x13) :|: x12 - x13 <= 2 f16(x14, x15) -> f15(x14, x15) :|: TRUE f17(x16, x17) -> f15(x16, x17) :|: TRUE f10(x87, x88) -> f18(x87, x89) :|: TRUE && x89 = x88 - 1 f8(x20, x21) -> f9(x20, x21) :|: x21 < 5 f8(x22, x23) -> f10(x22, x23) :|: x23 >= 5 f15(x24, x25) -> f11(x24, x25) :|: TRUE f18(x26, x27) -> f11(x26, x27) :|: TRUE f19(x90, x91) -> f22(x92, x91) :|: TRUE && x92 = x90 - 1 f23(x93, x94) -> f26(x93, x95) :|: TRUE && x95 = x94 + 1 f24(x96, x97) -> f27(x98, x97) :|: TRUE && x98 = x96 + 1 f22(x34, x35) -> f23(x34, x35) :|: x35 < 0 - 1 f22(x36, x37) -> f24(x36, x37) :|: x37 >= 0 - 1 f26(x38, x39) -> f25(x38, x39) :|: TRUE f27(x40, x41) -> f25(x40, x41) :|: TRUE f20(x99, x100) -> f28(x101, x100) :|: TRUE && x101 = x99 + 1 f29(x102, x103) -> f32(x102, x104) :|: TRUE && x104 = x103 - 1 f30(x105, x106) -> f33(x105, x107) :|: TRUE && x107 = x106 + 1 f28(x48, x49) -> f29(x48, x49) :|: x49 * 2 > x48 f28(x50, x51) -> f30(x50, x51) :|: x51 * 2 <= x50 f32(x52, x53) -> f31(x52, x53) :|: TRUE f33(x54, x55) -> f31(x54, x55) :|: TRUE f6(x56, x57) -> f19(x56, x57) :|: x56 > 0 && x57 < 0 f6(x58, x59) -> f20(x58, x59) :|: x58 <= 0 f6(x108, x109) -> f20(x108, x109) :|: x109 >= 0 f25(x60, x61) -> f21(x60, x61) :|: TRUE f31(x62, x63) -> f21(x62, x63) :|: TRUE f4(x64, x65) -> f5(x64, x65) :|: x64 >= x65 f4(x66, x67) -> f6(x66, x67) :|: x66 < x67 f11(x68, x69) -> f7(x68, x69) :|: TRUE f21(x70, x71) -> f7(x70, x71) :|: TRUE f3(x72, x73) -> f4(x72, x73) :|: x72 > 0 f7(x74, x75) -> f3(x74, x75) :|: TRUE f3(x76, x77) -> f34(x76, x77) :|: x76 <= 0 Start term: f1(i, j) ---------------------------------------- (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) (f5_2,4) (f8_2,5) (f9_2,6) (f12_2,7) (f13_2,8) (f16_2,9) (f14_2,10) (f17_2,11) (f15_2,12) (f10_2,13) (f18_2,14) (f11_2,15) (f19_2,16) (f22_2,17) (f23_2,18) (f26_2,19) (f24_2,20) (f27_2,21) (f25_2,22) (f20_2,23) (f28_2,24) (f29_2,25) (f32_2,26) (f30_2,27) (f33_2,28) (f31_2,29) (f6_2,30) (f21_2,31) (f4_2,32) (f7_2,33) (f34_2,34) ---------------------------------------- (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; assume(0 = 0); x0 := oldX0; x1 := oldX0; TO: 3; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 1)); assume(0 = 0 && oldX2 = oldX0 + 1); x0 := -(-(oldX0 + 1)); x1 := oldX1; TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 1)); assume(0 = 0 && oldX2 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); TO: 7; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 1)); assume(0 = 0 && oldX2 = oldX0 + 1); x0 := -(-(oldX0 + 1)); x1 := oldX1; TO: 9; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 1)); assume(0 = 0 && oldX2 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); TO: 11; FROM: 7; oldX0 := x0; oldX1 := x1; assume(oldX0 - oldX1 > 2); x0 := oldX0; x1 := oldX1; TO: 8; FROM: 7; oldX0 := x0; oldX1 := x1; assume(oldX0 - oldX1 <= 2); x0 := oldX0; x1 := oldX1; TO: 10; FROM: 9; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 12; FROM: 11; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 12; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := -(1 - oldX1); assume(0 = 0 && oldX2 = oldX1 - 1); x0 := oldX0; x1 := -(1 - oldX1); TO: 14; FROM: 5; oldX0 := x0; oldX1 := x1; assume(oldX1 < 5); x0 := oldX0; x1 := oldX1; TO: 6; FROM: 5; oldX0 := x0; oldX1 := x1; assume(oldX1 >= 5); x0 := oldX0; x1 := oldX1; TO: 13; FROM: 12; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 15; FROM: 14; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 15; FROM: 16; oldX0 := x0; oldX1 := x1; oldX2 := -(1 - oldX0); assume(0 = 0 && oldX2 = oldX0 - 1); x0 := -(1 - oldX0); x1 := oldX1; TO: 17; FROM: 18; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 1)); assume(0 = 0 && oldX2 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); TO: 19; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 1)); assume(0 = 0 && oldX2 = oldX0 + 1); x0 := -(-(oldX0 + 1)); x1 := oldX1; TO: 21; FROM: 17; oldX0 := x0; oldX1 := x1; assume(oldX1 < 0 - 1); x0 := oldX0; x1 := oldX1; TO: 18; FROM: 17; oldX0 := x0; oldX1 := x1; assume(oldX1 >= 0 - 1); x0 := oldX0; x1 := oldX1; TO: 20; FROM: 19; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 22; FROM: 21; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 22; FROM: 23; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX0 + 1)); assume(0 = 0 && oldX2 = oldX0 + 1); x0 := -(-(oldX0 + 1)); x1 := oldX1; TO: 24; FROM: 25; oldX0 := x0; oldX1 := x1; oldX2 := -(1 - oldX1); assume(0 = 0 && oldX2 = oldX1 - 1); x0 := oldX0; x1 := -(1 - oldX1); TO: 26; FROM: 27; oldX0 := x0; oldX1 := x1; oldX2 := -(-(oldX1 + 1)); assume(0 = 0 && oldX2 = oldX1 + 1); x0 := oldX0; x1 := -(-(oldX1 + 1)); TO: 28; FROM: 24; oldX0 := x0; oldX1 := x1; assume(oldX1 * 2 > oldX0); x0 := oldX0; x1 := oldX1; TO: 25; FROM: 24; oldX0 := x0; oldX1 := x1; assume(oldX1 * 2 <= oldX0); x0 := oldX0; x1 := oldX1; TO: 27; FROM: 26; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 29; FROM: 28; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 29; FROM: 30; oldX0 := x0; oldX1 := x1; assume(oldX0 > 0 && oldX1 < 0); x0 := oldX0; x1 := oldX1; TO: 16; FROM: 30; oldX0 := x0; oldX1 := x1; assume(oldX0 <= 0); x0 := oldX0; x1 := oldX1; TO: 23; FROM: 30; oldX0 := x0; oldX1 := x1; assume(oldX1 >= 0); x0 := oldX0; x1 := oldX1; TO: 23; FROM: 22; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 31; FROM: 29; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 31; FROM: 32; oldX0 := x0; oldX1 := x1; assume(oldX0 >= oldX1); x0 := oldX0; x1 := oldX1; TO: 4; FROM: 32; oldX0 := x0; oldX1 := x1; assume(oldX0 < oldX1); x0 := oldX0; x1 := oldX1; TO: 30; FROM: 15; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 33; FROM: 31; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 33; FROM: 3; oldX0 := x0; oldX1 := x1; assume(oldX0 > 0); x0 := oldX0; x1 := oldX1; TO: 32; FROM: 33; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := oldX0; x1 := oldX1; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; assume(oldX0 <= 0); x0 := oldX0; x1 := oldX1; TO: 34; ---------------------------------------- (5) T2 Underapproximation (COMPLETE) Added the following guard statements: Transition 18: assume(x1 >= 0); Transition 4: assume(x0 >= 0); Transition 20: assume(x0 >= 0); Transition 6: assume(x1 >= 0); Transition 23: assume(x0 >= 0); Transition 8: assume(x0 >= 0); Transition 10: assume(x1 >= 0); Transition 27: assume(x1 >= 0); ---------------------------------------- (6) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := nondet(); assume(0 = 0); x0 := oldX2; x1 := x1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := oldX0; TO: 3; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); x1 := x1 + 1; TO: 7; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 9; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); x1 := x1 + 1; TO: 11; FROM: 7; oldX0 := x0; oldX1 := x1; assume(x0 - x1 > 2); x0 := x0; x1 := x1; TO: 8; FROM: 7; oldX0 := x0; oldX1 := x1; assume(x0 - x1 <= 2); x0 := x0; x1 := x1; TO: 10; FROM: 9; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 12; FROM: 11; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 12; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := -1 - -(x1); assume(0 = 0 && -1 - -(x1) = x1 - 1); x0 := x0; x1 := -1 - -(x1); TO: 14; FROM: 5; oldX0 := x0; oldX1 := x1; assume(x1 < 5); x0 := x0; x1 := x1; TO: 6; FROM: 5; oldX0 := x0; oldX1 := x1; assume(x1 >= 5); x0 := x0; x1 := x1; TO: 13; FROM: 12; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 15; FROM: 14; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 15; FROM: 16; oldX0 := x0; oldX1 := x1; oldX2 := -1 - -(x0); assume(0 = 0 && -1 - -(x0) = x0 - 1); x0 := -1 - -(x0); x1 := x1; TO: 17; FROM: 18; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); x1 := x1 + 1; TO: 19; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 21; FROM: 17; oldX0 := x0; oldX1 := x1; assume(x1 < 0 - 1); x0 := x0; x1 := x1; TO: 18; FROM: 17; oldX0 := x0; oldX1 := x1; assume(x1 >= 0 - 1); x0 := x0; x1 := x1; TO: 20; FROM: 19; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 22; FROM: 21; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 22; FROM: 23; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 24; FROM: 25; oldX0 := x0; oldX1 := x1; oldX2 := -1 - -(x1); assume(0 = 0 && -1 - -(x1) = x1 - 1); x0 := x0; x1 := -1 - -(x1); TO: 26; FROM: 27; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); x1 := x1 + 1; TO: 28; FROM: 24; oldX0 := x0; oldX1 := x1; assume(x1 + x1 > x0); x0 := x0; x1 := x1; TO: 25; FROM: 24; oldX0 := x0; oldX1 := x1; assume(x1 + x1 <= x0); x0 := x0; x1 := x1; TO: 27; FROM: 26; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 29; FROM: 28; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 29; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x0 > 0 && x1 < 0); x0 := x0; x1 := x1; TO: 16; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x0 <= 0); x0 := x0; x1 := x1; TO: 23; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x1 >= 0); x0 := x0; x1 := x1; TO: 23; FROM: 22; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 31; FROM: 29; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 31; FROM: 32; oldX0 := x0; oldX1 := x1; assume(x0 >= x1); x0 := x0; x1 := x1; TO: 4; FROM: 32; oldX0 := x0; oldX1 := x1; assume(x0 < x1); x0 := x0; x1 := x1; TO: 30; FROM: 15; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 33; FROM: 31; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 33; FROM: 3; oldX0 := x0; oldX1 := x1; assume(x0 > 0); x0 := x0; x1 := x1; TO: 32; FROM: 33; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; assume(x0 <= 0); x0 := x0; x1 := x1; TO: 34; ---------------------------------------- (7) T2 Underapproximation (COMPLETE) Added the following guard statements: Transition 16: assume(x0 <= 0); Transition 18: assume(x1 >= 0); Transition 4: assume(x0 >= 0); Transition 20: assume(x0 >= 0); Transition 6: assume(x1 >= 0); Transition 23: assume(x0 >= 0); Transition 8: assume(x0 >= 0); Transition 25: assume(x1 <= 0); Transition 10: assume(x1 >= 0); Transition 27: assume(x1 >= 0); Transition 13: assume(x1 <= 0); ---------------------------------------- (8) Obligation: START: 1; FROM: 1; oldX0 := x0; oldX1 := x1; oldX2 := nondet(); assume(0 = 0); x0 := oldX2; x1 := x1; TO: 2; FROM: 2; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := oldX0; TO: 3; FROM: 4; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 5; FROM: 6; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); assume(x1 >= 0); x1 := x1 + 1; TO: 7; FROM: 8; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 9; FROM: 10; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); assume(x1 >= 0); x1 := x1 + 1; TO: 11; FROM: 7; oldX0 := x0; oldX1 := x1; assume(x0 - x1 > 2); x0 := x0; x1 := x1; TO: 8; FROM: 7; oldX0 := x0; oldX1 := x1; assume(x0 - x1 <= 2); x0 := x0; x1 := x1; TO: 10; FROM: 9; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 12; FROM: 11; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 12; FROM: 13; oldX0 := x0; oldX1 := x1; oldX2 := x1 - 1; assume(0 = 0 && -1 - -(x1) = x1 - 1); x0 := x0; assume(x1 <= 0); x1 := x1 - 1; TO: 14; FROM: 5; oldX0 := x0; oldX1 := x1; assume(x1 < 5); x0 := x0; x1 := x1; TO: 6; FROM: 5; oldX0 := x0; oldX1 := x1; assume(x1 >= 5); x0 := x0; x1 := x1; TO: 13; FROM: 12; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 15; FROM: 14; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 15; FROM: 16; oldX0 := x0; oldX1 := x1; oldX2 := x0 - 1; assume(0 = 0 && -1 - -(x0) = x0 - 1); assume(x0 <= 0); x0 := x0 - 1; x1 := x1; TO: 17; FROM: 18; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); assume(x1 >= 0); x1 := x1 + 1; TO: 19; FROM: 20; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 21; FROM: 17; oldX0 := x0; oldX1 := x1; assume(x1 < 0 - 1); x0 := x0; x1 := x1; TO: 18; FROM: 17; oldX0 := x0; oldX1 := x1; assume(x1 >= 0 - 1); x0 := x0; x1 := x1; TO: 20; FROM: 19; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 22; FROM: 21; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 22; FROM: 23; oldX0 := x0; oldX1 := x1; oldX2 := x0 + 1; assume(0 = 0 && x0 + 1 = x0 + 1); assume(x0 >= 0); assume(x0 >= 0); x0 := x0 + 1; x1 := x1; TO: 24; FROM: 25; oldX0 := x0; oldX1 := x1; oldX2 := x1 - 1; assume(0 = 0 && -1 - -(x1) = x1 - 1); x0 := x0; assume(x1 <= 0); x1 := x1 - 1; TO: 26; FROM: 27; oldX0 := x0; oldX1 := x1; oldX2 := x1 + 1; assume(0 = 0 && x1 + 1 = x1 + 1); x0 := x0; assume(x1 >= 0); assume(x1 >= 0); x1 := x1 + 1; TO: 28; FROM: 24; oldX0 := x0; oldX1 := x1; assume(x1 + x1 > x0); x0 := x0; x1 := x1; TO: 25; FROM: 24; oldX0 := x0; oldX1 := x1; assume(x1 + x1 <= x0); x0 := x0; x1 := x1; TO: 27; FROM: 26; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 29; FROM: 28; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 29; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x0 > 0 && x1 < 0); x0 := x0; x1 := x1; TO: 16; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x0 <= 0); x0 := x0; x1 := x1; TO: 23; FROM: 30; oldX0 := x0; oldX1 := x1; assume(x1 >= 0); x0 := x0; x1 := x1; TO: 23; FROM: 22; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 31; FROM: 29; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 31; FROM: 32; oldX0 := x0; oldX1 := x1; assume(x0 >= x1); x0 := x0; x1 := x1; TO: 4; FROM: 32; oldX0 := x0; oldX1 := x1; assume(x0 < x1); x0 := x0; x1 := x1; TO: 30; FROM: 15; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 33; FROM: 31; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 33; FROM: 3; oldX0 := x0; oldX1 := x1; assume(x0 > 0); x0 := x0; x1 := x1; TO: 32; FROM: 33; oldX0 := x0; oldX1 := x1; assume(0 = 0); x0 := x0; x1 := x1; TO: 3; FROM: 3; oldX0 := x0; oldX1 := x1; assume(x0 <= 0); x0 := x0; x1 := x1; TO: 34; ---------------------------------------- (9) TerminationGraphProcessor (SOUND) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (10) Obligation: Rules: f3(x72, x73) -> f4(x72, x73) :|: x72 > 0 f7(x74, x75) -> f3(x74, x75) :|: TRUE f11(x68, x69) -> f7(x68, x69) :|: TRUE f15(x24, x25) -> f11(x24, x25) :|: TRUE f16(x14, x15) -> f15(x14, x15) :|: TRUE f13(x81, x82) -> f16(x83, x82) :|: TRUE && x83 = x81 + 1 f12(x10, x11) -> f13(x10, x11) :|: x10 - x11 > 2 f9(x78, x79) -> f12(x78, x80) :|: TRUE && x80 = x79 + 1 f8(x20, x21) -> f9(x20, x21) :|: x21 < 5 f5(x2, x3) -> f8(arith, x3) :|: TRUE && arith = x2 + 1 f4(x64, x65) -> f5(x64, x65) :|: x64 >= x65 f17(x16, x17) -> f15(x16, x17) :|: TRUE f14(x84, x85) -> f17(x84, x86) :|: TRUE && x86 = x85 + 1 f12(x12, x13) -> f14(x12, x13) :|: x12 - x13 <= 2 f18(x26, x27) -> f11(x26, x27) :|: TRUE f10(x87, x88) -> f18(x87, x89) :|: TRUE && x89 = x88 - 1 f8(x22, x23) -> f10(x22, x23) :|: x23 >= 5 f21(x70, x71) -> f7(x70, x71) :|: TRUE f25(x60, x61) -> f21(x60, x61) :|: TRUE f26(x38, x39) -> f25(x38, x39) :|: TRUE f23(x93, x94) -> f26(x93, x95) :|: TRUE && x95 = x94 + 1 f22(x34, x35) -> f23(x34, x35) :|: x35 < 0 - 1 f19(x90, x91) -> f22(x92, x91) :|: TRUE && x92 = x90 - 1 f6(x56, x57) -> f19(x56, x57) :|: x56 > 0 && x57 < 0 f4(x66, x67) -> f6(x66, x67) :|: x66 < x67 f27(x40, x41) -> f25(x40, x41) :|: TRUE f24(x96, x97) -> f27(x98, x97) :|: TRUE && x98 = x96 + 1 f22(x36, x37) -> f24(x36, x37) :|: x37 >= 0 - 1 f31(x62, x63) -> f21(x62, x63) :|: TRUE f32(x52, x53) -> f31(x52, x53) :|: TRUE f29(x102, x103) -> f32(x102, x104) :|: TRUE && x104 = x103 - 1 f28(x48, x49) -> f29(x48, x49) :|: x49 * 2 > x48 f20(x99, x100) -> f28(x101, x100) :|: TRUE && x101 = x99 + 1 f6(x58, x59) -> f20(x58, x59) :|: x58 <= 0 f6(x108, x109) -> f20(x108, x109) :|: x109 >= 0 f33(x54, x55) -> f31(x54, x55) :|: TRUE f30(x105, x106) -> f33(x105, x107) :|: TRUE && x107 = x106 + 1 f28(x50, x51) -> f30(x50, x51) :|: x51 * 2 <= x50 ---------------------------------------- (11) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (12) Obligation: Rules: f7(x74:0, x75:0) -> f7(x74:0, x75:0) :|: x75:0 > x74:0 && x74:0 > 0 && x75:0 > -2 && x75:0 < 0 f20(x99:0, x100:0) -> f7(x99:0 + 1, x100:0 - 1) :|: x99:0 + 1 < x100:0 * 2 f20(x, x1) -> f7(x + 1, x1 + 1) :|: x + 1 >= x1 * 2 f7(x2, x3) -> f7(x2 + 1, x3 - 1) :|: x2 > 0 && x3 <= x2 && x3 > 4 f7(x4, x5) -> f20(x4, x5) :|: x4 > 0 && x5 > x4 && x5 > -1 f7(x6, x7) -> f7(x6 - 1, x7 + 1) :|: x7 > x6 && x6 > 0 && x7 < -1 && x7 < 0 f7(x8, x9) -> f7(x8 + 1, x9 + 2) :|: x9 <= x8 && x8 > 0 && x8 + 1 - (x9 + 1) <= 2 && x9 < 5 f7(x10, x11) -> f7(x10 + 2, x11 + 1) :|: x11 <= x10 && x10 > 0 && x10 + 1 - (x11 + 1) > 2 && x11 < 5 f7(x12, x13) -> f20(x12, x13) :|: x12 > 0 && x13 > x12 && x12 < 1 ---------------------------------------- (13) PolynomialOrderProcessor (EQUIVALENT) Found the following polynomial interpretation: [f7(x, x1)] = 0 [f20(x2, x3)] = 0 The following rules are decreasing: f7(x12, x13) -> f20(x12, x13) :|: x12 > 0 && x13 > x12 && x12 < 1 The following rules are bounded: f7(x74:0, x75:0) -> f7(x74:0, x75:0) :|: x75:0 > x74:0 && x74:0 > 0 && x75:0 > -2 && x75:0 < 0 f20(x99:0, x100:0) -> f7(x99:0 + 1, x100:0 - 1) :|: x99:0 + 1 < x100:0 * 2 f20(x, x1) -> f7(x + 1, x1 + 1) :|: x + 1 >= x1 * 2 f7(x2, x3) -> f7(x2 + 1, x3 - 1) :|: x2 > 0 && x3 <= x2 && x3 > 4 f7(x4, x5) -> f20(x4, x5) :|: x4 > 0 && x5 > x4 && x5 > -1 f7(x6, x7) -> f7(x6 - 1, x7 + 1) :|: x7 > x6 && x6 > 0 && x7 < -1 && x7 < 0 f7(x8, x9) -> f7(x8 + 1, x9 + 2) :|: x9 <= x8 && x8 > 0 && x8 + 1 - (x9 + 1) <= 2 && x9 < 5 f7(x10, x11) -> f7(x10 + 2, x11 + 1) :|: x11 <= x10 && x10 > 0 && x10 + 1 - (x11 + 1) > 2 && x11 < 5 f7(x12, x13) -> f20(x12, x13) :|: x12 > 0 && x13 > x12 && x12 < 1 ---------------------------------------- (14) Obligation: Rules: f7(x74:0, x75:0) -> f7(x74:0, x75:0) :|: x75:0 > x74:0 && x74:0 > 0 && x75:0 > -2 && x75:0 < 0 f20(x99:0, x100:0) -> f7(x99:0 + 1, x100:0 - 1) :|: x99:0 + 1 < x100:0 * 2 f20(x, x1) -> f7(x + 1, x1 + 1) :|: x + 1 >= x1 * 2 f7(x2, x3) -> f7(x2 + 1, x3 - 1) :|: x2 > 0 && x3 <= x2 && x3 > 4 f7(x4, x5) -> f20(x4, x5) :|: x4 > 0 && x5 > x4 && x5 > -1 f7(x6, x7) -> f7(x6 - 1, x7 + 1) :|: x7 > x6 && x6 > 0 && x7 < -1 && x7 < 0 f7(x8, x9) -> f7(x8 + 1, x9 + 2) :|: x9 <= x8 && x8 > 0 && x8 + 1 - (x9 + 1) <= 2 && x9 < 5 f7(x10, x11) -> f7(x10 + 2, x11 + 1) :|: x11 <= x10 && x10 > 0 && x10 + 1 - (x11 + 1) > 2 && x11 < 5 ---------------------------------------- (15) TerminationGraphProcessor (EQUIVALENT) Constructed the termination graph and obtained one non-trivial SCC. ---------------------------------------- (16) Obligation: Rules: f20(x99:0, x100:0) -> f7(x99:0 + 1, x100:0 - 1) :|: x99:0 + 1 < x100:0 * 2 f7(x4, x5) -> f20(x4, x5) :|: x4 > 0 && x5 > x4 && x5 > -1 f7(x8, x9) -> f7(x8 + 1, x9 + 2) :|: x9 <= x8 && x8 > 0 && x8 + 1 - (x9 + 1) <= 2 && x9 < 5 f20(x, x1) -> f7(x + 1, x1 + 1) :|: x + 1 >= x1 * 2 f7(x2, x3) -> f7(x2 + 1, x3 - 1) :|: x2 > 0 && x3 <= x2 && x3 > 4 f7(x10, x11) -> f7(x10 + 2, x11 + 1) :|: x11 <= x10 && x10 > 0 && x10 + 1 - (x11 + 1) > 2 && x11 < 5 ---------------------------------------- (17) IntTRSCompressionProof (EQUIVALENT) Compressed rules. ---------------------------------------- (18) Obligation: Rules: f7(x8:0, x9:0) -> f7(x8:0 + 1, x9:0 + 2) :|: x8:0 + 1 - (x9:0 + 1) <= 2 && x9:0 < 5 && x8:0 > 0 && x9:0 <= x8:0 f7(x2:0, x3:0) -> f7(x2:0 + 1, x3:0 - 1) :|: x2:0 > 0 && x3:0 <= x2:0 && x3:0 > 4 f7(x10:0, x11:0) -> f7(x10:0 + 2, x11:0 + 1) :|: x10:0 + 1 - (x11:0 + 1) > 2 && x11:0 < 5 && x10:0 > 0 && x11:0 <= x10:0 f7(x4:0, x5:0) -> f7(x4:0 + 1, x5:0 - 1) :|: x5:0 > -1 && x5:0 * 2 > x4:0 + 1 && x5:0 > x4:0 && x4:0 > 0 f7(x, x1) -> f7(x + 1, x1 + 1) :|: x1 > -1 && x1 * 2 <= x + 1 && x1 > x && x > 0 ---------------------------------------- (19) IntTRSNonPeriodicNontermProof (COMPLETE) Normalized system to the following form: f(pc, x8:0, x9:0) -> f(1, x8:0 + 1, x9:0 + 2) :|: pc = 1 && (x8:0 + 1 - (x9:0 + 1) <= 2 && x9:0 < 5 && x8:0 > 0 && x9:0 <= x8:0) f(pc, x2:0, x3:0) -> f(1, x2:0 + 1, x3:0 - 1) :|: pc = 1 && (x2:0 > 0 && x3:0 <= x2:0 && x3:0 > 4) f(pc, x10:0, x11:0) -> f(1, x10:0 + 2, x11:0 + 1) :|: pc = 1 && (x10:0 + 1 - (x11:0 + 1) > 2 && x11:0 < 5 && x10:0 > 0 && x11:0 <= x10:0) f(pc, x4:0, x5:0) -> f(1, x4:0 + 1, x5:0 - 1) :|: pc = 1 && (x5:0 > -1 && x5:0 * 2 > x4:0 + 1 && x5:0 > x4:0 && x4:0 > 0) f(pc, x, x1) -> f(1, x + 1, x1 + 1) :|: pc = 1 && (x1 > -1 && x1 * 2 <= x + 1 && x1 > x && x > 0) Proved unsatisfiability of the following formula, indicating that the system is never left after entering: ((((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * 2))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_1 * 1) + (run1_2 * -1)) <= ((1 * 2)) and ((run1_2 * 1)) < ((1 * 5))) and ((run1_1 * 1)) > 0) and ((run1_2 * 1)) <= ((run1_1 * 1))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * -1))) and (((run1_0 * 1)) = ((1 * 1)) and ((((run1_1 * 1)) > 0 and ((run1_2 * 1)) <= ((run1_1 * 1))) and ((run1_2 * 1)) > ((1 * 4))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 2)) and run2_2 = ((run1_2 * 1) + (1 * 1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_1 * 1) + (run1_2 * -1)) > ((1 * 2)) and ((run1_2 * 1)) < ((1 * 5))) and ((run1_1 * 1)) > 0) and ((run1_2 * 1)) <= ((run1_1 * 1))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * -1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_2 * 1)) > ((1 * -1)) and ((run1_2 * 2)) > ((run1_1 * 1) + (1 * 1))) and ((run1_2 * 1)) > ((run1_1 * 1))) and ((run1_1 * 1)) > 0))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * 1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_2 * 1)) > ((1 * -1)) and ((run1_2 * 2)) <= ((run1_1 * 1) + (1 * 1))) and ((run1_2 * 1)) > ((run1_1 * 1))) and ((run1_1 * 1)) > 0)))) and (!(((run2_0 * 1)) = ((1 * 1)) and (((((run2_1 * 1) + (run2_2 * -1)) <= ((1 * 2)) and ((run2_2 * 1)) < ((1 * 5))) and ((run2_1 * 1)) > 0) and ((run2_2 * 1)) <= ((run2_1 * 1)))) and !(((run2_0 * 1)) = ((1 * 1)) and ((((run2_1 * 1)) > 0 and ((run2_2 * 1)) <= ((run2_1 * 1))) and ((run2_2 * 1)) > ((1 * 4)))) and !(((run2_0 * 1)) = ((1 * 1)) and (((((run2_1 * 1) + (run2_2 * -1)) > ((1 * 2)) and ((run2_2 * 1)) < ((1 * 5))) and ((run2_1 * 1)) > 0) and ((run2_2 * 1)) <= ((run2_1 * 1)))) and !(((run2_0 * 1)) = ((1 * 1)) and (((((run2_2 * 1)) > ((1 * -1)) and ((run2_2 * 2)) > ((run2_1 * 1) + (1 * 1))) and ((run2_2 * 1)) > ((run2_1 * 1))) and ((run2_1 * 1)) > 0)) and !(((run2_0 * 1)) = ((1 * 1)) and (((((run2_2 * 1)) > ((1 * -1)) and ((run2_2 * 2)) <= ((run2_1 * 1) + (1 * 1))) and ((run2_2 * 1)) > ((run2_1 * 1))) and ((run2_1 * 1)) > 0)))) Proved satisfiability of the following formula, indicating that the system is entered at least once: (((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * 2))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_1 * 1) + (run1_2 * -1)) <= ((1 * 2)) and ((run1_2 * 1)) < ((1 * 5))) and ((run1_1 * 1)) > 0) and ((run1_2 * 1)) <= ((run1_1 * 1))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * -1))) and (((run1_0 * 1)) = ((1 * 1)) and ((((run1_1 * 1)) > 0 and ((run1_2 * 1)) <= ((run1_1 * 1))) and ((run1_2 * 1)) > ((1 * 4))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 2)) and run2_2 = ((run1_2 * 1) + (1 * 1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_1 * 1) + (run1_2 * -1)) > ((1 * 2)) and ((run1_2 * 1)) < ((1 * 5))) and ((run1_1 * 1)) > 0) and ((run1_2 * 1)) <= ((run1_1 * 1))))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * -1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_2 * 1)) > ((1 * -1)) and ((run1_2 * 2)) > ((run1_1 * 1) + (1 * 1))) and ((run1_2 * 1)) > ((run1_1 * 1))) and ((run1_1 * 1)) > 0))) or ((run2_0 = ((1 * 1)) and run2_1 = ((run1_1 * 1) + (1 * 1)) and run2_2 = ((run1_2 * 1) + (1 * 1))) and (((run1_0 * 1)) = ((1 * 1)) and (((((run1_2 * 1)) > ((1 * -1)) and ((run1_2 * 2)) <= ((run1_1 * 1) + (1 * 1))) and ((run1_2 * 1)) > ((run1_1 * 1))) and ((run1_1 * 1)) > 0)))) ---------------------------------------- (20) NO ---------------------------------------- (21) CToLLVMProof (EQUIVALENT) Compiled c-file /export/starexec/sandbox/benchmark/theBenchmark.c to LLVM. ---------------------------------------- (22) Obligation: LLVM Problem Aliases: Data layout: "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" Machine: "x86_64-pc-linux-gnu" Type definitions: Global variables: Function declarations and definitions: *BasicFunctionTypename: "__VERIFIER_nondet_int" returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc *BasicFunctionTypename: "main" linkageType: EXTERNALLY_VISIBLE returnParam: i32 parameters: () variableLength: false visibilityType: DEFAULT callingConvention: ccc 0: %1 = alloca i32, align 4 %i = alloca i32, align 4 %j = alloca i32, align 4 store 0, %1 %2 = call i32 @__VERIFIER_nondet_int() store %2, %i %3 = load %i store %3, %j br %4 4: %5 = load %i %6 = icmp sgt %5 0 br %6, %7, %68 7: %8 = load %i %9 = load %j %10 = icmp sge %8 %9 br %10, %11, %34 11: %12 = load %i %13 = add %12 1 store %13, %i %14 = load %j %15 = icmp slt %14 5 br %15, %16, %30 16: %17 = load %j %18 = add %17 1 store %18, %j %19 = load %i %20 = load %j %21 = sub %19 %20 %22 = icmp sgt %21 2 br %22, %23, %26 23: %24 = load %i %25 = add %24 1 store %25, %i br %29 26: %27 = load %j %28 = add %27 1 store %28, %j br %29 29: br %33 30: %31 = load %j %32 = sub %31 1 store %32, %j br %33 33: br %67 34: %35 = load %i %36 = icmp sgt %35 0 br %36, %37, %52 37: %38 = load %j %39 = icmp slt %38 0 br %39, %40, %52 40: %41 = load %i %42 = sub %41 1 store %42, %i %43 = load %j %44 = icmp slt %43 -1 br %44, %45, %48 45: %46 = load %j %47 = add %46 1 store %47, %j br %51 48: %49 = load %i %50 = add %49 1 store %50, %i br %51 51: br %66 52: %53 = load %i %54 = add %53 1 store %54, %i %55 = load %j %56 = mul %55 2 %57 = load %i %58 = icmp sgt %56 %57 br %58, %59, %62 59: %60 = load %j %61 = sub %60 1 store %61, %j br %65 62: %63 = load %j %64 = add %63 1 store %64, %j br %65 65: br %66 66: br %67 67: br %4 68: ret 0 Analyze Termination of all function calls matching the pattern: main()