写给学生看的系统分析与验证笔记(二)——Kripke structure


Kripe结构

在这里插入图片描述

首先给出Kripke的定义:

令AP是原子命题,则AP上的四元组M称为Kripke结构, M = ( S , S 0 , R , L ) M=(S,S_{0},R,L) M=(S,S0,R,L),其中

  1. S S S是一个有限的集合,它的每一个元素称为一个状态,即状态的有限集
  2. S 0 ⊆ S S_{0}\subseteq S S0S是初始状态集
  3. R ⊆ S × S R\subseteq S\times S RS×S是变迁关系
  4. L : S → 2 A P L:S\rightarrow 2^{AP} L:S2AP是标识函数,标识在某个状态下为真的原子命题集

当我们并不关心初始状态时,我们可以将它从定义中删除,结合上图我们来实际地表示一下Kripke结构

一个Kripke结构可以表示为一个有向图

  • AP为原子命题集合,此时 A P = { a , b , c } AP=\{a,b,c\} AP={a,b,c}
  • 有限状态集 S = { s 0 , s 1 , s 2 } S=\{ s_{0},s_{1},s_{2}\} S={s0,s1,s2},在图中以圆圈标识
  • 变迁关系从定义上看是状态集合笛卡尔积的子集,它是一种二元关系, R = { < s 0 , s 1 > , < s 1 , s 2 > , < s 0 , s 2 > , < s 2 , s 0 > } R=\{ <s_{0},s_{1}>, <s_{1},s_{2}>,<s_{0},s_{2}>,<s_{2},s_{0}> \} R={<s0,s1>,<s1,s2>,<s0,s2>,<s2,s0>},从图中来看是从起点指向终点的有向线段
  • 标识函数 L ( s 0 ) = { a , b } , L ( s 1 ) = { a , c } , L ( s 2 ) = { b } L(s_{0})=\{a,b\},L(s_{1})=\{a,c\},L(s_{2})=\{b\} L(s0)={a,b},L(s1)={a,c},L(s2)={b},标识函数标识在了圆圈内,即每一个圆圈内标注了该状态下成立的原子命题集

一阶逻辑公式表示并发系统

并发系统通常由程序文本或者电路图定义,有许多不同类型的并发系统(同步或异步电路,含共享变量的程序,消息通信机制的程序,等等),所以需要一种统一的可以表示所有种类并发系统的形式化表述,在这里我们一阶逻辑公式的方法。

基础定义

采用一阶逻辑公式表示并发系统时,我们只用到一阶逻辑的基本范畴,即逻辑操作符(合取∧,析取∨,否定 ¬ \neg ¬,蕴含 → \rightarrow 等等),还有全称量词( ∀ \forall )和存在量词( ∃ \exists )。

  • 假设 V = { v 0 , v 1 , . . . , v n } V=\{v_{0},v_{1},...,v_{n}\} V={v0,v1,...,vn}是系统变量的集合
  • 假设D是V中变量的取值范围的集合(通常称为 解释的空间或者域)
  • 假设s为V的赋值函数,s:V->D

描述并发系统的状态

一个并发系统的状态可以通过给V中所有变量赋值来描述,换句话说,状态就是变量的赋值函数s:V->D

例如,给定集合 V = { v 1 , v 2 , v 3 } V=\{v_{1},v_{2},v_{3}\} V={v1,v2,v3},和相应的赋值函数 s = < v 1 ← 2 , v 2 ← 3 , v 3 ← 5 > s=<v_{1}\leftarrow 2,v_{2}\leftarrow 3, v_{3}\leftarrow 5> s=<v12,v23,v35>,我们可以用一阶逻辑公式描述为: ( v 1 = 2 ) ∧ ( v 2 = 3 ) ∧ ( v 3 = 5 ) (v_{1}=2)\wedge (v_{2}=3)\wedge (v_{3}=5) (v1=2)(v2=3)(v3=5)

特别地,我们将系统的初始状态表示为 S 0 S_{0} S0

描述并发系统的状态变迁

既然要描述状态的变迁,那么势必会发生从一个状态到另一个状态的转变,此时仅用系统变量的集合V不能很好地表示该过程,所以需要引入另一个变量集合V’。我们假定V表示现在时刻的状态集合,V中的变量称为现态,V’表示发生转变之后的状态集合,V’中的变量称为次态。

例如,给定集合 V = { v 1 , v 2 , v 3 } V=\{v_{1},v_{2},v_{3}\} V={v1,v2,v3},和相应的赋值函数 s = < v 1 ← 2 , v 2 ← 3 , v 3 ← 5 > s=<v_{1}\leftarrow 2,v_{2}\leftarrow 3, v_{3}\leftarrow 5> s=<v12,v23,v35>,下一个状态的赋值函数 s ′ = < v 1 ← 1 , v 2 ← 5 , v 3 ← 4 > s'=<v_{1}\leftarrow 1,v_{2}\leftarrow 5,v_{3}\leftarrow 4> s=<v11,v25,v34>,那么我们可以将上述过程用一阶逻辑公式描述为: ( v 1 = 2 ∧ v 2 = 3 ∧ v 3 = 5 ) ∨ ( v 1 ′ = 1 ∧ v 2 ′ = 5 ∧ v 3 ′ = 4 ) (v_{1}=2\wedge v_{2}=3\wedge v_{3}=5)\vee (v'_{1}=1\wedge v'_{2}=5\wedge v'_{3}=4) (v1=2v2=3v3=5)(v1=1v2=5v3=4)

如果R表示变迁关系,那么可以用R(V,V’)来表示上述变迁过程的公式。

从一阶逻辑公式构造KS

我们从一个例子演示如何将一阶逻辑公式转化为Kripke结构

一个系统包含两个变量x和y,x和y的值域为D={0,1},此系统包含一个变迁关系 x : = ( x + y ) m o d    2 x:=(x+y)\mod 2 x:=(x+y)mod2,系统从x=1,y=1对应的状态开始。

这个系统的初始状态集合可以表示为:
S 0 ( x , y ) ≡ x = 1 ∧ y = 1 S_{0}(x,y)\equiv x=1\wedge y=1 S0(x,y)x=1y=1

变迁关系表示为:
R ( x , y , x ′ , y ′ ) ≡ x ′ = ( x + y ) m o d    2 ∧ y ′ = y ( y 没 有 发 生 变 化 ) R(x,y,x',y')\equiv x'=(x+y)\mod 2 \wedge y'=y(y没有发生变化) R(x,y,x,y)x=(x+y)mod2y=yy

根据kripke的定义 M = ( S , S 0 , R , L ) M=(S,S_{0},R,L) M=(S,S0,R,L),来一步一步从一阶逻辑公式中抽取信息

  • 该系统的所有状态用<x,y>有序对来表示,而x和y的值域均为D={0,1},所以<x,y>的所有取值就是D和D的笛卡尔积来计算,S=D×D={<0,0>,<0,1>,<1,0>,<1,1>}
  • 按照描述,系统的初始状态集合为 S 0 ( x , y ) ≡ x = 1 ∧ y = 1 S_{0}(x,y)\equiv x=1\wedge y=1 S0(x,y)x=1y=1,所以初始状态 S 0 S_{0} S0={<1,1>}
  • 们需要从系统的每一个状态开始,分别计算经过变换后系统所达到的新状态。首先计算x=0,y=0的情况,一次变迁后,即计算新的x和y值,得到<(0+0) mod 2, 0>=<0,0>,依次计算其余状态,我们可以得到<1,0> → \rightarrow <1,0>,<1,1> → \rightarrow <0,1>,<0,1> → \rightarrow <1,1>,将其用ks的形式表示为R={(<0,0>,<0,0>),(<1,0>,<1,0>),(<0,1>,<1,1>),(<1,1>,<0,1>)}
  • 标识函数代表着某状态下取值为真的原子命题,即L(<1,1>)={x=1,y=1},L(<0,1>)={x=0,y=1},L(<0,0>)={x=0,y=0},L(<1,0>)={x=1,y=0}

用图像可以表示为:

在这里插入图片描述
既然看好了例子,那么接下来给出正式定义,如何将一阶公式和变迁关系R转变为Kripke结构M:

  • 状态集S是V的所有赋值的集合
  • 初始状态集 S 0 S_{0} S0是V满足公式 S 0 S_{0} S0的赋值集合
  • 另s和s’为两个状态,则R(s,s’)成立仅当每一个v∈V的值为s(v),每一个v’∈V’的值为s(v’)时,R为真
  • 标记函数( L : S → 2 A P L:S\rightarrow 2^{AP} L:S2AP)可以定义成L(s)是s中为真的原子命题子集。如果v是布尔域上的变量,那么v∈L(s)意味着s(v)=True并且v∉L(s)意味着s(v)=False

个人觉得还是根据例子理解转换过程比较合适,这个定义实在是有点难理解

  • 15
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值