约束求解器

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

约束可满足性问题可以定义为一个三元组 < 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) (x1​∧y1​)∨(x2​∧y2​)∨(x3​∧y3​)∨(x4​∧y4​)∨(x5​∧y5​)

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

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

SMT

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

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

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

SAT and SMT相关推荐

  1. 智源论坛Live丨青年科学家线上报告会日程发布

    直播时间:2020年2月11-12日为期两天 报名方式见文末 活动详情 2019年11月智源研究院启动了"2019年度智源青年科学家征集评选工作",面向人工智能领域优势高校院所定向 ...

  2. 一系列用于Fuzzing学习的资源汇总

    本文主要是向大家推荐一系列,用于fuzzing和Exploit开发初始阶段学习的资源合集,其中将包括相关的书籍,课程 – 免费或收费的,视频,工具,教程,以及一些供大家练习使用的靶机应用. fuzzi ...

  3. 【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门

    [Applied Algebra]可满足性模理论(Satisfiability Modulo Theories)入门 摘要:SMT问题是在特定理论下判定一阶逻辑公式可满足性问题.它在很多领域,尤其是形 ...

  4. 摩尔定律即将走向终结?对未来更广阔世界影响的55个预测!

    译者:罗泽铭,伦敦大学城市学院 原文:https://bzogrammer.substack.com/p/the-next-century-of-computing 原作:Charles Rosenb ...

  5. 【软件分析第12讲-学习笔记】可满足性模理论 Satisfiability Modulo Theories

    文章目录 前言 正文 从SAT到SMT SMT历史 z3求解器 SMT求解 命题逻辑.一阶逻辑和二阶逻辑 小结 参考文献 前言 创作开始时间:2022年11月16日16:18:59 如题,学习一下可满 ...

  6. .map文件用什么打开_Fusion 360 干货集:盘点那些可以用Fusion 360打开的设计文件...

    前两期的内容我们讲了项目团队的创建与项目成员的管理,前期准备工作已经做好,那么我们就需要了解一下实际操作了!今天就来盘点一下,哪些设计文件可以用Fusion 360打开?记不住的小伙伴要收藏哦,方便日 ...

  7. Z3 Solver中Tactic的使用

    Z3求解器是微软开发的一款定理证明器.可以用来证明定理,也可以用于求解.其基本用法并不复杂,通过现有的教程,结合源码中提供的示例就可以理解.除了基础的用法以外,Z3还提供了一系列Tactic辅助计算和 ...

  8. 2021年 软件工程 顶级会议 截稿时间

    更多会议截稿信息,期刊Special Issue,以及盛会的讨论qun,请移步gzh(CS Conferences)查看. ​以上为未来三个月已公布截稿日期的CCF推荐,软件工程领域会议,按照时间排序 ...

  9. 探索工业软件之魂,板凳要坐十年冷 |中科院软件所蔡少伟专访

    [栏目:产业洞察]谈到工业软件之魂,不得不提的就是求解器. 求解器类似于我们生活中使用的计算器,给定输入,求解器则计算出结果.只不过在工业中,输入是非常复杂的,各式各样的,有不同类型的数据,有不同类型 ...

最新文章

  1. TANDEM 基于深度多视图立体视觉的实时跟踪和稠密建图
  2. 游戏行业中的职位:你可以做什么
  3. lua table.sort的bug
  4. DNS主从类型的架设
  5. 因贡献Linux社区被Linus关注,受公司10万期权奖励!酷派重回大众视野...
  6. UidGenerator
  7. 1.22 实例:商品信息查询
  8. 微量元素重塑新生态-农业大健康·李喜贵:谋定功能性农业
  9. RHEL4- SAMBA服务(四)在x-window下图形界面简单搭建samba服务器
  10. HTML 学习笔记 day one
  11. 今天的但我发现了幸福的超级玛丽,白萝卜的种子
  12. __stdcall函数调用约定
  13. python读取大文件内存不够_大型CSV文件(numpy)上的Python内存不足
  14. android开机动画修改,Android系统 开机动画修改 + 自动替换脚本
  15. Docker安装elasticsearch-head监控ES步骤 - gmijie的专栏 - CSDN博客
  16. ant design vue table 高度自适应_Vue.JS 实现拼拼乐小游戏项目
  17. STM32cubemx教程及STM32入门(三)定时器
  18. Segmentation Measures
  19. delphi的时间Ttime,Tdatetime的信息
  20. VUE系列——弹窗代码编写与调用弹窗过程详解

热门文章

  1. 整天玩手机的人一定要看,不看一定后悔!
  2. 9.29黄金实时行情趋势分析、黄金原油价格涨跌分析及操作建议
  3. 2020油烟净化器十大品牌
  4. 中国女式内衣市场销售态势分析与投资前景研究报告2022-2028年
  5. 在前端培训机构怎么系统学习前端知识
  6. 生活实用幼教软件 iPad宝宝找数字HD
  7. 三维仿真在智慧城市中的运用,机械臂智能垃圾分类
  8. php多维数组书写方式,php多维数组用法示例
  9. 我是一只小僵尸java,我的世界:出生意味着“死亡”,假如你是一只僵尸,该如何活下去...
  10. 3C手机中框铝板尺寸、平面度在线检测案例