2016-08-22 5 views
0

私はZ3 c#APIを使って実装しています。int型の変数に整数値を代入できる関数を実装したいと思います。私が考えているのは次のとおりです。Z3で等価算術を実装する

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

     AddConstraintToSolver(lConstraint); 
} 

整数である第2オペランドを式にキャストしたいときには何か問題があります。誰かが私が間違っていることを知っていますか?

答えて

0

本当にiCtx.MkInt(pOperand2)を使用して、論理定数ではなく整数定数を作成したいと思います。その上に追加従って

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

     AddConstraintToSolver(lConstraint); 
    } 
+0

:Z3に「CONST」と呼ばれるものは何でも」は、実際には、例えば他の形式化では、「変数」と同じで「定数関数」でありますf(x)= x "は定数関数であり、" 5 "はZ3で"数字 "と呼ばれる。 –

関連する問題