1

.net apiが見つかりません(elim-quantifiers (exists ((x Int)) (and (< t1 x) (< x t2))))。それは戦術ですか?誰かがZ3の.netAPIを使用して次のスクリプトを実装するのを手伝ってもらえますか?

(declare-const t1 Int)
(declare-const t2 Int)

(elim-quantifiers (exists ((x Int)) (and (< t1 x) (< x t2))))
4

1 に答える 1

2

はい、戦術を使用できます。.NET API を使用した例を次に示します (この特定の例は実行していないため、多少の変更が必要になる場合がありますが、私のプログラムではほぼ同じものを使用しています)。

// (exists ((x Int)) (and (< t1 x) (< x t2))))
Context z3 = new Context();
Expr t1 = z3.MkIntConst("t1");
Expr t2 = z3.MkIntConst("t2");
Expr x = z3.MkIntConst("x");

Expr p = z3.MkAnd(z3.MkLt((ArithExpr)t1, (ArithExpr)x), z3.MkLt((ArithExpr)x, (ArithExpr)t2));
Expr ex = z3.MkExists(new Expr[] { x }, p);

Goal g = z3.MkGoal(true, true, false);
g.Assert((BoolExpr)ex);
Tactic tac = Instance.Z3.MkTactic("qe"); // quantifier elimination
ApplyResult a = tac.Apply(g); // look at a.Subgoals
于 2012-09-06T15:07:12.623 に答える