たとえば、ビットベクトルの 3 番目のビットが 0 であるかどうかをテストするブール変数が必要です。ビットベクトルの理論では、1 ビットをビットベクトルとして抽出できますが、ブール型では抽出できません。このキャストができるかな。ありがとうございました。
===更新===
私の質問が明確でない場合は申し訳ありません。しかし、Nikolaj Bjorner の答えは、ビット ベクトルの特定のビットをテストする方法です。ビットベクトルの最初のビットの値を変数に代入したいのですが。この例を次のように変更してみます。
(declare-fun x () (_ BitVec 5))
(declare-fun bit0 () Bool)
(assert (= (= #b1 ((_ extract 0 0) x)) bit0 ))
(check-sat)
そしてz3は不平を言います:
(error "line 2 column 25: invalid declaration, builtin symbol bit0")
(error "line 3 column 44: invalid function application, sort mismatch on argument at position 2")
後で使用するために、その変数 bit0 が必要です。ヒントを教えてください。ありがとう。