4) 第三章 通过模型检测进行验证
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分三个方面: 1)用于系统建模的框架(某种描述语言) 如:伪代码,数据库中的SQL语言等 2)用于描述验证性质的规范语言 如:形式化 3)用于确定是否满足规范的验证方法 如:语法规则等。
2
对于验证的不同处理根据以下准则来分类: 1)基于证明与基于模型 即:在证明系统描述一组逻辑公式 而规范是另一个公式Ф 找到г├Ф的证明 即:Ф1 ,Ф2…Фn├Ф这是基于证明的验证 2)基于模型 即:г├Ф成立当且仅当г╞Ф成立 对所有模型M 如果对一切ψ∈г都有M╞ψ 那么M╞Ф 这就是基于模型的验证 Note:基于模型 即:基于单一模型决不能基于一个可能无限类。
15
例如:在使用括号时
公式(F(p→Gr)∨((┐q)Up))
在不使用括号时
Fp→Gr∨┐qUp
→
∨
F
→ p ┐ G q r
U
p P
F
G
∨
u p
Hale Waihona Puke Baidu
r ┐ q
16
Note:形如下面公式不是时态逻辑的合式 如:Ur:因为u是二元的时态逻辑连接词 (U是:直到,也就是说从什么状态到什么状态类 同∧q)PGq:因为G是一元的时态连接词(G是指 所有未来到什么状态,类同q┐p) 最后给出一个LIL公式Ф的子公式的概念 定义:LTL公式Ф的子公式是任意公式ψ,子公式的语法 分析树是Ф的子树。
19
例如:一个迁移关系的模型
s0 s1 s3 s2
以前讲过,这里不详述 又例如:当取下U盘时应当有三个状态 s0 取完U盘 s2 申请取下U盘 s1 确认取下U盘
20
根据例子我们知道: 1)一个模型有状态的集合S 即:S={ s0,s1…sn} 2)每一个状态S伴随有原子命题的集合即:L (s)={ L(s0),…L(sn )} 3)在特定的状态下L(s)为真 所以我们用 P(Atoms)表示Atoms的幂集 原子 原子 即:原子描述集 例如:{P,q}的幂集是{Ø,{ P},{ q},{ P,q}} 其中Ø为空集
14
例如:(P→(F q))可以写为P→F q 那么上述的4个例子去掉括号分别为: (1)Fp∧G q→pWr (((Fp)∧(G q))→(pWr) (2)F(p→Gr)∨ ┐qUp (F(p→(Gr))∨ ((┐q)Up)) (3)P W(q W r) (pW(q W r)) (4)GFp→F(q∨s) ((G(Fp))→(F (q∨s)) Note:尽管我们设置了优先级有时也得用括号
17
例:LTL公式为 Ф= pW(qUr) W P:ψ1
p
q
U
r
q:ψ2
r:ψ3 qUr:ψ4 PW(qur):ψ5(全树是子树的特例) 所有子树
语法分析树
总结:类同谓词子树(子式)
18
§3.2.2 LTL的语义 给出时态逻辑的基本概念后,我们就可以用LTL 来建模,(动、静态)结构,这里可以类同迁移系 统。形式给出定义。 定义:一个迁移系统M=(s,→,L), 其中:M为:迁移模型 L为:一个标记函数L:s→P(Atoms)元子 S为:是状态的集合(带有迁移关系→(S上的二 元关系),使每个s∈S有某个s´∈S,且满 足s→s´ Note:这里迁移系统简称模型。
28
定义:设M=(S,→,L)是一个模型, π= s1→s2→…是M中的一条路径。 π是否满足一个LTL公式,由满足关系╞定义如下: A:1)π╞ T 2)π╞ ┴ A:说明┬总为真 B:3)π╞ P 当且仅当P∈L(s 1) (沿差所考虑路径 的第1个状态被赋值) 4)π╞ ┐Ф当且仅当π╞ Ф 5)π╞Ф1∧Ф2当且仅当π╞ Ф1且π╞Ф2 6)π╞Ф1∨Ф2当且仅当π╞ Ф1且π╞Ф2 7)π╞Ф1→Ф2当且仅当若π╞ Ф1则π╞Ф2 B:说明与命题所定义的类同
s3
sd
(sd→sd)死销,但sd扩展就无死销
即:用一个死销状态sd扩展系统,使得没有死销。
25
定义:模型M=(s,→,L)中的一条路径是s中状态的 无限序列s1,s2,s3…,对每个i1,有si→si+1。我 们将路径写为s1 →s2→…。 例如:C:\program Files\Microsoft office\office\wingdoword.exe s1 s2 s3 s4 即:路径为s1→s2→ s3 → s4 所以说考虑路径π= s1→s2→…。它表示系统的 一个可能未来。 既:先是系统在状态s1,然后状态s2…依此类推。 我们用πi表示从si开始的后缀 例如:π3是s3 → s4…。 给出上述约定我们知道
7
§3.2 线性时态逻辑(LTL) LTL允许我们指示“未来”的连接词 ↓ 将时间建模成状态的序列 ↓ 称这个状态序列为计算路径 Note:未来是不确定的,所以要考虑若干个路径,代表不同的可能 未来。 例如:固定一个原子公式的集合; p,q,r … p1,p2…pn 这些原子命题代表“打印机忙”, “进程”3259被挂起 “寄存器”R1的内容是整数6等 这此描述依赖于处理系统。
9
也就是说时态逻辑在谓词逻辑的基础上又进一步的扩充, 这样就进一步的将逻辑学用在计算机领域中。 例如:LTL公式为 1.((Fp)∧(Gq)→(pWr)) →
∧
F G p
W
r
p q 语法分析树 其中:W为弱-直到,F为某未来状态,G为所有未来状态
10
又例:LTL公式为(F(p→(G r))∨((┐q)Up))
8
§3.2.1 LTL的语法(线性时态逻辑)
定义:线性时态逻辑(LTL)有下列Backus Naur(巴科斯范式)给出 Ф::= T∣┴∣P∣(┐Ф)∣(Ф∧Ф)∣(Ф∨Ф)∣ (Ф→Ф)∣(×Ф)∣(FФ)∣(GФ)∣(ФUФ)∣ (ФWФ)∣(ФRФ) 其中:T:表示永真(重言式) (T)(不加约束) L:表示永假(矛盾式) (F)(所有约束) X:表示下一个状态 (next) F:表示某未来状态 (Future) G:表示所有某个状态 (Globally) U:表示直到 (until) R:表示释放 (release) W:表示弱-直到 (weak-until) P:表示某个原子集的命题原子(atoms) Note:时态连接词X,F,G,U,R,W
23
( p,q) s0 (q,r)s1 (r) s2
总结:① 迁移系统M=(S,→,L)作为有向图表示; ② 用L标记状态S当且仅当L∈L(s)。
24
Note:在迁移中为了技术上说明总要在状态集合中添加一个死销状 态Sd 例 s0 s1 s0 s1 s2 s2
s3
s4 s4没有任何迁移 (实际上死销) s4
31
例:W表示弱-直到,12)有公式Ф1WФ2不在一条路径上成立 s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 … ………………………………………………………………… q P
通过上面4个例子分析,LTL公式都带有括号,有括 号最大问题是阅读较难及要分析括号匹配问题,这样我们 也类同谓词及命题类同给出时态连接词的优先级。 即:约定最高级:小括号 1级:一元连接词┐,x,F,G(包括时态) 2级:二元连接词 U,R,w(时态) 3级:二元连接词∧,∨ 4级:二元连接词→ 有了这样的绑定优先级就不会出现歧义性(二义性)
3
3)自动化的程序 即:自动化程度对不同的处理是有差异的。 有全自动、手动而计算机辅助设计。 如:CAD、CAM就是半自动的服装设计等 这就是基于自动化的验证 4)完成验证与性质验证 即:规范描述单一性质, 和规范描述全部性质。 这就是完成验证与性质验证
4
5)预期应用领域 如:操作系统,嵌入式系统, 和硬件系统的验证等 6)开发前与开发后 即:开发过程早期进行验证是必须的 如:Intel 公司解决奔腾芯片的浮点错误 这一章是介绍模型检测的验证方法( model checking)模型检测是自动的,基于模型,性质验证的 处理方法。该方法用于开发的,反应式系统。
26
∆. 从给定状态s开始的所有可能计算路径可视化,将迁移 系统展开一个无限计算树。 例如:
( p,q) s0 ( q,r)s1 M模型 ( r)s2
27
P,q q,r q,r s0 q,r s1 r s1
s0 r r r s2 s2 s2 r r s2 s2 r s2 s2
将M模型(系统)展开成一个从特定状态开始的所有计算路 径的无限树 总结:通过展开模型M得到无限计算树中,模型M的执行路径被明 确的表示出来。 为了更加严格我们给出定义:
29
C: 8)π╞XФ当且仅当若π2╞Ф(X下一个状态,π2从s2开始的后缀) (具体的讲,语句8从路径移除第一个状态,为了创建一条始于“下一个” 即:第二个状态的路径) 9) π╞GФ当且仅当对所有的i≥1,πi╞Ф (G所有未来状态) 10)π╞FФ当且仅当存在某个i≥1,使得πi╞Ф (F某未来状态) 11)π╞Ф∪ψ当且仅当存在某个i≥1, 使得πi╞ψ且对所有j=1,2,…i-1,有πj╞Ф (∪直到) 12)π╞ФWψ当且仅当存在某个i≤ 1,使得πj╞ψ 且对所有j=1,2,…i-1,有πi╞Ф 或对所有的k≥1,有πk ╞ψ(W弱直到) 13)π╞ФRψ当且仅当或者存在某个i≥1,使得πi╞Ф 且对所有j=1,2,…i-1,有πj╞ψ 或对所有的k≥1,有πk ╞ψ C:为时态逻辑连接词主要是根据类同谓词定义而言,只是真对时态而言
21
那么我们应当这样理解L 即:把L看成一个对所有原子的一个真值的赋值 具体的如同真值表 P q … T T … T F … F T … F F … 总结:所以说该系统(M)不是一个状态,这种赋值 依赖于系统所处的状态 即:S:L(s)包括了在状态s下为真的所有原子
22
例如:有一个迁移系统M的所有信息 M有三个状态s0 ,s1,s2 可能的迁移是:s0→s1 s0→s2 s1→s0 s1→s2 s2→s2 若 L(s0)={ p,q} L(s1)={ q,r} L(s2)={ r} 则用有向图表示为:
30
例:考查处理二元时态连接词的语句11~13 ∪表示直到根据定义11)有公式Ф1∪Ф2在一条路径上成立 如: s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 … ………………………………………………………………… p q
其中:Ф1∪Ф2要求某个未来状态成立 即:s3到s9每个状态都满足P∪q 但:s0到s2不满足 结论:公式Ф1∪Ф2在一条路径上(考虑的路径)
第三章 通过模型检测进行验证
§3.1验证的动机(目的) 1)能够验证计算机系统(硬、软、软硬结合) 例:一个系统生产出来,必须有验证过程才能应 用. 如 window95、97、2000、me、xp等 word97、Excel97、3D等 2)验证安全性能(系统) 例:如银行系统,商业攸关系统 各种桥梁的设计等都有一个保密问题的验证。 即:数理逻辑验证计算机系统和程序正确性证明 有广泛的应用,所以我们采用形式化验证方法。 1
∨
F
→ ┐
U
p 语法分析树
p
G q
r
其中:F:某未来状态 U:直到状态 G:所有未来状态
11
例:(P W(q W r))为LIL公式
w
p q w r 其中:W:弱-直到
语法分析树
12
例:((G(Fp))→(F(q∨s))) →
G
F p q
F
∨ s
其中:G:所有未来状态F:某未来状态
语法分析树
13
5
例如:在第二章描述的Alloy系统就是一个自动的,基于模型的性 质验证处理。 具体的讲:模型检测基于时态逻辑(temporal logic) 其思想为:在一个模型中,公式的真与假不是静态的而是动 态的。 即:时态逻辑的模型包含若干个状态,在某些状态下为真,在其 它状态下为假。
S0 S1 S2 Sn → → ··· 这就是动态的概念(循环变量的判别就是动态的) T F T T Note:时态逻辑是线性的。
6
例:在模型检测中,模型M是迁移系统,而性质Ф是时态 逻辑公式。而验证一个系统的满足性. 要做如下三件事。 1)使用模型检测器的描述语言进行建模得到一个M模型; 2)使用模型检测器规范语言对性质进行编码得到一个时态 逻辑公式Ф; 3)以M和Ф做输入进行模型检测 如果M╞Ф则输出 yes 否则; 则输出 no Note:线性时间逻辑把时间看成路径的集合(linear—time Tempora logic,LTL) Note:分支时间把逻辑时间表示为树(Computation Tree Logic, CTL)