CBMC模型检查

时间:2015-03-05 14:05:39

标签: c cbmc

我试图限制表b[4][4],以便只有那些i>=j且满足条件(stored[i] & stored[j]) == stored[i]为1,其余为0的地方。 / p>

为什么这不起作用?

void main(){
  unsigned int i = 0  , j = 0; 
  _Bool b[4][4];
  bitvector stored[4] = {111,001,010,000};
  for(i=0;i<4;i++){
     for(j=0;j<4;j++){
      __CPROVER_assume( !(b[i][j]) || ((i>=j) && (stored[i] & stored[j] == stored[i])));  
      }
   }

CProver假设尝试获得b[i][j] == 1应该暗示stored[i]& stored[j] == stored[i]的效果。 但输出并没有产生这种效果。问题是什么?我是CBMC和C的新手。

1 个答案:

答案 0 :(得分:2)

请注意bitvector stored[4] = {111,001,010,000};中的值位于基数10。

你的意思是基础2 {0b111,0b001,0b010,0b000}