形式化验证 线性时序逻辑

形式化验证 线性时序逻辑



最近在看老师推荐的Doron的《Software reliable methods》入门形式化验证,学到了线性时序逻辑,做一个笔记。

一阶逻辑和命题逻辑用来表达状态的性质,每一个公式代表了满足它的状态的集合。但是这样的代表状态集合的逻辑是静态的,没法表示状态间的动态演化。

由于上面原因,产生了模态逻辑(Modal logics)。模态逻辑对在程序执行期间不同状态之间的关系进行描述。这样的逻辑非常适合描述交互式的,同步的,或者分布式的系统。在这样的系统中,我们不仅仅关注系统执行始末的状态,还要关注执行过程中的状态序列的其他性质。

线性时序逻辑就是模态逻辑的一种实例!LTL是在静态的底层逻辑之上的,底层逻辑可以描述状态的性质,但是不能描述状态之间的转换,所以我们往往用命题逻辑和一阶逻辑作为底层逻辑。

LTL的语法和语义
下面我们看一下LTL的语法:

底层逻辑的每一个公式都是LTL的公式。

如果 ϕ \phi ϕ ψ \psi ψ都是公式,那么 ( ¬ ϕ ) (\lnot\phi) (¬ϕ) ( ϕ ∧ ψ ) (\phi\land\psi) (ϕψ) ( ϕ ∨ ψ ) (\phi\lor\psi) (ϕψ) ( ◯ ϕ ) (\bigcirc \phi) (ϕ) ( ♢ ϕ ) (\diamondsuit\phi) (ϕ) ( □ ϕ ) (\Box\phi) (ϕ) ( ϕ ⋃ ψ ) (\phi\bigcup\psi) (ϕψ),和 ( ϕ ⋁ ψ ) (\phi\bigvee\psi) (ϕψ)都是公式

LTL公式是在无限状态序列 x 0 x 1 x 2 . . . x_0x_1x_2... x0x1x2...上解释的。我们这样定义 ξ k \xi^k ξk:它是 ξ = x 0 x 1 x 2 . . . \xi=x_0x_1x_2... ξ=x0x1x2...的一个从 x k x_k xk开始的后缀,也就是 x k x k + 1 x k + 2 . . . x_kx_{k+1}x_{k+2}... xkxk+1xk+2...

上面是LTL的语法,那么我们来定义一下LTL语义:

  • ξ k ⊨ η \xi^k\models\eta ξkη,其中 η \eta η是静态底层逻辑的一个公式,仅当 x k ⊨ η x_k\models\eta xkη
  • ξ k ⊨ ( ¬ ϕ ) \xi^k\models(\lnot\phi) ξk(¬ϕ),仅当 ξ k ⊨ ϕ \xi^k\models\phi ξkϕ不成立
  • ξ k ⊨ ( ϕ ∧ ψ ) \xi^k\models(\phi\wedge\psi) ξk(ϕψ),仅当 ξ k ⊨ ϕ \xi^k\models\phi ξkϕ并且 ξ k ⊨ ψ \xi^k\models\psi ξkψ
  • ξ k ⊨ ( ϕ ∨ ψ ) \xi^k\models(\phi\vee\psi) ξk(ϕψ),仅当 ξ k ⊨ ϕ \xi^k\models\phi ξkϕ或者 ξ k ⊨ ψ \xi^k\models\psi ξkψ
  • ξ k ⊨ ( ◯ ϕ ) \xi^k\models(\bigcirc\phi) ξk(ϕ),仅当 ξ k + 1 ⊨ ϕ \xi^{k+1}\models\phi ξk+1ϕ
  • ξ k ⊨ ( ♢ ϕ ) \xi^k\models(\diamondsuit\phi) ξk(ϕ),仅当存在一个 i ≥ k i\geq k ik,令 ξ i ⊨ ϕ \xi^i\models\phi ξiϕ成立
  • ξ k ⊨ ( □ ϕ ) \xi^k\models(\Box\phi) ξk(ϕ),仅当对于每一个 i ≥ k i\geq k ik,令 ξ i ⊨ ϕ \xi^i\models\phi ξiϕ成立
  • ξ k ⊨ ( ϕ ⋃ ψ ) \xi^k\models(\phi\bigcup\psi) ξk(ϕψ),仅当存在一个 i ≥ k i\geq k ik,令 ξ i ⊨ ψ \xi^i\models\psi ξiψ,并且对于每一个满足 k ≤ j < i k\leq j<i kj<i j j j ξ j ⊨ ϕ \xi^j\models\phi ξjϕ
  • ξ k ⊨ ( ϕ ⋁ ψ ) \xi^k\models(\phi\bigvee\psi) ξk(ϕψ),仅当要么对于每一个 i ≥ k i\ge k ik ξ i ⊨ ψ \xi^i\models\psi ξiψ,要么对于某个 j ≥ k j\ge k jk ξ j ⊨ ϕ \xi^j\models\phi ξjϕ并且对于每一个满足 k ≤ i ≤ j k\le i\le j kij i i i ξ i ⊨ ψ \xi^i\models\psi ξiψ

我们可以解释一下,其中第2、3、4个式子里面用到了布尔运算符,我们应该很熟悉,而后面的式子用到了模态运算符。其中,

  • ◯ ϕ \bigcirc\phi ϕ叫做nexttime,意思是 ϕ \phi ϕ在下一个状态 x k + 1 x_{k+1} xk+1下成立。
  • ♢ ϕ \diamondsuit\phi ϕ叫做eventually,意思是一定有一个 ξ \xi ξ的后缀让 ϕ \phi ϕ成立。
  • ϕ ⋃ ψ \phi\bigcup\psi ϕψ叫做until,意思是在 ψ \psi ψ成立之前 ϕ \phi ϕ都成立。

如果用图形来更直观的表示就是像下面这样

利用LTL表示一些性质

  • 可达性
    • 简单可达性: ◊ ψ \Diamond \psi ψ
    • 多条件的可达性(conditional reachability): ϕ ⋃ ψ \phi \bigcup \psi ϕψ
  • 安全性
    • 不变性: □ ϕ □ϕ ϕ
  • 活性:
    • □ ( ϕ ⇒ ◊ ψ )   a n d   o t h e r s \Box(\phi \Rightarrow \Diamond \psi)\ and \ others (ϕψ) and others
  • 公平性:
    • □ ◊ ϕ   a n d   o t h e r s □◊ϕ \ and\ others ϕ and others
  • 对偶性定律
    • ¬ □ ϕ ≡ ◊ ¬ ϕ ¬□ϕ≡◊¬ϕ ¬ϕ¬ϕ
    • ¬ ◊ ϕ ≡ □ ¬ ϕ ¬ ◊ ϕ ≡ □ ¬ ϕ ¬ϕ¬ϕ
    • ¬ ◯ ϕ ≡ ◯ ¬ ϕ ¬ ◯ ϕ ≡ ◯ ¬ ϕ ¬ϕ¬ϕ
  • 幂等律
    • □ □ ϕ ≡ □ ϕ □□ϕ≡□ϕ ϕϕ
    • ◊ ◊ ϕ ≡ ◊ ϕ ◊◊ϕ≡◊ϕ ϕϕ
    • ϕ ⋃ ( ϕ ⋃ ψ ) ≡ ϕ ⋃ ψ ϕ⋃(ϕ⋃ψ)≡ϕ⋃ψ ϕ(ϕψ)ϕψ
    • ( ϕ ⋃ ψ ) ⋃ ψ ≡ ϕ ⋃ ψ (ϕ⋃ψ)⋃ψ≡ϕ⋃ψ (ϕψ)ψϕψ
  • 吸收律
    • ◊ □ ◊ ϕ ≡ □ ◊ ϕ ◊□◊ϕ≡□◊ϕ ϕϕ
    • □ ◊ □ ϕ ≡ ◊ □ ϕ □◊□ϕ≡◊□ϕ ϕϕ
  • 分配律
    • ◯ ( ϕ ⋃ ψ ) ≡ ( ◯ ϕ ) ⋃ ( ◯ ψ ) ◯(ϕ⋃ψ)≡(◯ϕ)⋃(◯ψ) (ϕψ)(ϕ)(ψ)
    • ◊ ( ϕ ∨ ψ ) ≡ ◊ ϕ ∨ ◊ ψ ◊(ϕ∨ψ)≡◊ϕ∨◊ψ (ϕψ)ϕψ
    • □ ( ϕ ∧ ψ ) ≡ □ ϕ ∧ □ ψ □(ϕ∧ψ)≡□ϕ∧□ψ (ϕψ)ϕψ

公平性
公平性是说在并发系统的交错执行上施加语法限制,保证运行的公平,比如避免某个程序一直被推迟执行,最后饿死。

公平性假设是用来排除我们建模的系统的不合理的无限执行。下面介绍几种常见的公平性假设:

  • 弱进程公平性
    如果一个执行包含某个状态s,且总有至少一个属于进程 P i P_i Pi的转换可执行但在s之后没有 P i P_i Pi的转换被执行,那就排除这个执行。

  • 强进程公平性
    如果在一个执行上进程 P i P_i Pi的转换可以被执行无限次,但仅仅被执行有限次,则排除这个执行。

  • 弱转换公平性
    如果一个执行包含某个状态s,并且总有一个转换可执行但从未在s后被执行,则排除这个执行。

  • 强转换公平性
    如果一个执行上有一个转换可以被执行无限次,但是仅仅被执行有限次,则排除此执行

那么我们回到LTL,我们会用到下面的转换命题:

  • e x e c α exec_α execα
    转换 α \alpha α被执行,这个是一个包括可选的状态和转换的执行的一个例子,其中 α \alpha α是一个转换的名字。

  • e x e c p i exec_{p_i} execpi
    代表来自 P i P_i Pi的一个转换被执行,这个是 ⋁ α ∈ P i e x e c α \bigvee_{\alpha\in P_i}exec_\alpha αPiexecα的一个缩写。

下面是对于公平性假设的描述:

  • 弱转换公平性
    W T F = ⋀ α ∈ T ¬ ♢ □ ( e n α ∧ ¬ e x e c α ) WTF = \underset{\alpha\in T} {\bigwedge}\lnot\diamondsuit \Box(en_\alpha \wedge \lnot exec_\alpha) WTF=αT¬(enα¬execα)
    翻译成人话就是不会从某一个点开始始终\alpha可以执行但不会执行。

  • 强转换公平性
    S T F = ⋀ α ∈ T ( □ ♢ e n α → □ ♢ e x e c α ) STF= \underset{\alpha\in T}{\bigwedge} (\Box\diamondsuit en_\alpha \rightarrow \Box\diamondsuit exec_\alpha) STF=αT(enαexecα)
    翻译一下呢,就是对于每一个转换\alpha,如果从每个状态开始, α \alpha α终究都可执行,那么终究都会执行。

  • 弱进程公平性
    W T F = ⋀ p i ¬ ♢ □ ( e n P i ∧ ¬ e x e c P i ) WTF = \underset{p_i} {\bigwedge} \lnot\diamondsuit\Box(en_{P_i} \wedge \lnot exec_{P_i}) WTF=pi¬(enPi¬execPi)

  • 强进程公平性
    S T F = ⋀ P i ( □ ♢ e n P i → □ ♢ e x e c P i ) STF= \underset{P_i}{\bigwedge}(\Box\diamondsuit en_{P_i} \rightarrow \Box\diamondsuit exec_{P_i}) STF=Pi(enPiexecPi)

这些公平性条件之间关系

公平性条件关系

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值