34
1 程程程程程程程 – 程程 程程程程程程程程程程 程程程 http://lcs.ios.ac.cn/~zwh/pv

程序的形式验证 – 内容

  • Upload
    gabe

  • View
    163

  • Download
    0

Embed Size (px)

DESCRIPTION

程序的形式验证 – 内容. 中国科学院软件研究所 张文辉 http://lcs.ios.ac.cn/~zwh/pv. 课程主要内容. 验证方法 : 推理证明 / 模型检测. 程序与系统模型. 程序逻辑. 预备知识 : 逻辑 / 函数 / 有向图. 课程内容. 程序与系统模型. 隐式迁移模型. 显式状态迁移模型. 标号迁移系统. 时间迁移系统等模型. 课程内容. 程序逻辑. 线性时序逻辑 PLTL. 一阶线性时序逻辑. 分枝时序逻辑 CTL. 时序逻辑 CTL* 等. 课程内容. 程序的推理证明. 卫式迁移模型的推理. - PowerPoint PPT Presentation

Citation preview

Page 1: 程序的形式验证  –  内容

1

程序的形式验证 – 内容

中国科学院软件研究所张文辉

http://lcs.ios.ac.cn/~zwh/pv

Page 2: 程序的形式验证  –  内容

课程主要内容

程序与系统模型程序与系统模型

预备知识 : 逻辑 / 函数 / 有向图预备知识 : 逻辑 / 函数 / 有向图

程序逻辑程序逻辑

验证方法 : 推理证明 / 模型检测验证方法 : 推理证明 / 模型检测

Page 3: 程序的形式验证  –  内容

课程内容

程序与系统模型程序与系统模型 隐式迁移模型隐式迁移模型

显式状态迁移模型显式状态迁移模型

标号迁移系统标号迁移系统

时间迁移系统等模型时间迁移系统等模型

Page 4: 程序的形式验证  –  内容

一阶线性时序逻辑一阶线性时序逻辑

课程内容

程序逻辑程序逻辑 线性时序逻辑 PLTL线性时序逻辑 PLTL

分枝时序逻辑 CTL分枝时序逻辑 CTL

时序逻辑 CTL* 等时序逻辑 CTL* 等

Page 5: 程序的形式验证  –  内容

课程内容

程序的推理证明程序的推理证明 卫式迁移模型的推理卫式迁移模型的推理

谓词迁移模型的推理谓词迁移模型的推理

流程图模型的推理流程图模型的推理

结构化程序模型推理结构化程序模型推理

Page 6: 程序的形式验证  –  内容

课程内容

程序的模型检测程序的模型检测

基于路径的模型检测基于路径的模型检测

基于状态的模型检测基于状态的模型检测

限界语义模型检测限界语义模型检测

Page 7: 程序的形式验证  –  内容

7

课程总结

给定一个程序和一些性质用严格的方法证明程序是否满足给定的性质

程序 性质

模型 逻辑公式验证方法

Page 8: 程序的形式验证  –  内容

8

主要内容

• 程序模型• 程序逻辑• 验证方法

模型 逻辑公式验证方法

• 验证工具• 验证实例

Page 9: 程序的形式验证  –  内容

9

一、程序模型• 隐式迁移系统描述

– 结构化循环程序、流程图程序– 卫式迁移系统、谓词迁移系统

• 显式状态迁移系统描述– Kripke 结构、标号 Kripke 结构– 公平 Kripke 结构

• 标号迁移系统– 标号迁移系统、自动机– 交错迁移系统、交错自动机

• 时间迁移系统– 时间迁移系统、时间自动机– 混成迁移系统、 Petri 网、通信系统

不同类型模型的特点

模型之间的关系

用模型描述系统

Page 10: 程序的形式验证  –  内容

10

结构化循环程序

• 谓词逻辑、解释、赋值

• 语句组合• 运行、语义• 前断言、后断言

• 推理验证方法

Page 11: 程序的形式验证  –  内容

11

流程图程序

• 谓词逻辑、解释、赋值

• 指令集合、 begin - end

• 运行、语义• 前断言、后断言

• 推理验证方法

Page 12: 程序的形式验证  –  内容

12

卫式迁移系统

• 谓词逻辑、解释、赋值

• 迁移集合、初始条件• 状态、状态序列、可执行迁移、运行

• 推理验证方法

Page 13: 程序的形式验证  –  内容

13

谓词迁移系统

• 谓词逻辑、解释、赋值

• 迁移的谓词、初始条件• 状态、状态序列、可执行迁移、运行

• 推理验证方法

Page 14: 程序的形式验证  –  内容

14

Kripke 结构

• <S,R,I>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合

状态、状态序列、迁移、路径、运行

Page 15: 程序的形式验证  –  内容

15

标号 Kripke 结构

• <S,R,I,L>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合– L: S2AP: 标号函数

语言

Page 16: 程序的形式验证  –  内容

16

公平标号 Kripke 结构

• <S,R,I,L,F>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合– L: S2AP: 标号函数– F 2S: 公平要求的集合

公平运行、语言

Page 17: 程序的形式验证  –  内容

17

标号迁移系统

• <,S,,I> : 标号集合– S: 状态集合 S x x S: 迁移关系– I S: 初始状态集合

运行、字符串、语言

Page 18: 程序的形式验证  –  内容

18

Buchi 自动机

• <,S,,I,F> : 标号集合– S: 状态集合 S x x S: 迁移关系– I S: 初始状态集合– F 2S: 接受条件

不同类型的自动机

可接受运行、可接受字符串、语言

Page 19: 程序的形式验证  –  内容

19

交错迁移系统

• <,S,,I> : 标号集合– S: 状态集合 S x x 2S: 迁移关系– I S: 初始状态集合

树结构的运行

Page 20: 程序的形式验证  –  内容

20

交错自动机

• <,S,,I,F> : 标号集合– S: 状态集合 S x x 2S: 迁移关系– I S: 初始状态集合– F 2S: 接受条件

可接受运行、可接受字符串、语言

Page 21: 程序的形式验证  –  内容

21

时间迁移系统

• <,S,C,,I> : 标号集合– S: 状态集合– C: 时钟集合 S x x 2C xΦ(C)xS: 迁移关系– I S: 初始状态集合

时间字符串、时间字符串上的运行

Page 22: 程序的形式验证  –  内容

22

时间自动机

• <,S,X,,I,F> : 标号集合– S: 状态集合– X: 时钟集合 S x x 2X xΦ(X)xS: 迁移关系– I S: 初始状态集合– F 2S: 接受条件

可接受运行、可接受时间字符串、语言

Page 23: 程序的形式验证  –  内容

23

混成迁移系统

• <,S,X,,I,flow> : 标号集合– S: 状态集合– X: 实数变量集合 S x x (X) x Φ(X) x S: 迁移关系– I S: 初始状态集合– flow: S Φ(X,X)

时间字符串、时间字符串上的运行

Page 24: 程序的形式验证  –  内容

24

Petri 网

• <P,T,F,M0>

– P: 位置集合– T: 迁移集合– F (P T) (T P) : 边的集合– M0 : PN 初始状态

状态、迁移、运行、可达状态

Page 25: 程序的形式验证  –  内容

25

通信单元、通信系统

• <Q,C,Δ,q0>

– Q: 状态集合– C: 通道集合– Δ Q (α(C){}) Q: 迁移关系– q0 Q: 初始状态

事件、可执行事件、状态、迁移、运行

Page 26: 程序的形式验证  –  内容

26

二、程序逻辑

• 线性时序逻辑– 命题线性时序逻辑– 一阶线性时序逻辑– 线性 μ- 演算

• 分枝时序逻辑– 计算树逻辑 (CTL)– CTL*– 模态 μ- 演算

公式之间的关系

公式和模型的对应关系

公式和状态集的对应关系

用公式描述系统或性质

不同逻辑的特点

逻辑之间的关系

Page 27: 程序的形式验证  –  内容

27

线性时序逻辑

• 命题逻辑、谓词逻辑

• 语言• 语义

• 逻辑公式之间的关系• 逻辑公式用于描述性质和系统模型• 逻辑公式对应于系统模型 ( 自动机 )

Page 28: 程序的形式验证  –  内容

28

分枝时序逻辑

• 命题逻辑

• 语言• 语义

• 逻辑公式之间的关系• 逻辑公式用于描述性质• 逻辑公式对应于 Kripke 结构的状态集

Page 29: 程序的形式验证  –  内容

29

三、验证方法

• 推理验证– 卫式迁移系统– 流程图程序– 结构化程序

• 模型检测– 基于状态– 基于路径– 限界模型检测

模型检测方法:特点应用

相关的结构和算法

程序推理方法:特点应用

Page 30: 程序的形式验证  –  内容

30

推理验证

• 卫式迁移系统– 程序推理规则– 线性时序逻辑推理规则

• 流程图程序– 根据操作语义证明– 根据路径分段证明、最弱宽松前断言计算方法

• 结构化程序– 根据指称语义证明– 根据公理语义、 Hoare 逻辑证明

安全性质响应性质部分正确完全正确

Page 31: 程序的形式验证  –  内容

31

模型检测• 基于状态

– 显式状态迁移系统 – 符号状态迁移系统 ( 最简二元决策图 )

• 基于路径– 用自动机表示系统– 用自动机表示性质 ( 由公式构造自动机的方法 )

• 限界模型检测– 限界模型– 限界语义及应用

Page 32: 程序的形式验证  –  内容

32

四、验证工具与实例• 验证工具

– 程序推理辅助工具 XYZ/VERI-II – 模型检测工具 SMV– 模型检测工具 SPIN – 模型检测工具 VERDS

• 验证实例– 结构化程序– 协议– 电路

对课程内容的总体认识

Page 33: 程序的形式验证  –  内容

33

关于考试

程序的形式验证

课堂开卷

12 月 8日 13:30-16:00

N301

• 各种算法和方法的使用• 各种模型语言和逻辑语言的使用

Page 34: 程序的形式验证  –  内容

34

问题 ?