假設我們有下面的C註釋代碼: #define L 3
int a[L] = {0};
/*@ requires \valid(a+(0..(L - 1)));
ensures \forall int j; 0 <= j < L ==> (a[j] == j); */
int main() {
int i = 0;
/*@ loop assigns i, a[
我有一組符號變量的: int a, b, c, d, e;
一組未知函數,由若干公理的約束: f1(a, b) = f2(c, b)
f1(d, e) = f1(e, d)
f3(b, c, e) = f1(b, e)
c = f1(a, b)
b = d
在此功能f1,f2,f3是未知的,但固定的。所以它不是uninterpreted functions的理論。 我要證明以下斷言
我應該如何處理驗證代碼的正確性,以避免效率低下,依賴於模塊化算法? #include <stdint.h>
uint32_t my_add(uint32_t a, uint32_t b) {
uint32_t r = a + b;
if (r < a)
return UINT32_MAX;
return r;
}
我已經嘗試過WP的「INT」的模