现有的语义学大致可以分为4类:操作 语义学、指称语义学、公理语义学和代数语 义学。
在操作语义学中,程序语义的定义由一个 模拟程序解释的形式系统组成,即是一个由程 序所规定的一系列活动的执行过程。
这种方法的中心目的是确定一个解释主语 言抽象程序的抽象机。
机器通过一个离散状态序列来解释程序。
在指称语义学中,程序的指称语义比操 作语义更为抽象。
个 S j , j1…n,Qi(i1…r)是Sj的前置条件, Rk(k1…t)是Sj的后置条件。如果
(j1L n)├( Vsj (Q1,Q2 L ,Qr;R1, R 2,L , R t ))
那么
├{φ}P{ψ}+
3.程序的完全正确性证明
(1)良序集
用FLOYD方法证明程序的终止性,要依 赖于良序集的概念。我们说集合C关于“>” 是良序的,如果对于x、y、zC,有: ● x≠y,那么x>y或y>x;
然而,这种机制在证明验证条件时才被应 用。因此,证明技术不能指导程序的开发。
12.2.6 HOARE的公理方法
1969年,HOARE在FLOYD理论的基 础上,定义了一个小语言和一个逻辑系统, 此逻辑系统含有程序公理和推导规则,目的 在于证明程序的部分正确性。此系统是一阶 谓词逻辑的扩充,这就是著名的HOARE系 统。
5.FLOYD归纳断言法存在的问题
FLOYD归纳断言法的主要缺陷是语法 和语义定义的相互独立性,在程序的开发中 没有形式地考虑它们最终的验证。在证明验 证条件失败的情况下,或者是由于程序的错 误,或者是由于有些断言不能被相应的SV定用 什么语法单位代替有错误的语法单位才能保证 验证条件成立;在后一种情况下,存在一个形 式化机制(变换器SVC)来帮助我们判断在语 法单位运行以后哪个断言是成立的。