SAT and SMT

约束求解器

程序输入生成问题可被转换为约束可满足性问题的求解过程。

约束可满足性问题可以定义为一个三元组 < V , D , C > <V,D,C> <V,D,C>,其中:

  • V V V表示变量;
  • D D D表示变量可取值的域;
  • C C C表示变量之间的关系,即约束条件。

约束可满足性问题就是:判断在域 D D D中,是否存在一组变量 V V V能够满足约束条件 C C C

SAT

布尔可满足问题(SAT)是约束可满足性问题的一种较为简单的情况。

SAT中:

  • D D D为布尔值 0 , 1 {0,1} 0,1
  • 约束 C C C为命题逻辑公式,即布尔表达式。
  • 布尔表达式由变量、与操作、或操作、非操作组成,如:
    ( x 1 ∧ y 1 ) ∨ ( x 2 ∧ y 2 ) ∨ ( x 3 ∧ y 3 ) ∨ ( x 4 ∧ y 4 ) ∨ ( x 5 ∧ y 5 ) \left(x_{1} \wedge y_{1}\right) \vee\left(x_{2} \wedge y_{2}\right) \vee\left(x_{3} \wedge y_{3}\right) \vee\left(x_{4} \wedge y_{4}\right) \vee\left(x_{5} \wedge y_{5}\right) (x1y1)(x2y2)(x3y3)(x4y4)(x5y5)

当存在一组变量使得布尔表达式的值为True时,称为布尔表达式被满足。

SAT就是查找是否存在一组变量使得某个布尔表达式可满足。

SMT

在计算机程序中,路径约束条件所包含的变量不仅仅是变量,表达式也并不是布尔表达式。因此常常使用SAT的扩展问题一一可满足性模理论(SMT)

SMT在SAT的基础上发展而来,支持整形、实数、数据结构等多种“理论”。特别年研究人员组织的推动了求解器标准化,使得程序分析领域广泛运用求解器来进行约束求解。

经过发展,目前活跃并成熟的SMT求解器包括CVC4、STP、Z3、Yices等。这些约束求解器被程序分析工具广泛使用。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值