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