この Z3 コードを C# で実行しようとしていますが、次のようなエラーがたくさんあります。
- Z3V3 参照が必要
- z3.MkSort("U") では、z3 が存在しないと表示されます
- 用語参照必須参照
Z3 を実行してプログラム ファイルに含めましたが、このコードはどのように機能し、必要な .NET 参照はありますか?
class Program
{
static void Main(string[] args)
{
{
Console.WriteLine("prove_example1");
mk_context();
/* create uninterpreted type. */
Sort U = z3.MkSort("U");
/* declare function g */
FuncDecl g = z3.MkFuncDecl("g", U, U);
/* create x and y */
Term x = z3.MkConst("x", U);
Term y = z3.MkConst("y", U);
/* create g(x), g(y) */
Term gx = mk_unary_app(g, x);
Term gy = mk_unary_app(g, y);
/* assert x = y */
Term eq = z3.MkEq(x, y);
z3.AssertCnstr(eq);
/* prove g(x) = g(y) */
Term f = z3.MkEq(gx, gy);
Console.WriteLine("prove: x = y implies g(x) = g(y)");
prove(f);
/* create g(g(x)) */
Term ggx = mk_unary_app(g, gx);
/* disprove g(g(x)) = g(y) */
f = z3.MkEq(ggx, gy);
Console.WriteLine("disprove: x = y implies g(g(x)) = g(y)");
prove(f);
/* Print the model using the custom model printer */
z3.AssertCnstr(z3.MkNot(f));
check2(LBool.True);
}
}
}
}