命题动态逻辑(一)
程序的逻辑是根据将模态[α]与编程语言的每个计算机程序α相关联的想法,是模态逻辑。 然后,在执行程序α之后,将公式[α] A读为:a是真的。 这个想法来自Engeler [1967],Hoare [1969],Yanov [1959],以及制定和学习逻辑语言的其他人可以表达,其中可以表达他们的逻辑语言。 由萨尔威基[1970]首次开发的算法逻辑(AL)和Pratt [1976]阐述的动态逻辑(DL)是正确的这些作品的延续。 我们将在这里专注于DL。 众多论文致力于DL及其变体以及程序验证和数据结构中的许多应用程序表明它构成了研究程序性质的有用工具。 普拉特选择描绘了一个人可能称之为一阶级的DL,并且是他的工作触发了Fischer和Ladner [1979],几年后触发了DL的命题变体。 本文介绍了PDL的介绍,DL的命题变体。
1.简介
2.定义和基本结果
2.1语法和语义
2.2公理化和完整性
2.3可辨赖性和复杂性
3.结构化编程和程序的正确性
3.1 ChaRe微积分
3.2 Hoare Calculus和PDL
3.3总正确性
一些变体
4.1 PDL没有测试
4.2有逆转的PDL
4.3 PDL重复和循环
4.4 PDL与交叉点
结论
参考书目
学术工具
其他互联网资源
相关条目
1.简介
动态逻辑(DL)是表示状态和动态系统事件的模态逻辑。 DLS的语言既是能够表达计算状态的属性的断言语言,以及能够在这些状态之间表达系统转换属性的编程语言。 DLS是计划的逻辑,并允许谈论事务,流程,变更和结果的谈话和原因。
Pratt的原始动态逻辑是一阶模态逻辑。 命题动态逻辑(PDL)是它的命题对应物。 它是在Fischer和Ladner的权利中呈现为逻辑[1979]。 作为命题,PDL的语言不使用术语,谓词或函数。 因此,在PDL中,有两个句法类别:命题和程序。
为了在PDL中发表陈述,我们通常在标记的过渡系统(LTS)方面使用抽象语义。 LTS可以被视为Kripke模型的概括,其中世界之间的过渡或状态是“标记为”标记为“标记”。 估值表明,每个国家都有所在的主题。 从一个状态x标记为π到状态y-noteled xr(π)y的转换,或(x,y)∈r(π) - 在x中开始的indicate,在y中有可能执行程序π的程序。 如果在Y中的命题A是真的,则公式⟨π⟩a在x:即,在状态x中,在满足A的状态下存在的程序π可以执行π。一个识别在⟨π⟩中的一个模态让模态让人想起了模态模态逻辑的可能性(通常指出◊)。 不出所料,也存在相应的必要概念(通常指出的是◻)。 如果A从X可达π可达的每个状态,则在状态X中为真实,则公式[π] A为真。
可以下一步定义复杂程序的可能执行。 例如,程序“第一α,然后β”是复杂的程序,更具体地是序列。 可以通过组合两步转换-A转换来在LT中表示可能的执行,该转换可以通过r(α;β)表示 - x和y表示:在状态下完成的程序α的状态x中存在可能执行z并且在州y完成的程序β中有可能执行。 如果命题A在Y中是真的,则在状态x中是真实的公式⟨α;βa。 程序α和β本身可能是复杂的程序。 还有更多的程序可以用更多的构造表达我们将在适当的时间呈现。
然后以扩展方式看到一个程序:它是LT的一对状态之间的二进制关系。 精确地,它是形式(x,y)的一组成对,使得程序可以在状态x中执行并且可以导致状态y。 另一方面,一个主张是关于国家的陈述; 在状态下是真或假的。 因此,可以以延伸方式看到一个命题:LTS的一组状态是真实的。
使用首字母缩略词PDL,我们将在此方案恰好地提出了具有以下程序构造的命题动态逻辑:序列,非确定性选择,无绑定的迭代和测试。 我们将其介绍在第2节中,以及一些属性和基本结果。 特别是,我们将解决其公务化及其可辨赖性。
Hoare的HOARE COMBULUS [1969]是程序逻辑的标志标志。 它涉及表单{a}α{b}的语句的真实性 - 用前提条件a的程序α总是具有b作为后条件的b,并且公理地定义。 它来自一种严格的方法来推理方案的属性,从而赋予在科学领域中编程某个地方的活动。 Burstall [1974]在模态逻辑与推理方面的推理中看到了类比。 但它的实际工作始于普拉特[1976]后,他被一些学生向他提出了他的课程,他是为课程的逻辑而来的。 PDL来自普兰特对莫尔逻辑形式主义的Hoare的演算的解释。 PDL的成因引入可以在PRATT [1980B]中找到。 通过PDL公式A→[α] B捕获的HOARE-Triple {A} {B}意思是字面意思是,如果A为真,则每次成功终止执行α都将以B为真。 通过这种连接实现,它是一种例程,用于证明HOARE的微积分的初始规则仅使用PDL的公理化。 这是我们将在第3节中详细进行详细的事情,专注于有关结构化计划的正确性的推理。
与PDL相关的附加主题包括通过以各种方式延长或限制PDL获得的许多有趣变体的表达,可解除性,复杂性和完整性的比较功率的结果。 自成立以来,PDL的许多变体都受到了受关注。 这些变体可以考虑确定性程序,限制测试,非常规程序,程序作为自动机,互动和无限计算等自动数据,互补和交叉点等。我们将在第4节中呈现其中一些,为其相对表达提供一些指示者公理化及其计算复杂性。
我们在第5节中得出结论。
2.定义和基本结果
我们在第2.1节中介绍了PDL的语法和语义。 PDL的证明理论在第2.2节中呈现,具有基于完整性的简明和指针。 我们解决了2.3节中可辨赖性和复杂性的问题。
2.1语法和语义
命题动态逻辑(PDL)专为代表和推理程序的命题属性而设计。 其语法基于两组符号:原子公式的可计集φ0和原子序的可数集合π0。 在该基础上复杂的公式和复杂程序定义如下。
每个原子配方是公式。
0(“假”)是公式。
如果a是公式,则¬a(“不是”)是公式。
如果A和B是公式,那么(A 1B)(“A或B”)是公式。
如果α是程序,并且A是公式,则[α] a(从当前状态的每次执行α导致A真实“)是公式。
每个原子计划都是一个程序。
如果α和β是节目,那么(α;β)(“Doα之后是β”)是一个程序。
如果α和β是节目,那么(α∪β)(“DOα或β,非确定性”)是一个程序。
如果α是一个程序,那么α*(“重复α是有限的,但非确定性地确定的,次数”)是程序。
如果A是公式,那么a? (“如果a是真的,则继续,else fail”)是一个程序。
另一个布尔连接1,∧,→和↔以标准方式用作缩写。 另外,我们缩写为⟨α⟩a(“从当前状态的一些执行α导致A为真的状态”),如模态逻辑。 我们为α写αn; ...;α与n出现α。 更正式:
α0:= 1?
αn+ 1:=α;αnalso:
α+:=α;α*
通常有用的是表示无界限的迭代,但至少发生一次。 最后,我们采用了遗漏括号的标准规则。
公式可用于描述在成功执行程序后保持的属性。 例如,公式[ανβ] a的装置,每当程序α或β成功执行时,达到一个状态,而公式⟨(α;β)*⟩a意味着存在α的交替执行序列和β使得达到持有的状态。 语义上讲,公式由一组状态解释,并通过转型系统中的各州的二进制关系解释。 更精确地,PDL公式和程序的含义被解释为标记的转换系统(LTS)M =(W,R,V),其中W是一个非空的世界或状态,R是从原子序机的集合π0中的映射W和V的二进制关系是从原子公式的集合φ0映射到W的子集中。
非正式地,映射R在w的每个原子程序πim关系r(π)上的withed amb上的xr(π)y iff在导通y的x中的执行情况下,而映射v分配给每个原子公式p∈φ0的某些子集V(p),其中x∈V(p)IFF p在状态x中为真。 鉴于我们的读数为0,¬a,a∨b,[α],α;β,ανβ,α*和a,α*,α*和aα*,必须如下电感地延伸,以提供复杂程序和公式的预期含义:
XR(α;β)Y IFF存在一个世界z,使得XR(α)Z和Zr(β)Y
XR(ανβ)Y IFF XR(α)Y或XR(β)Y
XR(α*)y IFF存在非负整数n,存在一系列状态z0,...,zn,使得z0 = x,zn = y和所有k = 1 ... n,zk-1r(α)zk
XR(a?)y iff x = y和y∈v(a)
v(0)=∅
v(¬a)= w∖v(一)
v((a∨b)= v(一)∪v(b)
v([α] a)= {x |对于所有世界y,如果xr(α)y然后y∈v(a)}
如果x∈v(a)那么我们说A在m个x中满足于m,或“m,x sat a”。
模型M =(w,r,v)如下面的段落中规定的m'=(w',r',v')下面规定的
两个标记的过渡系统:m =(w,r,v)(左)和m'=(w',R',V')(右)
呼叫M左侧描绘的LT,右侧所示的LTS。 正式定义,我们具有W = {x1,x2},r(π1)= {(x1,x1)},r(π2)= {(x1,x2)},v(p)=的m =(r,v)。{x1},v(q)= {x2},并且我们具有w'= {y1,y2,y3,y4},π(π1)= {(y1,y2)的m'=(w',r',v')),(y2,y2)},r'(π2)= {(y1,y3),(y2,y4)},v'(p)= {y1,y2},v'(q)= {y3,y4}。 我们有(例如:
m,x1 sat p
m,x2 sat q
m,x1 sat⟨π1⟩p∧⟨π2⟩q
m,x1 sat [π1]p∧[π
*
1
] p
m',y1 sat⟨π
*
1
;π2⟩q
M',Y2 SAT [Π
*
1
] p
M',Y1 SAT [π1∪π2](p∨q)
M',Y3 SAT [π1∪π2] 0
现在考虑公式A.我们说A在M中有效,或者m是所有世界x,x∈v(a)的iff的一个或“m⊨a”的模型。 据说A有效,或“⊨a”,IFF用于所有型号M,m⊨a。 我们说,在m个或m满足A,或“M sat A”,IFF存在一个x∈v(a)。 据说据说是满足的,或“坐SAT”,IFF存在模型M,使得M SAT A.值得注意的是,
坐一个iff而不是
⊨aiff不坐
一些显着的PDL公式是有效的。 (读者可以尝试正式证明它们,或者至少开始在上面显示的少数例子上说服自己。)
⊨[α,β]a↔[α] [β]一个
⊨[α∪β]a↔[α]a∧[β]一个
⊨[α*]a↔a∧[α] [α*]一个
[一个?]b↔(一个→b)
等效,我们可以在他们的双重形式下写下它们。
⟨α;β⟩a↔⟨α⟩⟨β⟩a
⟨α∪β⟩a↔⟨α⟩a∨⟨β⟩a
⟨α*⟩a↔a∨⟨α⟩⟨α*⟩a
⟨a?⟩b↔a∧b
一个有趣的概念涉及用PDL公式表达的信息,其中包含在LT中。 描述为LTS的系统的行为确实通常以其形式略微隐藏。 例如,在简单的检查中,很容易让自己说明上面描绘的两个LTS具有相同的行为,并满足相同的PDL公式。 要完成句法和语义的本节,我们提供了这些索赔的理论基础。
给予两个LTS,可能会询问它们是否满足相同的公式。 分布的概念已成为Kripke模型和标记的过渡系统等同物的标准措施。 LTSS m =(w,r,v)和m'=(w',R',v')之间的分发是它们集合之间的二进制关系z,使得对于W'中的所有世界X和所有世界x',如果xzx'则为w''evel那
对于所有原子甲型p∈φ0,我们有x∈v(p)iffx'əv'(p),
对于所有原子序的原子序π∈π0和所有世界yīw,如果xr(π)y,那么存在一个世界Y'īw'这样的YZY'和X'R'(Π)Y',
对于所有原子序的原子序π∈π0和所有世界y'∈w',如果x'r'(π)是的,那么存在一个世界y∈w,即YZY'和XR(π)y。
我们说,当它们之间存在两种刺激时,两个LTS是Bisimill。
就是在两个B个别LTS中的情况下,对于W'中的所有世界X,如果xzx',则为所有PDL公式A中的所有世界X,那么,就是两种BIMIMILAL LTS M =(W,R,V)和M'=(W',R',V'),如果xzx',则为所有PDL公式a,x∈v(a)iffx'əv'(a)。 因此,当在上述两种刺激定义下两个LTS在双模相似时,如果xzx'则是这种情况
对于所有程序α和所有世界yīw,我们有那个如果xr(α)y,那么存在一个世界Y'īw'这样的YZY'和X'R'(α)Y',
对于所有程序α和所有世界Y'īw',如果x'r'(α)y',那么存在一个世界y∈w,即YZY'和XR(α)y。
因此,人们可以通过仅检查原子序,并安全地外推,以对这些LTSS的比较行为来对比较两个LTS的行为,即使是为了复杂的程序。 我们说PDL的程序构造是安全的双刺激。 参见van Benthem [1998]的精确表征,方案构建是安全的双刺激。
很容易看出上述LTS的两个实例是BIMIMILAR。 上图所示的两个模型M和M'之间的双刺激z可以给出:z = {(x1,y1),(x1,y2),(x2,y3),(x2,y4)}。 状态X1和Y1满足完全相同的PDL公式。 所以x1和y2等等。
2.2公理化和完整性
证明理论的目的是提供有效性的特征 - 属性⊨a在原理和推理规则方面。 在本节中,我们通过对所有公式A的方式依赖于其句法结构的公式来定义用于电感的推动性谓词⊢
⊢aiff。
当然,PDL是经典命题逻辑的延伸。 我们首先预计所有命题Tautologies持有,并允许所有命题推理。 特别地,Modus Ponens是一个有效的规则:来自A和A→B推断B.对于任何程序α,将LTS限制为关系R(α),我们获得了一种Kripke模型,其中模态[α]的逻辑是最弱的命题常规模态逻辑,即逻辑K.因此,PDL包含熟悉的分发AXIOM架构的每个实例
(k)
[α](一个→b)→([α]一个→[α] b)
并在以下推理规则(危险规则)下关闭
(n)
从推断[α] a
如果它是obeys(k)和(n),则模态逻辑是正常的。 正常模态逻辑的重要特性是通过(k),(n)和命题推理可以证明配方[α](a∧b)↔([α] a =α] b)的分配。 单调的规则也可以使用(k),(n)和命题推理:从A→B推断出→[α] b。
PDL是包含以下Axiom Schemas的每个实例的最小常规模态逻辑
(a1)
[α,β]a↔[α] [β]一个(的a2)
[α∪β]a↔[α]a∧[β]一个(3号)
[α*]a↔a∧[α] [α*]一个(页a4)
[一个?]b↔(一个→b)
并在以下推理规则(循环不变规则)下关闭:
(我)
从A→[α]推断→[α*] a
如果x是一组公式,则a是公式,我们说a是从x或“x⊢a”的⊢掉,如果存在序列a0,a1,...一个公式,使得a = a和所有I≤n,ai是一个实例通过推断的规则,X的公理模式或X的公式,或来自序列的早期公式。 此外,⊢aiff; 在这种情况下,我们说a是⊢尺。 x据说是⊢ - 一致的iff而不是x∈0。