假设我们有下面的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”的模