Upload
gabe
View
166
Download
0
Embed Size (px)
DESCRIPTION
程序的形式验证 – 内容. 中国科学院软件研究所 张文辉 http://lcs.ios.ac.cn/~zwh/pv. 课程主要内容. 验证方法 : 推理证明 / 模型检测. 程序与系统模型. 程序逻辑. 预备知识 : 逻辑 / 函数 / 有向图. 课程内容. 程序与系统模型. 隐式迁移模型. 显式状态迁移模型. 标号迁移系统. 时间迁移系统等模型. 课程内容. 程序逻辑. 线性时序逻辑 PLTL. 一阶线性时序逻辑. 分枝时序逻辑 CTL. 时序逻辑 CTL* 等. 课程内容. 程序的推理证明. 卫式迁移模型的推理. - PowerPoint PPT Presentation
Citation preview
1
程序的形式验证 – 内容
中国科学院软件研究所张文辉
http://lcs.ios.ac.cn/~zwh/pv
课程主要内容
程序与系统模型程序与系统模型
预备知识 : 逻辑 / 函数 / 有向图预备知识 : 逻辑 / 函数 / 有向图
程序逻辑程序逻辑
验证方法 : 推理证明 / 模型检测验证方法 : 推理证明 / 模型检测
课程内容
程序与系统模型程序与系统模型 隐式迁移模型隐式迁移模型
显式状态迁移模型显式状态迁移模型
标号迁移系统标号迁移系统
时间迁移系统等模型时间迁移系统等模型
一阶线性时序逻辑一阶线性时序逻辑
课程内容
程序逻辑程序逻辑 线性时序逻辑 PLTL线性时序逻辑 PLTL
分枝时序逻辑 CTL分枝时序逻辑 CTL
时序逻辑 CTL* 等时序逻辑 CTL* 等
课程内容
程序的推理证明程序的推理证明 卫式迁移模型的推理卫式迁移模型的推理
谓词迁移模型的推理谓词迁移模型的推理
流程图模型的推理流程图模型的推理
结构化程序模型推理结构化程序模型推理
课程内容
程序的模型检测程序的模型检测
基于路径的模型检测基于路径的模型检测
基于状态的模型检测基于状态的模型检测
限界语义模型检测限界语义模型检测
7
课程总结
给定一个程序和一些性质用严格的方法证明程序是否满足给定的性质
程序 性质
模型 逻辑公式验证方法
8
主要内容
• 程序模型• 程序逻辑• 验证方法
模型 逻辑公式验证方法
• 验证工具• 验证实例
9
一、程序模型• 隐式迁移系统描述
– 结构化循环程序、流程图程序– 卫式迁移系统、谓词迁移系统
• 显式状态迁移系统描述– Kripke 结构、标号 Kripke 结构– 公平 Kripke 结构
• 标号迁移系统– 标号迁移系统、自动机– 交错迁移系统、交错自动机
• 时间迁移系统– 时间迁移系统、时间自动机– 混成迁移系统、 Petri 网、通信系统
不同类型模型的特点
模型之间的关系
用模型描述系统
10
结构化循环程序
• 谓词逻辑、解释、赋值
• 语句组合• 运行、语义• 前断言、后断言
• 推理验证方法
11
流程图程序
• 谓词逻辑、解释、赋值
• 指令集合、 begin - end
• 运行、语义• 前断言、后断言
• 推理验证方法
12
卫式迁移系统
• 谓词逻辑、解释、赋值
• 迁移集合、初始条件• 状态、状态序列、可执行迁移、运行
• 推理验证方法
13
谓词迁移系统
• 谓词逻辑、解释、赋值
• 迁移的谓词、初始条件• 状态、状态序列、可执行迁移、运行
• 推理验证方法
14
Kripke 结构
• <S,R,I>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合
状态、状态序列、迁移、路径、运行
15
标号 Kripke 结构
• <S,R,I,L>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合– L: S2AP: 标号函数
语言
16
公平标号 Kripke 结构
• <S,R,I,L,F>– S: 状态集合– RSxS: 迁移关系– I S: 初始状态集合– L: S2AP: 标号函数– F 2S: 公平要求的集合
公平运行、语言
17
标号迁移系统
• <,S,,I> : 标号集合– S: 状态集合 S x x S: 迁移关系– I S: 初始状态集合
运行、字符串、语言
18
Buchi 自动机
• <,S,,I,F> : 标号集合– S: 状态集合 S x x S: 迁移关系– I S: 初始状态集合– F 2S: 接受条件
不同类型的自动机
可接受运行、可接受字符串、语言
19
交错迁移系统
• <,S,,I> : 标号集合– S: 状态集合 S x x 2S: 迁移关系– I S: 初始状态集合
树结构的运行
20
交错自动机
• <,S,,I,F> : 标号集合– S: 状态集合 S x x 2S: 迁移关系– I S: 初始状态集合– F 2S: 接受条件
可接受运行、可接受字符串、语言
21
时间迁移系统
• <,S,C,,I> : 标号集合– S: 状态集合– C: 时钟集合 S x x 2C xΦ(C)xS: 迁移关系– I S: 初始状态集合
时间字符串、时间字符串上的运行
22
时间自动机
• <,S,X,,I,F> : 标号集合– S: 状态集合– X: 时钟集合 S x x 2X xΦ(X)xS: 迁移关系– I S: 初始状态集合– F 2S: 接受条件
可接受运行、可接受时间字符串、语言
23
混成迁移系统
• <,S,X,,I,flow> : 标号集合– S: 状态集合– X: 实数变量集合 S x x (X) x Φ(X) x S: 迁移关系– I S: 初始状态集合– flow: S Φ(X,X)
时间字符串、时间字符串上的运行
24
Petri 网
• <P,T,F,M0>
– P: 位置集合– T: 迁移集合– F (P T) (T P) : 边的集合– M0 : PN 初始状态
状态、迁移、运行、可达状态
25
通信单元、通信系统
• <Q,C,Δ,q0>
– Q: 状态集合– C: 通道集合– Δ Q (α(C){}) Q: 迁移关系– q0 Q: 初始状态
事件、可执行事件、状态、迁移、运行
26
二、程序逻辑
• 线性时序逻辑– 命题线性时序逻辑– 一阶线性时序逻辑– 线性 μ- 演算
• 分枝时序逻辑– 计算树逻辑 (CTL)– CTL*– 模态 μ- 演算
公式之间的关系
公式和模型的对应关系
公式和状态集的对应关系
用公式描述系统或性质
不同逻辑的特点
逻辑之间的关系
27
线性时序逻辑
• 命题逻辑、谓词逻辑
• 语言• 语义
• 逻辑公式之间的关系• 逻辑公式用于描述性质和系统模型• 逻辑公式对应于系统模型 ( 自动机 )
28
分枝时序逻辑
• 命题逻辑
• 语言• 语义
• 逻辑公式之间的关系• 逻辑公式用于描述性质• 逻辑公式对应于 Kripke 结构的状态集
29
三、验证方法
• 推理验证– 卫式迁移系统– 流程图程序– 结构化程序
• 模型检测– 基于状态– 基于路径– 限界模型检测
模型检测方法:特点应用
相关的结构和算法
程序推理方法:特点应用
30
推理验证
• 卫式迁移系统– 程序推理规则– 线性时序逻辑推理规则
• 流程图程序– 根据操作语义证明– 根据路径分段证明、最弱宽松前断言计算方法
• 结构化程序– 根据指称语义证明– 根据公理语义、 Hoare 逻辑证明
安全性质响应性质部分正确完全正确
31
模型检测• 基于状态
– 显式状态迁移系统 – 符号状态迁移系统 ( 最简二元决策图 )
• 基于路径– 用自动机表示系统– 用自动机表示性质 ( 由公式构造自动机的方法 )
• 限界模型检测– 限界模型– 限界语义及应用
32
四、验证工具与实例• 验证工具
– 程序推理辅助工具 XYZ/VERI-II – 模型检测工具 SMV– 模型检测工具 SPIN – 模型检测工具 VERDS
• 验证实例– 结构化程序– 协议– 电路
对课程内容的总体认识
33
关于考试
程序的形式验证
课堂开卷
12 月 8日 13:30-16:00
N301
• 各种算法和方法的使用• 各种模型语言和逻辑语言的使用
34
问题 ?