1 / 112

第 6 章 模型检测

第 6 章 模型检测. 验证是提高软件可信程度的重要方法 模型检测 基于逻辑推理的程序验证 模型检测 一种验证系统满足性质  (    ) 的方法。它操作在系统的模型  (语义)上,而不是在系统的描述(语法)上 通过遍历系统所有状态空间,能够对有穷状态系统进行自动验证,并自动构造不满足验证性质的反例. 第 6 章 模型检测. 模型检测的应用 常用于硬件验证和通信协议的验证中 现在开始用于软件的验证 模型检测过程的大体步骤 由用户描述的一个模型开始 判断用户所断言的假设在模型中是否有效 若无效,则产生由执行轨迹构成的反例.

stacy
Download Presentation

第 6 章 模型检测

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第6章 模型检测 • 验证是提高软件可信程度的重要方法 • 模型检测 • 基于逻辑推理的程序验证 • 模型检测 • 一种验证系统满足性质 ( )的方法。它操作在系统的模型(语义)上,而不是在系统的描述(语法)上 • 通过遍历系统所有状态空间,能够对有穷状态系统进行自动验证,并自动构造不满足验证性质的反例

  2. 第6章 模型检测 • 模型检测的应用 • 常用于硬件验证和通信协议的验证中 • 现在开始用于软件的验证 • 模型检测过程的大体步骤 • 由用户描述的一个模型开始 • 判断用户所断言的假设在模型中是否有效 • 若无效,则产生由执行轨迹构成的反例

  3. 第6章 模型检测 • 内容概述 • 命题逻辑和谓词逻辑的简短回顾 • 线性时态逻辑及其在模型检测中的应用 • 计算树逻辑及其在模型检测中的应用

  4.              命题逻辑的回顾 • 合适公式的归纳定义  ::= p | (  ) | (   ) | (   ) | (   ) • 推理规则(包括公理) ( i)(e1) (e2) • 语法推论 若从1, 2, …, n可以证明,表示成 1, 2, …, n  , 简写成    • 逻辑等价    并且   

  5. 命题逻辑的回顾 • 命题逻辑的语义 • 定义真值集合(给p, q指派真值) • 把各逻辑连接词映射到真值集合上的运算(真值表方式) • 各推理规则在该模型中成立 • 语义推论 若1, 2, …, n的值都为真, 则 值也为真, 写成 1, 2, …, n , 简写成    • 语义等价   并且   • 可满足性 是可满足的,若存在一种指派使的值为真

  6. 命题逻辑的回顾 • 命题逻辑是可靠的和完备的 • 命题逻辑的可靠性 若 是有效的(可证明的),则  成立 • 命题逻辑的完备性 若 成立,则  是有效的 • 命题逻辑的可靠性和完备性  有效,当且仅当  成立

  7. 谓词逻辑的回顾 • 合式公式 • 谓词符号集合、函数符号集合(包括常量符号) • 基于来定义项集 t ::= x | c | f(t, …, t) • 归纳地定义基于( , )的合适公式  ::= P(t1, t2, …, tn) | (  ) | (   ) | (   ) | (   ) | (x  )| ( x ) ( P  ) • 自由变量、约束变量、代换

  8. 谓词逻辑的回顾 • 新增推理规则(包括公理) • 项相等的证明规则 • 全称量词证明规则 • 存在量词证明规则 • 量词间的等价规则 • 语义模型、可靠性、完备性 • 它们都可以基于命题逻辑相应概念进行拓展 •   和  的意思与前面的一致 •   表示在模型中成立

  9. 形式验证的动机 • 形式验证技术由三部分组成 • 用于系统建模的框架,通常是某种描述语言 • 用于描述待验证性质的规范语言 • 用来确立系统描述是否满足规范的验证方法 • 基于逻辑推理的方法 • 系统描述是适当逻辑中的一组公式 • 待证性质的规范是另一个公式 • 验证就是试图通过该逻辑的公理和推理规则来证明 

  10. 形式验证的动机 • 形式验证技术由三部分组成 • 基于逻辑推理的方法 • 系统描述是适当逻辑中的一组公式 • 待证性质的规范是另一个公式 • 验证就是通过该逻辑来证明  • 基于模型的方法 • 系统由适当逻辑的某个模型表示 • 待证性质的规范仍由公式表示 • 验证就是计算模型是否满足( )

  11. 形式验证的动机 • 形式验证技术由三部分组成 • 基于逻辑推理的方法 • 系统描述是适当逻辑中的一组公式 • 待证性质的规范是另一个公式 • 验证就是通过该逻辑来证明  • 基于模型的方法 • 系统由适当逻辑的某个模型表示 • 待证性质的规范仍由公式表示 • 验证就是计算模型是否满足( ) 比基于证明方法简单,因为只考虑单个模型

  12. 形式验证的一些特性 • 自动化程度 • 基于模型的方法高于基于逻辑的方法 • 性质验证和完全验证 • 规范可描述单个性质或全部行为 • 完全验证的代价要高昂得多 • 潜在应用领域 • 硬件或软件、串行或并发、反应式或终止式 • 开发前与开发后 • 开发前验证可及早发现错误,降低纠错代价

  13. 模型检测及所用逻辑概述 • 模型检测 • 基于模型的性质验证的自动化方法 • 最初试图用于并发、反应式系统 • 作为一种开发后的方法论问世 • 模型检测的大体步骤 • 由用户描述的一个模型开始 • 判断用户所断言的假设在模型中是否有效 • 若无效,则产生由执行轨迹构成的反例

  14. 模型检测及所用逻辑概述 • Model checking, narrowly interpreted • Decision procedures for checking if a given Kripke structure is a model for a given formula of a modal logic. • Why is this of interest to us? • Because the dynamics of a discrete system can be captured by a Kripke structure. • Because some dynamic properties of a discrete system can be stated in modal logics.  Model checking = System verification

  15. 模型检测及所用逻辑概述 • Model checking, generously interpreted • Algorithms for system verification which operate on a system model (semantics) rather than a system description (syntax). • There are many different model-checking problems • for different (classes of) system models • for different (classes of) system properties

  16. 模型检测及所用逻辑概述 • 基于时态逻辑的模型检测 • 模型是一个状态迁移系统 • 性质 是时态逻辑的公式,在某些状态下为真,在其它状态下为假(公式的真与假不是静态的) • 验证系统满足性质 • 用模型检测器的描述语言建立系统的模型 • 用模型检测器的规范语言对待证性质进行编码,得到时态逻辑公式 • 以和作为输入,运行模型检测器 • 若 ,则产生由系统执行轨迹构成的反例

  17. 模型检测及所用逻辑概述 • 时态逻辑是一个庞大的家族 归类到模态逻辑,依赖于对“时间”的特别观点 进行内部分类 • 线性时态逻辑:时间是线性的逻辑 • 计算树逻辑:时间形成分支的逻辑 • 常用于硬件和通信协议的验证中 • 现在开始用于软件的验证

  18. s1 p p, q s2 q s3 状态迁移系统 • 状态集合S {s1, s2, s3} • 标记(观察)集合A{p, q} • 迁移关系 S  Ss1  s2, … • 标记函数L: S P(A) L(s1) = { p }, …

  19. s1 p p, q s2 q s3 线性时态逻辑 • 线性时态逻辑(Linear-time Temprol Logic, LTL)的特点 • 将时间建模成状态的序列,无限延伸到未来。该状态序列称为计算路径或路径 • 使用指示未来的连接词 • 未来一般不确定,出现若干可能路径

  20. s1 p p, q s2 q s3 线性时态逻辑 • LTL的语法  ::=  |  | p | (  ) | (   ) | (   ) | (   ) | (X  ) | (F ) | (G  ) | ( U  ) | ( W  ) | ( R  ) • 原子公式集合: , , p, q, r, … • 时态连接词 下一个状态(X), 未来某状态(F), 未来所有状态(G), 直到(U),释放(R), 弱-直到(W)

  21. s1 p p, q s2 q s3 线性时态逻辑 • LTL的语法  ::=  |  | p | (  ) | (   ) | (   ) | (   ) | (X  ) | (F ) | (G  ) | ( U  ) | ( W  ) | ( R  ) • 原子公式集合: , , p, q, r, … • 优先级(高到低) 一元连接词 U, R, W ,  

  22. 线性时态逻辑 • LTL的语义模型 • 是一个Kripke结构(S, s0, , A, L) • 即状态迁移系统: 状态集合S,开始状态s0,迁移关系,标记集合A,标记函数L • 其中对迁移关系的要求:s:S. s':S. s s' • 通常用状态迁移图表示 • 以后的讨论用简化的三元组(S, , L) • 模型的路径 • 状态迁移的无限序列  = s1 s2 … • i 表示从si 开始的后缀 si si+1 …

  23. 线性时态逻辑 • 模型上路径的满足关系 •   ,   ,   piff p L(s1),    iff   •   1  2iff   1且   2 •   1  2iff   1或   2 •   1  2iff   1蕴涵   2 •   Xiff 2  •   Giff 对所有的i  1,有i  •   Fiff 存在某个i  1,使得i  •    Uiff 存在某个i  1,使得i ,且对所有的j =1, …, i 1有j 

  24. p q 线性时态逻辑 • 模型上路径的满足关系 •    Uiff 存在某个i  1,使得i ,且对所有的j =1, …, i 1有j  s1  s2  s3  s4 s5 s6 s7 s8 s9s10 … i( 3 i 9)满足p U q

  25. 线性时态逻辑 • 模型上路径的满足关系 •    Uiff 存在某个i  1,使得i ,且对所有的j =1, …, i 1有j  •    Wiff 存在某个i  1,使得i ,且对所有的j =1, …, i 1有j  ;或者对所有的k  1有k  •    Riff 存在某个i  1,使得i  ,且对所有的j =1, …, i 有j ;或者对所有的k  1有k

  26.      线性时态逻辑 •  R 等价于( U ) •    Uiff 存在某个i  1,使得i  ,且对所有的j =1, …, i 1有j  s1  s2  …  si-1 si si+1 … •    Riff 存在某个i  1,使得i  ,且对所有的j =1, …, i 有j ;或者对所有的k  1有k(两种情况) s1  s2  …  si-1 si si+1 …

  27.    线性时态逻辑 •  R 等价于( U ) •    Uiff 存在某个i  1,使得i  ,且对所有的j =1, …, i 1有j  s1  s2  …  si-1 si si+1 … •    Riff 存在某个i  1,使得i  ,且对所有的j =1, …, i 有j ;或者对所有的k  1有k(其中较简单的情况) s1  s2  …  si-1 si si+1 …

  28.     线性时态逻辑 •  R 等价于( U ) •    Uiff 存在某个i  1,使得i  ,且对所有的j =1, …, i 1有j  s1  s2  …  si-1 si si+1 … •    Riff 存在某个i  1,使得i  ,且对所有的j =1, …, i 有j ;或者对所有的k  1有k(其中较复杂的情况) s1  s2  …  si-1 si si+1 …

  29.          线性时态逻辑 •  R 等价于( U ) •    Uiff 存在某个i  1,使得i  ,且对所有的j =1, …, i 1有j  s1  s2  …  si-1 si si+1 … •    Riff 存在某个i  1,使得i  ,且对所有的j =1, …, i 有j ;或者对所有的k  1有k(其中较复杂的情况) s1  s2  …  si-1 si si+1 …

  30. s0 p, q s2 s1 q, r r 线性时态逻辑 • , s  (简记s   ) 若对每条开始于s 的路径  都有    例 • , s0 p  q • , s0 r • , s0  • , s0 X r • , s0 X ( q  r ) • , s0 G ( p  r ) • , s2 G r

  31. s0 p, q s2 s1 q, r r 线性时态逻辑 • , s  (简记s   ) 若对每条开始于s 的路径  都有    例 • , s  F (q  r )  F G r(对任意状态s) • G F p表示p无数次发生 s0  s1  s0  s1  …  G F p s0  s2  s2  …  G F p , s0 G F p G F r , s0 G F r G F p

  32. 线性时态逻辑 • LTL公式(规范)的实际样例 • G(started  ready) 永远不可能尚未就绪就已经启动了 • G(requested  F acknowledged) 对资源的请求最终会得到确认 • G F enabled 在每条计算路径上, 某进程无限多次处于enabled • F G deadlock 某进程最终会被永久地死锁

  33. 线性时态逻辑 • LTL公式(规范)的实际样例 • G F enabled  G F running 进程无限多次处于enabled,则将无限多次执行 • G(floor2  directionup  ButtonPressed5  (directionup U floor5)) 若乘客想上5楼,处于2楼的上行电梯在到达5楼前不会改方向

  34. 线性时态逻辑 • LTL表达不了的事情 • 从任何状态出发,都可能(即存在一条路径)到达重新启动状态 • 电梯可以在第3层保持关门闲置(即存在一条从该层到该层的路径,沿该路径电梯停留在原地) 表达这些事情需要对路径使用存在量词,后面采 用计算树逻辑解决

  35. 线性时态逻辑 • LTL公式之间的语义等价 若对所有模型, 的所有路径 ,都有   当且仅当  ,记为   例如 • F和G对偶  G   F  , F   G  • X与自身对偶 X   X  • U和R对偶 (  U  )  R  (  R  )  U  • 分配律 F (    ) F  F G (    ) G  G

  36. 线性时态逻辑 • LTL的适当连接词集合 • 命题逻辑的适当连接词集合 {, , } • 线性时态逻辑的适当连接词集合  {U, X}是适当的,因为  R    ( U  )  W    R (   )  {R, X}是适当的  {W, X}是适当的

  37. 线性时态逻辑能表达的性质 • 以互斥使用某资源为例 • 安全性(safety):在任何时候只有一个进程处于临界区(多进程共处该区的坏事不会发生) • 活性(liveness):只要进程请求进入临界区,则最终会被允许进入(但不知何时发生) • 无阻性(non-blocking):进程总可以请求进入临界区 • 非严格顺序性:各进程无需按严格顺序进入临界区

  38. s0 s1 t1 n2 n1 t2 s5 s3 s2 n1 n2 c1 n2 n1 c2 t1 c2 t1 t2 c1 t2 s6 s4 s7 线性时态逻辑能表达的性质 • 以两个进程为例 n  t  c  n  … • n:处于非临界状态 • t:试图进入临界状态 • c:处于临界状态 状态迁移图 • 无c1c2状态 • 每次迁移改 一个进程的状态

  39. s0 s1 t1 n2 n1 t2 s5 s3 s2 n1 n2 c1 n2 n1 c2 t1 c2 t1 t2 c1 t2 s6 s4 s7 线性时态逻辑能表达的性质 • 以两个进程为例 安全性:G(c1 c2) • s0 满足安全性 • 所有状态都满足

  40. n1 n2 s0 s1 t1 n2 n1 t2 s5 s3 s2 c1 n2 t1 t2 s6 n1 c2 s4 c1 t2 t1 c2 s7 线性时态逻辑能表达的性质 • 以两个进程为例 活性:G(t1 F c1) • s0 不满足活性 • 见绿色路径

  41. s0 s1 t1 n2 n1 t2 s5 s3 s2 n1 n2 c1 n2 n1 c2 t1 c2 t1 t2 c1 t2 s6 s4 s7 线性时态逻辑能表达的性质 • 以两个进程为例 无阻性 • 对所有满足n1的状态, 存在路径进入满足 t1的状态 • 表达不了 这样的性质

  42. s0 s1 t1 n2 n1 t2 s5 s3 s2 n1 n2 c1 n2 n1 c2 t1 c2 t1 t2 c1 t2 s6 s4 s7 线性时态逻辑能表达的性质 • 以两个进程为例 非严格顺序性 • 存在路径,两个满足 c1的状态的中间状态 都不满足c1和c2 严格顺序性 • 所有路径上, c1周期结束后, c2先于c1的再出现

  43. n1 n2 s0 s1 t1 n2 n1 t2 s5 s3 s2 c1 n2 t1 t2 s6 n1 c2 s4 c1 t2 t1 c2 s7 线性时态逻辑能表达的性质 严格顺序性 • G(c1 c1W(c1  c1W c2)) • 所有路径上, c1周期结束后, c2先于c1的再出现 • 不满足严格 顺序性,见绿色 路径

  44. s0 s1 t1 n2 n1 t2 s5 s3 s8 s6 s2 c1 n2 t1 t2 t1 t2 t1 c2 n1 n2 n1 c2 c1 t2 s4 s7 线性时态逻辑能表达的性质 • 以两个进程为例 • 重新建模,以满足 非严格顺序性 安全性 活性 无阻性

  45. 模型检测工具 • 工具New Symbolic Model Verifier • 一个开放源码的工具 • 提供一种描述模型的语言,用它描述的模型被称为程序 • 模型要满足的性质用线性时态逻辑公式(规范)来表示 • 该工具以程序和规范作为输入;若规范成立则输出“真”,否则输出一条可作为反例的路径

  46. 计算树逻辑 • LTL的不足 • 隐含着对所有路径做全称量词限定 • 断言某一条路径的性质时,难以表示;有时可通过考虑该性质的否定来解决 • 不能表示混合使用全称和存在路径量词的性质 • 分支时态逻辑通过允许使用路径量词来解决 • 研究其中的计算树逻辑:时间建模为树状结构,未来有不同的路径

  47. 计算树逻辑 • 计算树逻辑(Computation Tree Logic)的语法  ::=  |  | p | (  ) | (   ) | (   ) | (   ) | AX | EX | AF  | EF  | AG  | EG  | A[ U  ] | E[ U  ] • A表示沿所有路径,E表示沿至少一条路径 • 存在一个可达状态满足q:EF q • 存在一个可达状态,由其出发的所有可达状态都满足p: EF AG p • AG( p E[p U q] ) • AG( p EG q )

  48. 计算树逻辑 • CTL的语义 • , s  AX  当且仅当 对所有使 s s1的s1,有, s1  • , s  EX  当且仅当 对某个使s s1的s1,有, s1  • , s1 AG 当且仅当每条路径 s1  s2  …上的任何si都有, si  • , s1 EG 当且仅当存在一条路径 s1  s2  …,其上的任何si都有, si 

  49. 计算树逻辑 • CTL的语义 • , s1 AF 当且仅当每条路径 s1  s2 …上都存在某个si,使得, si  • , s1 EF 当且仅当存在一条路径 s1  s2 …,其上存在某个si,使得, si  • , s1 A[1U 2]当且仅当每条路径 s1  s2 …都满足1U 2 • , s1 E[1U 2]当且仅当存在一条路径 s1  s2 …满足1U 2

  50. . . . . . . . . .  . . . . . . 计算树逻辑 • CTL的语义 初始状态满足EF 

More Related