0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

形式化方法基本原理初探

上海控安 来源:上海控安 作者:上海控安 2023-01-30 16:42 次阅读

作者 |冯劲草上海控安可信软件创新研究院研究员

版块 |鉴源论坛 · 观模

01形式化方法基本概念

形式化方法是基于严格的数学基础,通过采用数学逻辑证明来对计算机软硬件系统进行建模、规约、分析、推理和验证,是用于保证计算机软硬件系统正确性以及安全性的一种重要方法。

形式化方法使用数学及逻辑证明的手段对计算机系统进行建模、规约、分析、推理,其主要涵盖以下几个研究方向:定理证明、形式模型、形式语义与形式建模、形式规约、形式验证技术。下面以高可信工业领域实际应用中最广泛的形式化规格说明、定理证明和模型检测为例,介绍其基本原理。

02形式化规格说明

通过对编程语言的语义进行严格的定义,加之使用形式模型对计算机系统的行为进行建模,最终形成形式化规格说明书来对计算机系统的行为进行推理验证,形式规格说明是对计算机系统进行验证的基础,形式规格说明的基础是形式语义学和形式建模。

形式语义学(formal semantic)是研究程序设计语言的语义的学科,以数学为工具,利用符号和公式,精确地定义和严格地解释计算机程序设计语言的语义,从而消除设计者、开发者和使用者之间的理解的差异性。形式语义帮助理解语言,指导语言的设计,帮助编写编译器和语言系统,支持程序验证和软件可靠性,有助于软件规范化。形式语义学主要分为四大流派:操作语义,代数语义,指称语义和公理语义。操作语义着重模拟数据处理过程中程序的操作;代数语义基于代数,用代数结构刻画程序语法实体,用代数公理刻画实体含义以及语法实体间的关系;指称语义主要刻画数据处理的结果,而不是处理的细节;公理语义用公理化的方式描述程序对数据的处理,主要用于程序的推理和论证。早期的程序语言的语义只是在论文中给出,不能用计算机测试语义的正确性和一致性,也不能用于程序的验证和分析。中期的语义一般用定理证明器的元语言实现,此类语义可用于程序语言语义和程序性质的手动或半自动验证。K框架是最近流行的定义语言的形式语义的途径,基于重写逻辑,通过定义语言的操作语义,自动生成对应程序的形式分析和验证工具。

形式建模是对计算机软硬件系统的行为和性质用某种形式模型精确的刻画。形式模型一般采用通用形式建模语言(如Petri Net、Event-B、Pi-演算、CSP、SysML、Lusture等)或者专用形式模型(如有限自动机、下推自动机、概率自动机等)来进行。函数式程序可以用树自动机、高阶下推自动机来建模,自适应系统与多智能体一般使用Petri网、UML、Z以及马尔可夫模型等来建模,对于深度神经网络的形式建模最近也成为研究热点。

2.1 形式化规格说明举例

假设有一个“农夫过河”系统,其需求文档如下:

(1)一个人带着狼、山羊和白菜在一条河的左岸,有一条船,大小正好能装下这个人和其它三者之一,人和他的随行物都要带过岸,但他每次只能带一样东西摆渡过河。

(2)如人将狼和羊留在同一岸,无人照顾,那么狼会把羊吃掉。同样,如羊和白菜在同一岸,无人照顾,那么羊会吃了白菜。

该系统在设计完成后,应当满足性质:至少存在一条过河路径,使得人和他的随行物全部渡过了河。

为了验证上述系统是否满足相对应的性质,使用NuSMV形式化验证工具进行性质的验证工作。NuSMV是一款经典的基于BDDs(Binary Decision Diagrams)的模型验证器。在本例中,我们将使用NuSMV提供的形式化描述语言对一个系统的需求进行形式化规格说明的转化。

用对上述自然语言描述的需求文档进行形式化建模,使用NuSMV的形式化语言描述如图1所示。

poYBAGPXgQiAOj2ZAAQGLPsH6AA438.png

图1 农夫过河系统的形式化规格说明

对待验证的性质使用性质描述语言进行描述,如图2所示。

poYBAGPXgTCAGGtNAAESEa54DSE922.png

图2 待验证性质的形式化描述

使用NuSMV进行模型检测的基本原理是将形式化语言描述的系统和待验证的性质抽取形成一个状态迁移系统,在该状态迁移系统中若存在一个可接收状态即为该系统满足特定性质。后续的形式化验证工作即是建立在该形式化规格说明上的。

03形式化验证技术


3.1 定理证明技术

在形式语义与形式建模以及形式规约的基础上,将计算机系统的分析与验证问题转化为逻辑推理问题或者形式模型的判断问题,用定理证明工具/求解器或者某个形式模型的原型工具来进行验证。形式化验证主要的技术有定理证明和模型检测。

定理证明的基本思想是,将程序满足其形式规约的证明问题转化为一组数学命题的证明。若这一组数学命题,称作证明义务(proof obligation),能够蕴含“程序满足其规约”这一命题,那么我们可以说该证明系统是正确(sound)的。

3.1.1简单推理举例

在数学运算中,有许多运算公理及其推导出的运算属性。在给出如图3所示的运算公理时,证明运算属性P1:x=x+y*0 成立便是一个简单的推理证明过程。推理证明过程如图4所示。

pYYBAGPXgYSAJvG5AAHpn3lTZgc771.png

图3数学运算公理

pYYBAGPXgaWAc13xAABFjb1TgVg035.png

图4 数学运算属性证明过程

3.1.2定理证明举例

同上述章节中推导出来的数学运算的性质等同,在程序中,使用Hoare logic来证明程序的部分正确性。它以一阶逻辑为基础,利用运算规则、公理与推理规则进行程序证明。即:如果断言P在程序S执行前为真时可推出断言R在S终止时为真,则程序S对于P和R来说是正确的,使用三元组表示为:{P} S {R}。

尝试证明:{x <> y∧x > y} x := y – 1 {x = y ∨ x < y}的正确性。在该语句中,P={x<>y ∧x > y} ;S=x:=y-1;Q={x = y ∨ x < y}。为了证明该语句,需要使用两条公理,一条是赋值公理(Ass-D0),一条是推论规则。赋值公理指,{P[f/x]} x := f {P}成立,P[f/x]是用f替代P中所有x得到的谓词表达式。推论规则指:如果{P} S {R}成立,则对于所有Q=>P,{Q} S {R}均成立。根据上述两条公理,当我们想证一条{P}S{R}成立时,我们可以根据赋值公理找到一个一定使后置条件满足的情况{R[f/x]}x:=f{R},当P能够=>P[f/x]时,{P}S{R}得证。如图5所示,使用赋值公理,将后置条件中的x使用赋值语句中的x=y-1替代,得到{y y∧x >y}=>{y y∧x > y} x := y – 1 {x = y ∨ x < y}成立。由于y < y + 1 <=> true,所以{ x <> y∧x >y}=>{y y∧x > y} x := y – 1 {x = y ∨ x < y}成立。

poYBAGPXgdmAci77AACjTIucmss261.png

图5 赋值公理的使用过程

3.2模型检测技术

模型检验的基本思想是通过遍历系统的状态空间以验证系统模型是否满足给定的关键性质,并在不满足性质时给出具体反例路径。因此,如何对模型状态空间进行快速遍历对于模型检验至关重要,而状态空间爆炸问题则自然成为模型检验技术面临的主要问题。与模型检验技术取得成功的硬件领域相对比,软件系统的状态空间复杂性更高。将相关状态空间符号化表达, 并在符号化后的空间上进行计算和遍历是软件模型检验的基本方法。然而,即使是符号化后的状态空间,其验证也并不是一个简单问题,因此对复杂的状态空间进行抽象简化是一个重要研究方向。

3.2.1 模型检测举例

将上述章节中的农夫过河系统转化成相应的状态迁移图如图6所示,其中MGCW-Empty表示初始状态,“-”左边的符号表示对应的符号在左岸。“-”右边的服务表述对应的符号在右岸。M表示人,G表示羊,C表示白菜,W表示狼,箭头表示表示每次在船上运输的物品的种类。其中因为有一些约束限制所以导致一些理论上会出现的状态并没有出现。

pYYBAGPXge-ASzIHAABf8tF1F68932.png

图6 农夫过河状态迁移图

该系统待验证的性质在该图中可表述为初始状态为“MGCW-Empty”的情况下, 是否存在一条路径,能够到达终止状态“Empty-MGCW”。即在图6中,是否存在一条路径,使得状态1能够到达状态8。若存在该路径,那么说明经过验证,该系统满足了该性质,若不存在该路径,那么说明经过验证,该系统不满足该性质。

关于形式化验证的定理证明、模型检测等方法在行业中的实际应用情况,我们将在后续的章节中陆续为大家介绍。

主要参考文献:

1. Jifeng He: A New Roadmap for Linking Theories of Programming. UTP 2016: 26-43.

2. CCF Formal Methods Technical Committee. Advances and trends on formal methods. In: The Progress Report of Computer Science and Technology in China from 2017 to 2018. Beijing: China Machine Press, 2018. 1-68(in Chinese with English abstract).

3. Roșu G, Șerbănută T F. An overview of the K semantic framework[J]. The Journal of Logic and Algebraic Programming, 2010, 79(6): 397-434.

4. Cimatti A , Clarke E , Giunchiglia F . NUSMV: a new symbolic model checker[J]. International Journal on Software Tools for Technology Transfer, 2000, 2(4):410-425.

5. Wang S, Zhan N, Zou L. An improved HHL prover: an interactive theorem prover for hybrid systems[C]//International Conference on Formal Engineering Methods. Springer, Cham, 2015: 382-399.

6. Cousot P, Cousot R. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints[C]//Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages. 1977: 238-252.

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    6627

    浏览量

    84324
  • 建模
    +关注

    关注

    1

    文章

    280

    浏览量

    60487
  • 形式化
    +关注

    关注

    0

    文章

    4

    浏览量

    691
收藏 人收藏

    评论

    相关推荐

    形式化方法的工程化

    形式化工程方法,是以软件形式化方法理论为基础,以系统化的工程方法引导工业界工程人员构建高质量的软件模型,用以引导后续的代码编写和相关测试分析
    的头像 发表于 03-24 11:01 1169次阅读
    <b class='flag-5'>形式化</b><b class='flag-5'>方法</b>的工程化

    形式化方法的工业应用:航空领域

    本文主要探讨了形式化方法在航空领域中的工业应用。航空领域作为安全攸关领域,其机载系统软件的开发有着高度复杂和严格的安全标准要求,以确保其安全可靠性。
    的头像 发表于 08-21 15:45 684次阅读
    <b class='flag-5'>形式化</b><b class='flag-5'>方法</b>的工业应用:航空领域

    CT的基本原理方法

    CT的基本原理方法人体内不同组织对射线的吸收率是不同的,这也是 CT 技术的基本原理。如下图所示:图(1)左侧代表一未知灰度的区域,每小块灰度值相同,分别以μ 标记,如图所示做两次投影(同一
    发表于 06-14 15:56

    电源噪声滤波器的基本原理与应用方法

     电源噪声滤波器的基本原理与应用方法 随着现代科学技术的飞速发展,电子、电力电子、电气设备应用越来越广泛,它们在运行中产生的高密度、宽频谱的电磁信号充满整个空间,形成复杂的电磁环境
    发表于 10-12 11:53

    电源噪声滤波器的基本原理与应用方法

    电源噪声滤波器的基本原理与应用方法
    发表于 08-09 15:06

    SPWM的基本原理

    基本原理SPWM的全称是(Sinusoidal PWM),正弦脉冲宽度调制是一种非常成熟,使用非常广泛的技术;之前在PWM的文章中介绍过,基本原理就是面积等效原理,即冲量相等而形状不同的窄脉冲加在
    发表于 09-06 08:13

    无线充电的基本原理是什么

    一 、无线充电基本原理无线充电的基本原理就是我们平时常用的开关电源原理,区别在于没有磁介质耦合,那么我们需要利用磁共振的方式提高耦合效率,具体方法是在发送端和接收端线圈串并联电容,是发送线圈处理谐振
    发表于 09-15 06:01

    FPGA基本原理及设计思想和验证方法看完你就懂了

    FPGA基本原理及设计思想和验证方法看完你就懂了
    发表于 09-18 07:08

    EXTI的使用方法基本原理

    介绍EXTI的使用方法基本原理并且包括实验通过按键中断控制led灯的亮灭
    发表于 12-06 07:57

    形式化方法和测试技术及其在安全中的应用

    本文回顾和讨论了形式化方法和测试技术,以及形式规格说明可以用于测试用例生成、测试顺序确定的途径;并提出了将形式化方法和测试技术应用于安全保密
    发表于 06-11 10:49 25次下载

    一种形式化的学习过程建模_钟伟平

    一种形式化的学习过程建模_钟伟平
    发表于 03-19 11:45 0次下载

    软件形式化开发的水波优化方法

    形式化方法有助于从根本上提高软件系统的质量与可靠性,但其开发成本往往过于高昂.一种折衷的办法是在软件系统中选取关键性部件进行形式化开发,但目前尚无非常有效的定量选择方法.将软件系统中的
    发表于 01-15 15:47 0次下载

    形式化方法背后的动因和关键技术及行业应用

    系列简介:形式化方法在计算机和软件工程学科中作为一个学科分支,正在越来越多地进入工业界诸多实践领域。以DO-333适航标准为代表的工业标准,亦对软件开发过程明确提出了采用形式化方法的要
    的头像 发表于 06-10 10:49 921次阅读
    <b class='flag-5'>形式化</b><b class='flag-5'>方法</b>背后的动因和关键技术及行业应用

    LLC基本原理及设计方法

    LLC基本原理及设计方法
    发表于 06-25 10:05 6次下载

    形式化方法的工业应用:轨交领域

    文将聚焦于轨交领域,从领域专用的需求撰写与分析工具Prema入手,介绍形式化方法在工业中的实际应用。
    的头像 发表于 08-08 15:20 303次阅读
    <b class='flag-5'>形式化</b><b class='flag-5'>方法</b>的工业应用:轨交领域