私は ConstInterp を使用して expr の定数リテラルの値を取得していました。
model.ConstInterp(lit)
しかし、奇妙なエラーが発生しました
... <body of some loop>
let x = model.ConstInterp(lit)
if solver.Check() == Status.SATISFIABLE
then model.ConstInterp(lit)
ConstInterpの2 回目の呼び出しでエラーが発生する
Unhandled Exception: Microsoft.Z3.Z3Exception: invalid argument
at Microsoft.Z3.Native.Z3_model_get_const_interp(IntPtr a0,IntPtr a1,IntPtr a2)
at Microsoft.Z3.Model.ConstInterp(FuncDecl f)
at Microsoft.Z3.Model.ConstInterp(Expr a)
ただし、ConstInterp の代わりに Eval を使用した同じコードは問題ありません。ConstInterp の使用方法が間違っていませんか?