标签: z3

C++ API 中上下文的使用

我有以下程序,它将字符串转换为布尔公式 ( string_to_formula),我在其中定义expr_vector b(c)。这段代码有效,但我无法推理context. a 的作用是什么context?有什么方法可以b只定义一次变量吗?为什么我们需要将 发送context给函数?这段代码可以写得更简洁吗?

int main() { try {

  context c;
  expr form(c);
  form  = string_to_formula("x1x00xx011",c);
  expr form1(c);
  form1  = string_to_formula("1100x1x0",c);

  solver s(c);
  s.add(form && form1);
  s.check();
  model m = s.get_model();
  cout << m << "\n";
} 

expr string_to_formula(string str, context& c )
{
 expr_vector b(c) ;
 for ( unsigned i = 0; i < str.length(); i++)
 { stringstream b_name;
   b_name << "b_" << i;
   b.push_back(c.bool_const(b_name.str().c_str())); …
Run Code Online (Sandbox Code Playgroud)

z3

2
推荐指数
1
解决办法
7313
查看次数

可以使用 LLVM 字节码作为 Z3 输入吗?

我有 LLVM 字节码中的描述,我需要作为 Z3 输入传递。如果可以的话,是怎么做到的呢??如果没有的话有什么工具可以做到吗?

llvm z3

2
推荐指数
1
解决办法
1530
查看次数

如何让 z3 返回多个 unsat 核心,多个令人满意的分配

我正在研究研究工具的一个组成部分;我有兴趣检索(对于 QF_LRA)

- 多个(最小或其他)UNSAT 核心和
- 多个 SAT 作业

我已经查看了论坛上有关此主题的早期讨论,例如, 如何在逻辑 QF_LRA 上使用 z3 时获得不同的未饱和内核

他们指的是 z3 Python 教程,例如http://rise4fun.com/Z3Py/tutorial/musmss

现在似乎处于离线状态。我已经尝试了 github 等的其他建议来找到提到的教程,但没有运气。

我正在使用 z3 Java API;但很高兴转向替代品。

smt z3 sat

2
推荐指数
1
解决办法
836
查看次数

在 Z3 中设置求解器的逻辑(API)

我注意到Z3 C++(和 C)API 允许您提供要使用的逻辑。

我有两个问题在网上查不到答案:

  1. 这些应该是标准SMT-LIB 逻辑吗?QF_LRA
  2. 这些何时值得提供,即 Z3 何时实际使用此信息

我的上下文主要是 QF,没有 BV,但其他一切都可能,我正在逐步使用 SMT 求解器,并且我始终可以计算出我将在开始时使用的逻辑。

smt z3

2
推荐指数
1
解决办法
825
查看次数

(_ bv0 32), (_ bv1 16) ... 在 SMT2 基准测试中的含义

我注意到有一些 SMT2 基准测试,像(_ bv0 32), (_ bv16 32), ... 这样的符号被使用,例如,在:

QF_FP/schanda/spark/zeros_consistent_2.smt2

http://cvc4.cs.nyu.edu/benchmarks/smtlib2/QF_AUFBV/dwp_formulas/try5_small_difret_functions_wp_vdir.rev_xstrcoll_mtime.il.wp.smt2

http://rise4fun.com/Z3/e1s

但是,这不是在理论声明中提及此类符号:

http://smtlib.cs.uiowa.edu/theories.shtml

对此有何评论?它们的含义是什么?

谢谢 !

smt z3 cvc4

2
推荐指数
1
解决办法
132
查看次数

我可以在 Z3 中重放证明吗?

是否可以让 Z3 序列化某个断言的证明,并在以后的调用中重放证明而不是再次运行证明搜索?我知道 Z3 可以输出 的反例unsat,但它可以为 的模型提供证明sat吗?

z3

2
推荐指数
1
解决办法
807
查看次数

使用 Z3 求解器求解长度为任意大小数组的条件

我正在学习 Z3 求解器。我有一个关于数组和相关条件的问题。特别是,我必须创建 Z3py 代码来解决以下 if 条件:

totalAccounts = [ 1, 2, 3, 4, 5 ]    

def (myAccounts):
   cnt = len(myAccounts)
   if (cnt > 10) doSomething()
Run Code Online (Sandbox Code Playgroud)

myAccounts是一个整数列表,是列表的子集totalAccounts。通过的条件cnt > 10取决于列表的长度myAccounts

我想我需要表示为 Z3 的数组并使用函数myAccounts复制其中的值。totalAccountsStore

MYACCOUNTS = Array ('MYACCOUNTS', IntSort(), IntSort())
I = Int('I')
i = 0
for elem in totalAccounts:
  MYACCOUNTS = Store(MYACCOUNTS, i, elem)
  i = i + 1
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在创建添加到求解器的条件时表示此类数组的长度:

solver = Solver()
solver.add( ??? > 10 )
Run Code Online (Sandbox Code Playgroud)

我做对了吗?

python solver z3 z3py

2
推荐指数
1
解决办法
2037
查看次数

在本地 Opam 环境中安装 Z3 OCaml 绑定时出现链接器错误

我正在使用 Z3 源目录中的以下(标准)命令从源代码中使用 OCaml 编译 Z3:

> python scripts/mk_make.py --prefix=$OPAM_SWITCH_PREFIX --ml

然后从build/目录中构建和安装。

然后运行

> utop

> #require "z3";;

给了我以下错误:

Cannot load required shared library dllz3ml. Reason: /home/foobar/.opam/my_opam/lib/stublibs/dllz3ml.so: undefined symbol: Z3_rcf_del.

我对如何调试这些类型的错误感到困惑。是否有任何建议可以确定问题以及如何解决?

ocaml linker-errors z3 opam

2
推荐指数
1
解决办法
406
查看次数

定理证明者中的归纳证明(Z3、Vampire、具有 TPTP 语法)

我正在使用 TPTP 语法测试一些定理证明器(例如 Z3、Alt-Ergo、Vampire 等)的归纳能力。令我惊讶的是,他们都没有能够证明以下简单的猜想:

tff(t1, type, (fun: $int > $int )).

tff(ax1, axiom, ( 
    ! [A: $int] : (
        $less(A, 1) => (fun(A) = 123)
    )
)).

tff(ax2, axiom, ( 
    ! [A: $int] : (
        $greatereq(A, 1) => (fun(A) = fun($difference(A, 1))) 
    )
)).

tff(conj1, conjecture, ! [A: $int] : ($greatereq(A, 1) => (fun(A) = 123))).

% END OF SYSTEM OUTPUT
% RESULT: SOT_EWCr1V - Z3---4.8.9.0 says Timeout - CPU = 60.09 WC = 35.47 
% OUTPUT: SOT_EWCr1V - …
Run Code Online (Sandbox Code Playgroud)

logic logic-programming theorem-proving smt z3

2
推荐指数
1
解决办法
464
查看次数

在不展开的情况下,将简单的 while 循环迭代转换为 SMT-LIB 公式以证明正确性

考虑证明以下 while 循环的正确性,即我想表明,给定循环条件开始时,它最终将终止并导致最终断言为真。

int x = 0;
while(x>=0 && x<10){
   x = x + 1;
}
assert x==10;
Run Code Online (Sandbox Code Playgroud)

在不使用循环展开的情况下,用于检查正确性的 SMT-LIB 的正确翻译是什么?

verification while-loop smt z3 z3py

2
推荐指数
1
解决办法
337
查看次数