软件理论基础学习笔记——模态逻辑(modal logic)

目录

  • 模态逻辑的语法
  • 模态逻辑的语义
    • 模态逻辑在状态上的语义
    • 模态逻辑在Kripke上的语义


模态逻辑的语法

模态逻辑定义为:

ϕ : : = t r u e ∣ p ∣ ¬ ϕ ∣ ϕ 1 ∨ ϕ 2 ∣ ϕ 1 ∧ ϕ 2 ∣ ϕ 1 → ϕ 2 ∣ □ ϕ ∣ ◊ ϕ \phi::=true|p|\lnot\phi|\phi_{1}\vee\phi_{2}|\phi_{1}\wedge\phi_{2}|\phi_{1}\rightarrow\phi_{2}|\Box\phi|\Diamond\phi ϕ::=truep¬ϕϕ1ϕ2ϕ1ϕ2ϕ1ϕ2ϕϕ

说白了就是命题逻辑再加上两个自定义的算子

看看模态逻辑多了的 □ \Box ◊ \Diamond ,称呼为模态算子,不过这俩符号的含义和LTL中的不太一样,在模态逻辑中, □ \Box 读作必然(necessary),而 ◊ \Diamond 读作可能(possible)

这两个算子可以相互定义,其中:
□ ϕ = ¬ ◊ ¬ ϕ \Box\phi=\lnot\Diamond\lnot\phi ϕ=¬¬ϕ
◊ ϕ = ¬ □ ¬ ϕ \Diamond\phi=\lnot\Box\lnot\phi ϕ=¬¬ϕ

也就是说,如果 ϕ \phi ϕ是必然的,那么非 ϕ \phi ϕ是不可能的
如果 ϕ \phi ϕ是可能的,那么非 ϕ \phi ϕ是非必然的

读起来还挺绕口的,其实如果仔细想想好像还真是那么一回事儿

明天可能下雨,明天不下雨是非必然的。
明天必然天晴,明天不是天晴是不可能的。

模态逻辑的语义

LTL我们是在TS上定义的语义,在模态逻辑中,我们描述语义需要借助Kripke结构,可以回顾一下写给学生看的系统分析与验证笔记(二)——Kripke structure

在这里我们定义Kripke结构为三元组(W,R,L),W是状态的集合(不过很多地方称呼为世界,我这里沿用自己的用法),R是关系的集合,这里的R指可达关系,R(x,y)为真代表的含义是状态x与状态y是可达的,L是标签函数

模态逻辑在状态上的语义

设M=(W,R,L)是模态逻辑的一个模型,x ∈ \in W, ϕ \phi ϕ是一个模态逻辑公式。我们用 M , x ⊩ ϕ M,x\Vdash\phi M,xϕ表示公式 ϕ \phi ϕ在状态x处为真,用 M , x ⊮ ϕ M,x\nVdash\phi M,xϕ表示公式 ϕ \phi ϕ在状态x处不为真

模态逻辑在状态上的语义可以表示为:

  • M , x ⊩ t r u e M,x\Vdash true M,xtrue
  • M , x ⊮ f a l s e M,x\nVdash false M,xfalse
  • M , x ⊩ p M,x\Vdash p M,xp当且仅当 p ∈ L ( x ) p\in L(x) pL(x)
  • M , x ⊩ ¬ ϕ M,x\Vdash\lnot\phi M,x¬ϕ当且仅当 M , x ⊮ ϕ M,x\nVdash\phi M,xϕ
  • M , x ⊩ ϕ 1 ∧ ϕ 2 M,x\Vdash\phi_{1}\wedge\phi_{2} M,xϕ1ϕ2当且仅当 M , x ⊩ ϕ 1 M,x\Vdash\phi_{1} M,xϕ1 M , x ⊩ ϕ 2 M,x\Vdash\phi_{2} M,xϕ2
  • M , x ⊩ ϕ 1 ∨ ϕ 2 M,x\Vdash\phi_{1}\vee\phi_{2} M,xϕ1ϕ2当且仅当 M , x ⊩ ϕ 1 M,x\Vdash\phi_{1} M,xϕ1 M , x ⊩ ϕ 2 M,x\Vdash\phi_{2} M,xϕ2
  • M , x ⊩ ϕ 1 → ϕ 2 M,x\Vdash\phi_{1}\rightarrow\phi_{2} M,xϕ1ϕ2当且仅当若 M , x ⊩ ϕ 1 M,x\Vdash\phi_{1} M,xϕ1 M , x ⊩ ϕ 2 M,x\Vdash\phi_{2} M,xϕ2

上面的几条基本上和其他逻辑差不多,下面两条语义最为重要:

  • M , x ⊩ □ ϕ M,x\Vdash\Box\phi M,xϕ当且仅当对于每个 y ∈ W , R ( x , y ) y\in W,R(x,y) yW,R(x,y)蕴含 M , y ⊩ ϕ M,y\Vdash\phi M,yϕ
  • M , x ⊩ ◊ ϕ M,x\Vdash\Diamond\phi M,xϕ当且仅当存在一个 y ∈ W , 使 得 R ( x , y ) y\in W,使得R(x,y) yW,使R(x,y) M , y ⊩ ϕ M,y\Vdash\phi M,yϕ

根据这个语义,如果 □ ϕ \Box\phi ϕ在状态x处为真,那么在x每个可达的状态上,均有 ϕ \phi ϕ为真
如果 ◊ ϕ \Diamond\phi ϕ在状态x处为真,那么存在一个x的可达状态,使得 ϕ \phi ϕ为真

在语义上我们也看到,necessary □ \Box 这个算子在x没有除自身外的其他可达状态的情况下,也是为真的,如果除了自身外,还有其他可达状态,那么就要判断每个可达状态上是否满足 ϕ \phi ϕ,而possible ◊ \Diamond 这个算子先要判断是否有可达状态,然后判断是否存在一个可达状态满足公式 ϕ \phi ϕ

模态逻辑在Kripke上的语义

如果Kripke模型M中存在某个状态,使得公式 ϕ \phi ϕ在该状态处为真,则称 ϕ \phi ϕ可满足;如果 ∀ x ∈ W \forall x\in W xW均有 M , x ⊩ M,x\Vdash M,x,则称 ϕ \phi ϕ在模型M中全局真,记作 M ⊩ ϕ M\Vdash\phi Mϕ

接下来我们通过例子来实际地展示一下语义

假设我们现在有这么一个模型:
软件理论基础学习笔记——模态逻辑(modal logic)_第1张图片
按照上面的定义,我们有:

  • M , x 1 ⊩ q M,x_{1}\Vdash q M,x1q
  • M , x 1 ⊩ ◊ q M,x_{1}\Vdash\Diamond q M,x1q
  • M , x 1 ⊮ □ q M,x_{1}\nVdash\Box q M,x1q
  • M , x 5 ⊮ □ p M,x_{5}\nVdash\Box p M,x5p,且 M , x 5 ⊮ □ q M,x_{5}\nVdash\Box q M,x5q,故 M , x ⊮ □ p ∨ □ q M,x\nVdash\Box p\vee\Box q M,xpq
  • M , x 5 ⊩ □ ( p ∨ q ) M,x_{5}\Vdash\Box (p\vee q) M,x5(pq)
  • M , x 2 , x 3 , x 4 , x 5 , x 6 ⊩ □ p → p M,x_{2},x_{3},x_{4},x_{5},x_{6}\Vdash\Box p\rightarrow p M,x2,x3,x4,x5,x6pp
  • M , x 6 ⊮ ◊ ϕ M,x_{6}\nVdash\Diamond\phi M,x6ϕ,对于任意的公式 ϕ \phi ϕ
  • M , x 6 ⊩ □ ϕ M,x_{6}\Vdash\Box\phi M,x6ϕ,对于任意的公式 ϕ \phi ϕ

你可能感兴趣的:(形式化验证,#,软件理论,软件理论,模态逻辑)