私はSMTソルバーのZ3 C++ APIを使用していますので、 "ctx-solver-simplify"のパラメータを変更したいと思います。私は戦術にそれらを入力する方法を知らない。私が試した:Z3 C++ API:タクトのパラメータを設定します
z3::context c;
c.set("arith_lhs",false);
c.set("eq2ineq",true);
そして
z3::params params(c);
params.set("arith_lhs",true);
params.set("eq2ineq",true);
を例コード:
z3::expr x = c.int_const("x");
z3::expr cond1 = !(x==4);
z3::goal g(c);
g.add(cond1);
z3::tactic t(c, "ctx-solver-simplify");
z3::apply_result r = t(g);
結果が
(goal (not (= x 4)))
そしてない
です(goal and (< x 4) (> x 4)
同じことがarith_lhsに適用されます。どんな助け? ありがとう!
「どのように機能しないのですか?たとえば、あなたが得たアウトプットとあなたが望むアウトプット。 – hyde
エンジニアは、文脈を提供する必要があること、つまり、問題の暗黙の詳細を他の人と共有する必要があることをまず究明する必要があります。問題やそれを取り巻く文脈に精通していない可能性があります。したがって、この場合、(A)z3とは何か、(B)あなたの入力は何か、(C)あなたの期待される出力は何か、(D)実際の出力は何かを説明する必要があります。 – iksemyonov
エンジニアとして、私はできるだけ簡単な質問をしています。私はあなたがZ3-smtソルバーを使用していないと思いますか?とにかく、質問を更新しました。 – toebs