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

摘要:SMT问题是在特定理论下判定一阶逻辑公式可满足性问题.它在很多领域,尤其是形式验证、程序分析、软件测试等领域,都有重要的应用.本文介绍了SMT问题的基本概念、相关定义以及目前的主流理论.


从SAT到SMT

SAT(satisfiability)问题指的是命题逻辑公式的可满足性问题.随着研究的深人,人们发现SAT在表达能力上有很大的局限性,许多应用用SAT进行编码并不是很明智的选择,它们需要比SAT更强的表达方式.在这种形势下,将SAT问题扩展为SMT,经过扩展,SMT能比SAT更好地表达一些人工智能和形式化方法领域内的问题,比如在资源规划、时序推理、编译器优化等很多方面用到了SMT.

SMT的全称是Satisfiability Modulo Theories,可被翻译为"可满足性模理论",“多理论下的可满足性问题"或者"特定(背景)理论下的可满足性问题”,其判定算法被称为SMT求解器.简单地说,一个SMT公式是结合了理论背景的逻辑公式,其中的命题变量可以代表理论公式.对于SMT的研究起源于20世纪70年代末80年代初,当时的一些学者为形式化方法设计了一些判定算法,这些算法可以看作最早的SMT求解器;到了20世纪90年代,人们开始研究能处理大规模工业界问题的SMT求解技术.最近几年在工业界和学术界,这类技术均得到了迅猛的发展.而SMT求解器也被集成到一些大型工具中,比如HOL/Isabelle、ESC/Java2、ACL2、UCLID、BLAST、ureka,CUTE和PEX等.

SAT问题回答某个命题逻辑公式的可满足性,如:

A∧B∨¬CA \wedge B \vee \neg CA∧B∨¬C

但实际中的公式却往往是这样的(带有谓词,以表达更复杂的问题逻辑):

a+b<c∧f(b)>c∨c>0a+b<c \wedge f(b)>c \vee c>0a+b<c∧f(b)>c∨c>0

SMT求解的过程就是探索如何判断这样公式的可满足性;从逻辑学角度来看,a+b<ca+b<ca+b<c或者

【Applied Algebra】可满足性模理论(Satisfiability Modulo Theories)入门相关推荐

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

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

  2. 【Applied Algebra】求解布尔方程(Boolean Equations)的4个高效baseline算法

    求解布尔方程(Boolean Equations)的4个高效baseline算法 求解布尔方程(Boolean Equations)是理论计算机中的基本问题之一;事实上,求解Fq\mathbb{F}_ ...

  3. 【Applied Algebra】物理学中的群论漫谈1:群论基础

    物理学中的群论漫谈1:群论基础与希尔伯特空间 我准备开一个新系列谈谈群论在物理学中的应用,这样有两个好处:一是可以明白群论以及相关数学概念的具体应用,以此来举一反三懂得这些理论工具如何使用;而是可以通 ...

  4. 【Applied Algebra】扩域(Galois域)上的计算及其实现

    扩域上(Galois域)的计算及其实现 有限域 FFF 的特征为素数 ppp; 它可以视作素域 Zp\mathbb{Z}_pZp​ 上的 n(n<∞)n(n<\infty)n(n<∞ ...

  5. 生成对抗网络(GAN)的理论与应用完整入门介绍

    本文包含以下内容: 1.为什么生成模型值得研究 2.生成模型的分类 3.GAN相对于其他生成模型相比有什么优势 4.GAN基本模型 5.改进的GANs 6.GAN有哪些应用 7.GAN的前沿研究 一. ...

  6. 【 安信可海思Hi-12F模组】AT指令入门教程 接入鸿蒙智联

    文章目录 一.前言 二.创建产品 三.产品信息配置 3.1 AT+SYSVER 设置产品系统信息 3.2 AT+SYSPRAM 配置产品详细信息 3.3 AT+SYSTOKEN 设置产品 token ...

  7. 数模【Mathematica(安装、入门方法、基本计算、基本图形、创建互动模型、利用数据、幻灯片演示、完整实例)】

    Mathematica 官方中文入门教程 视频中的".nb"文件[链接:https://pan.baidu.com/s/1mpzhfG5igUFGdB1NrGG3SQ   提取码: ...

  8. python编程理论篇_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  9. 智能合约重构社会契约 (5)比特犬模型实现智能合约

    1. 设计思想 针对法律.司法执法应用场景,将智能合约的许多问题简化, 在智能合约的自然语言处理.形式化方法.软件测试方面,突出智能合约的核心功能,降低使用智能合约的门槛,使其可靠且高效. 2.模型驱 ...

最新文章

  1. css3选择器的比较(二) -- 包含字符串
  2. SQL Server 问题之 排序规则(collation)冲突
  3. 吃豆人(luogu 7472/NOI Online 2021 普及组 T2)
  4. leetcode 705. 设计哈希集合
  5. python set 随机_python – Set.pop()不是随机的吗?
  6. bat转exe工具 Bat To Exe Converter v2.4.7 绿色版
  7. InputFilter实现EditText文本输入过滤器
  8. Vant(有赞)UI框架爬坑记——图片轮播+预览
  9. 联想Lenovo拯救者 Legion R9000P 2021H 触控板失灵
  10. CCNet: Criss-Cross Attention for Semantic Segmentation
  11. 微信分享代码,朋友圈分享代码
  12. python —— 使用sympy模块求解数学方程
  13. 正则表达式常用语法解析
  14. 2022北京冬奥会开幕式里的黑科技,闪耀闪耀全世界
  15. html中怎么制作选择头像,网页中的个人头像选择框(转)
  16. expdp和impdp需要注意的地方
  17. 热乎的面经——踏石留印
  18. 愤怒的小鸟 c语言,C语言_愤怒的小鸟
  19. 三星wep200蓝牙耳机中文说明书
  20. 【网络安全】考试试卷一

热门文章

  1. php滑动拼图验证,如何在PHP环境下实现滑动拼图验证
  2. CO03生产订单“状态”值对应表和值描述对应表(TJ02T) 和通过BAPI(STATUS_TEXT_EDIT)获取
  3. 关于字段超长导致的插入错误的提示信息(value too long for type character varying)
  4. CSS实现表格表头(thead)固定,内容(tbody)滚动
  5. 【魔域口袋版】一键端+一键配置器+架设教程+GM工具
  6. Jquery颜色选择插件使用
  7. 设计模式之--策略模式
  8. 基于内容的图像检索引擎(以图搜图)
  9. LL(1)文法的判断
  10. NTU-RGBD骨架数据分析