返回首页

联手形式化方法专委会“可满足性模理论”术语发布 | CCF术语快线

阅读量:40 2021-11-18 收藏本文

本期新增术语新词:可满足性模理论(Satisfiability modulo theories)。


开篇导语:


本期新增术语新词:可满足性模理论(Satisfiability modulo theories)。可满足性模理论指函数和关系符号在背景理论中进行解释的谓词逻辑公式的可满足性判定问题。


可满足性模理论(Satisfiability modulo theories)

作者:吴志林、马菲菲、蔡少伟(中国科学院软件研究所)


InfoBox:

中文名:可满足性模理论

外文名:Satisfiability modulo theories

简写:SMT

学科:计算机软件与理论


基本简介:

可满足性模理论的基本思想是针对多种数据类型和相应的谓词逻辑理论,提出一个一般的框架,使得可以求解特定背景理论下的谓词逻辑公式的可满足性判定问题,进一步,可以求解涵盖多种理论的混合逻辑公式的可满足性判定问题。可满足性模理论与交互式定理证明相比,能够处理的逻辑公式要少一些,一般考虑无量词或者量词嵌套较少的谓词逻辑公式,但其优势在于能够实现逻辑推理的完全自动化。


可满足性模理论考虑的谓词逻辑理论主要包括含有等于符号的未解释函数(EUF)、位向量(BV)、数组(Array)、整数线性算术(LIA)、实数线性算术(LRA)、整数非线性算术(NIA)、字符串(String)等。求解SMT公式可满足性问题的工具被称为SMT求解器。目前,比较有代表性的SMT求解器有微软开发的Z3求解器、美国斯坦福大学和爱荷华大学开发的CVC4/CVC5求解器、美国斯坦福国际研究院开发的Yices求解器等。对SMT求解的研究不但是自动推理、约束求解领域主流国际会议IJCAR/CADE、CP和SAT的主题,同时也是形式验证和编程语言领域的重要国际会议CAV、POPL、FM、TACAS上非常活跃的议题。SMT同时也受到产业界的高度关注,微软、英特尔、亚马逊、Cadence等公司的研究院或实验室都在开展与SMT相关的研究项目。


发展历程:

实现逻辑推理自动化是人类社会的终极梦想之一,贯穿人类文明的发展历程。20世纪50-60年代,人工智能的符号学派对于逻辑推理自动化进行了探讨,开发了一些逻辑推理系统[1,2,3,4],但这些系统的推理能力普遍较弱。2000年左右,命题逻辑的可满足性问题(SAT)求解取得突破,普林斯顿大学的Sharad Malik团队开发了SAT求解器Chaff[5],首次实现了对大规模命题逻辑公式的求解,并且开始应用于工业界解决实际问题。几乎同时,各种特殊逻辑理论的判定算法的研究开始复兴,出现了一批早期的求解器,比如斯坦福大学的SVC[6]和SteP[7]、SRI的ICS[8]等。研究人员随后考虑了SAT和特殊理论判定算法的融合,由此提出了可满足性模理论问题(SMT)[9]。SMT发展的里程碑包括:2003年开始组织每年一度的SMT研讨会(SMT Workshop)[10]、2004年提出了 SMT-LIB作为SMT问题求解的输入格式标准[11]、2005年创建了SMT竞赛(SMT-COMP)[12]。迄今为止,SMT竞赛收集了超过100,000个测试用例。2010年之后出现了一批比较成熟的SMT求解器,比如美国微软的Z3[13]、美国斯坦福大学和爱荷华大学的CVC4/ CVC5[14,15]、美国斯坦福国际研究院的Yices[16]等。


应用领域:

SMT求解器已经成为软件工程、编程语言、以及信息安全领域的基础引擎,其应用场景多种多样,下面对这些应用场景进行具体阐述。


软件分析与验证:

软件演绎验证归结为两个逻辑公式的蕴涵问题,然后可以编码为SMT的可满足性问题进行求解。微软基于Z3求解器开发了程序演绎验证工具Dafny[17]与Boogie[18]。


软件的符号执行将路径约束编码为SMT公式,从而将路径可行性问题编码为SMT问题,如果SMT公式有解,则可以生成测试用例。斯坦福大学基于SMT求解器开发了符号执行工具Klee[19],微软基于Z3求解器开发了测试用例生成工具Pex[20]。


语法制导的程序合成问题基于程序模版生成程序,其基本思想是将程序合成问题编码为SMT公式,利用SMT求解器来搜索符合要求的程序[21]。


软件模糊测试是近十年以来的一种非常流行的发现软件系统漏洞的技术,基于动态执行的黑盒模糊测试存在覆盖率较低的问题,因此研究人员已经提出了白盒模糊测试,即将符号执行和动态执行相结合来寻找更多的漏洞,而SMT求解器是符号执行的核心,因此白盒模糊测试技术广泛使用SMT求解器。微软基于Z3求解器开发了模糊测试工具SAGE[22],发现了Windows应用的很多漏洞。


定理证明:SMT求解器已经集成到了很多交互式定理证明器比如Coq和Isabelle中用于提升其自动化程度[23,24]。


云计算安全性:亚马逊Web服务建立了自动推理组, 基于SMT求解器开发了Zelkova工具和sideTrail工具,其中前者用于验证AMS身份和密钥管理策略以及简单存储服务配置策略的安全性,后者用于验证密码算法实现关于侧信道攻击的安全性[25]。


参考文献:

[1] Allen Newell, Herbert A. Simon: The logic theory machine-A complex information processing system. IRE Trans. Inf. Theory 2(3): 61-79 (1956)
[2] Allen Newell, J. C. Shaw, Herbert A. Simon: Empirical explorations of the logic theory machine: a case study in heuristic. IRE-AIEE-ACM Computer Conference (Western) 1957: 218-230.
[3] Allen Newell, J. C. Shaw: Programming the logic theory machine. IRE-AIEE-ACM Computer Conference (Western) 1957: 230-240.
[4] John Alan Robinson: A Machine-Oriented Logic Based on the Resolution Principle. J. ACM 12(1): 23-41 (1965)
[5] Matthew W. Moskewicz, Conor F. Madigan, Ying Zhao, Lintao Zhang, Sharad Malik: Chaff: Engineering an Efficient SAT Solver. DAC 2001: 530-535.
[6] Aaron Stump, Clark W. Barrett, David L. Dill, Jeremy R. Levitt: A Decision Procedure for an Extensional Theory of Arrays. LICS 2001: 29-37.
[7] Zohar Manna, Nikolaj Bjørner, Anca Browne, Edward Y. Chang, Michael Colón, Luca de Alfaro, Harish Devarajan, Arjun Kapur, Jaejin Lee, Henny Sipma, Tomás E. Uribe: STeP: The Stanford Temporal Prover. TAPSOFT 1995: 793-794.
[8] Jean-Christophe Filliâtre, Sam Owre, Harald Rueß, Natarajan Shankar: ICS: Integrated Canonizer and Solver. CAV 2001: 246-249.
[9] Cesare Tinelli: A DPLL-Based Calculus for Ground Satisfiability Modulo Theories. JELIA 2002: 308-319.
[10] http://smt-workshop.cs.uiowa.edu/
[11] http://smtlib.cs.uiowa.edu/
[12] https://smt-comp.github.io/
[13] https://github.com/Z3Prover/z3
[14] https://cvc4.github.io/
[15] https://github.com/cvc5
[16] https://yices.csl.sri.com/
[17] https://github.com/dafny-lang/dafny
[18] https://github.com/boogie-org/boogie
[19] https://klee.github.io/
[20] http://duderino.github.io/injection/PexAndMoles.html
[21] https://sygus.org/
[22] Patrice Godefroid, Michael Y. Levin, David A. Molnar: Automated Whitebox Fuzz Testing. NDSS 2008.
[23] https://smtcoq.github.io/
[24] Jasmin Christian Blanchette, Sascha Böhme, Lawrence C. Paulson: Extending Sledgehammer with SMT Solvers. J. Autom. Reason. 51(1): 109-128 (2013).
[25] https://aws.amazon.com/cn/blogs/security/tag/automated-reasoning/

术语工委及术语平台介绍:

计算机术语审定委员会(Committee on Terminology)主要职能为收集、翻译、释义、审定和推荐计算机新词,并在CCF平台上宣传推广。这对厘清学科体系,开展科学研究,并将科学和知识在全社会广泛传播,都具有十分重要的意义。


术语众包平台CCFpedia的建设和持续优化,可以有效推进中国计算机术语的收集、审定、规范和传播工作,同时又能起到各领域规范化标准定制的推广作用。


新版的CCFpedia计算机术语平台(http://term.ccf.org.cn)将术语的编辑运营与浏览使用进行了整合,摒弃老版中跨平台操作的繁琐步骤,在界面可观性上进行了升级,让用户能够简单方便地查阅术语信息。同时,新版平台中引入知识图谱的方式对所有术语数据进行组织,通过图谱多层关联的形式升级了术语浏览的应用形态。

微信图片_20230410125847



计算机术语审定工作委员会

主任:

刘挺(哈尔滨工业大学)

副主任:

王昊奋(同济大学)

李国良(清华大学)

主任助理:

李一斌(上海海乂知信息科技有限公司)

执行委员:

丁军(上海海乂知信息科技有限公司)

林俊宇(中国科学院信息工程研究所)

兰艳艳(清华大学)

张伟男(哈尔滨工业大学)

640 (1)