在Z3中实现算术相等

时间:2016-08-22 14:35:01

标签: c# z3

我正在使用Z3 c#API实现,我想实现一个函数,使用该函数可以为int类型的变量赋一个整数值。我想到的是:

public void AddEqualOperator2Constraints(Expr pOperand1, int pOperand2)
{
      Expr lOperand2 = iCtx.MkConst(pOperand2, iCtx.MkIntSort());
      BoolExpr lConstraint = iCtx.MkEq((ArithExpr)pOperand1, (ArithExpr)lOperand2);

      AddConstraintToSolver(lConstraint);
}

当我想将第二个操作数(一个整数)转换为表达式时,有一些问题。有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:0)

我猜你真的想用iCtx.MkInt(pOperand2)创建一个整数常量而不是逻辑常量。

因此,

   public void AddEqualOperator2Constraints(Expr pOperand1, int pOperand2)
   {
      BoolExpr lConstraint = iCtx.MkEq((ArithExpr)pOperand1,  iCtx.MkInt(pOperand2));

      AddConstraintToSolver(lConstraint);
   }