我正在使用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);
}
当我想将第二个操作数(一个整数)转换为表达式时,有一些问题。有谁知道我做错了什么?
答案 0 :(得分:0)
我猜你真的想用iCtx.MkInt(pOperand2)创建一个整数常量而不是逻辑常量。
因此,
public void AddEqualOperator2Constraints(Expr pOperand1, int pOperand2)
{
BoolExpr lConstraint = iCtx.MkEq((ArithExpr)pOperand1, iCtx.MkInt(pOperand2));
AddConstraintToSolver(lConstraint);
}