量化expr_vector索引

时间:2014-04-20 17:18:26

标签: z3

在example.cpp的expr_vector示例中,我们可以量化expr_vector索引。例如,如果我们有以下代码片段:

expr_vector steps(c); 
expr b = c.bool_val(true); 
for(unsigned i = 0; i<N ; i++ ) 
{  expr step = c.int_const(...)

  if( i == 0 ) b = b && step == 0 ; 
  else b = b && step == steps[i-1] + 1 ; 
  steps.push_back(step); 
}

我们可以表达类似

的内容吗?
expr choice = c.int_const("choice); 
b = b && 0 <= choice && choice < N; 
b = b && steps[choice] > 5 ; 

1 个答案:

答案 0 :(得分:1)

不,这是不可能的,expr_vectors就像具有固定大小和显式索引的普通向量一样。也就是说,可以通过使用数组来表达您的问题(参见例如Arrays section in the tutorial);然而,这可能以性能为代价,因为根据理论的不同组合,可能必须选择不同的决策程序。