正在加载图片...
张志天等:一个程序验证器的设计和实现 1049 除S和Q中的别名,得到S和Q' 任何其他变量的值,因此可靠性证明和无别名语言 我们把Hoare逻辑的赋值公理限定为无别名 的Hoare逻辑的赋值公理的可靠性证明没有区别. 时才能使用,并增加下面的消除别名推理规则: 2)对于指针操作语句,在Q中没有别名的情况 {GΛQ"}S'{GΛQ') 下,这些规则对Q的修改都是可靠的。 {G∧Q}S{G∧Q) 以规则{G∧Q}u=o{G∧Q['Iu]}为例.若一 (S',Q)eliminate_liases(G,S,Q), 条访问路径的前缀被替换,则替换前后的访问路径 就可以对含访问路径别名的程序进行推理, 指称同一个数据单元.若是一条完整的访问路径被 对于修改指针型数据的语句,其前断言Q可能 替换,就目前使用的断言语言来说,“只可能作为参 是程序员提供的,例如不排除循环不变式中Q存在 数出现在链表表长函数length(u,结构体的指针型 别名,因此有时也需要这条规则, 域名)中(见第4节例1的前断言),用相等的指针 复合、条件和循环语句的规则以及推论规则的 来代换,则因它们指在同一个节点上而不改变length 形式和Hoare逻辑相应规则的形式一致. 的值. 在没有指针类型的情况下,使用Hoare逻辑的 3)函数eliminate aliases得到的S'和S有同 赋值公理从赋值语句的前断言Q得到后断言Q'时, 样的语义,Q和Q也有同样的含义.类似2),消除别 不用关心Q是否为Q,VQ2的形式.但是在有指针 名前后的访问路径指称同样的数据单元,因此语义 类型的情况下,GVG2代表相应程序点的形状图有 和含义不变 两种可能,需要对它们分别考虑,因此需要增加一条 4)消除别名的推理规则是可靠的.是3)的推论 分情况规则: 5)分情况规则的可靠性.在文献[14]中已经 {G1∧Q}S{G1∧Qi}{G2AQ2}S{G2∧Q2} 证明. {G∧QVG2AQ}S{Gi∧Q1VG2∧Q2} 有了这几点则可以说所用的程序逻辑是可靠的. 先前提到的选取析取范式G∧QVG2AQV… VG。AQ.的一种情况来讨论就是基于这条规则. 3 易变数据结构上数据性质的验证方法 2.3程序逻辑的可靠性证明 本节简要证明2.2节略加扩展的Hoare逻辑 自动程序验证器的验证能力取决于所用的自动 对PointerC语言的操作语义是可靠的(sound). 定理证明器的能力,供程序员描述函数前后断言和 在有栈和堆的机器上,一个形状图再加上分配 循环不变式用的断言语言也是据此来设计的,通用 在栈上的整型和布尔型变量的图形表示就构成程序 的自动定理证明器一般没有针对易变数据结构的性 状态的一种图形表示.这种图形表示的程序状态区 质证明的部分,本节介绍如何将所需证明的性质转 别于通常状态的主要地方是,每个指针的具体值不 化为Z3可以接受的形式. 清楚,但它们之间相等与否是清楚的,因此可以理解 易变数据结构上数据性质的描述,例如链表数 为每个指针有一个抽象值.基于在这样抽象状态上 据的有序性可以通过引人谓词来表示,也可以通过 的操作语义,文献[14]证明了下面两个重要性质: 使用全称量词来表示,本文设计的验证器采用后者, 1)形状图断言的演算规则是可靠的: 例如,可以用下面的断言来描述head所指向的长度 2)形状图逻辑中修改形状图的指针操作语句 为m的单链表的有序性: 的程序推理规则是可靠的, Yi:1..m-1.(head(->next)->data 有了这两个性质,则2.2节的程序推理规则中, head(>next)i-data). 前后断言中的G和G'是可靠的. 在PointerC的布尔类型表达式的基础上,增加 在没有指针类型的情况下,Hoare逻辑的推理 带上角标的左值表达式和预定义的用于各种链表的 规则对通常的操作语义可靠已是众所周知的.因此 函数length,并增加带量词的断言形式,就构成本文 下面仅非形式地证明几个涉及扩展的性质, 验证器提供的断言语言.为便于阅读,本文描述断言 l)对于非指针操作语句,Hoare逻辑的赋值公 所用的逻辑符号并未遵从所设计的断言语言. 理在没有别名的情况下使用是可靠的。 本文验证器采用最强后条件演算的方式来产生 在无别名的情况下,赋值公理{Q[Ex]}x=E{Q} 验证条件.通常在程序员提供断言的地方会产生验 的赋值x=E只改变x的值,不会改变Q中出现的 证条件,例如对程序员提供的每个循环不变式会产V! K@ 6S56$ûü!LK@LD Îό V/319ÎÏS€Ñu~1%56 G§ŸÙm$¥YÖz.SqV56ÐÑÀ¤# )K #@N*!L)K #@L* )K #@*!)K #@L* !!L$@N"A,%.(./0+,-%.07,7!K$!$@"$ AaTP^3(456SVÓ¢£ÐÑD P¿rs’´µS<£$¶ƒ8; @ aŸ nVÓ¼„&S$­è¨UV9:¨ò‚6 @ Š¯ 56$+ï‹GH¹q®€À¤D [;&€@K9:<£SÀ¤TìÐÊÀ¤S ‚K V/319ÎÏálÀ¤S‚m[H ¯æ‹rsՒS¿Àz$Ùm V/319ÎÏS €Ñô€<£Sƒ8;@ ûüæ8;@LG$ ¨mhb@ nJ1@$'@' S‚D#n¯‹rs ՒS¿Àz$K$'K' É=álVÓ¸S›i‹ ŒaŸ$¹qP•Ïà5JK$+ï¹qYÖm€ à¿ÀÀ¤# )K$ #@$*!)KL$ #@L$*)K' #@'*!)KL' #@L'* )K$ #@$ 'K' #@'*!)KL$ #@L$ 'KL' #@L'*D ƒ„üSc«X«÷‚K$#@$'K'#@'', 'K/#@/ Sm¿ÀÃIÊAn/¿®€À¤D =<> 12KL6def4g aÑ?qƒÝ'H'шֺ(S V/319ÎÏ P -/G2891*<;S±²<šnabS!;/02>"H ¯‹dKžS#ÞÍ$m灛i¢ÖÍà ¯dÍS1’KKL’òÅSi= A¦tVÓ ›œSmi= H®i= SVӛœF 5¿M›œSnq‰…n$îçrsSýþ€¨ Æe$#•Ïížáf&JnÆeS$+ïaTх 1îçrs‹mçõö€H/¿¯®Üõö›œÍ S±²<š$bp'$B(ƒÝuz.Œçpqc«# $"›i8;Sä"À¤nabS% '"›iÎÏ6›iSrs±²<£ SVÓÐÑÀ¤nabSH ‹u®Œçc«$¤'H'ÑSVÓÐÑÀ¤6$ ƒæ8;6SK KKLnabSD ¯æ‹rsՒS¿Àz$V/319ÎÏSÐÑ À¤PMS±²<šab!nfšg6SD+ï z.¡"‚‰ƒÝóçVìº(Sc«D $"P¿"rs±²<£$V/319ÎÏS€ ѯæ‹56S¿ÀzÙmnabSD ¯%56S¿Àz$€Ñ)@'F"G(*GZF)@* S€GZF àòG S€$¨Jò @ 6"ÈS èj¶WòÅS€$+ïabcƒÝK%56<; S V/319ÎÏS€ÑSabcƒÝæ‹F5D '"P¿rs±²<£$¯@ 6æ‹56S¿À z$®éÀ¤P@ SDnabSD TÀ¤)K#@**Z6)KL#@'*L"*(*1­D}m €3(4SƒR\ó$¤\óƒæS3(4 rÄFmç´µ¨|D}nm€81S3(4 \ó$A2ƒÙmS8;<;Ê$*àaŸ²1ã ´"ȯÆ==ZÉ´%,/3+#!*$¶¦þSrs’ A6"6!òBÑ­$Sƒ8;"$máfSrs*L ÃÉó$¤+•Ïr¯FmçѸ̈́¨ò%,/3+# S€D ("É´,%.(./0+,-0%.07,7ûüS!LK! ‹F ÜS<š$@LK@ H‹FÜS^šHÕÿ'"$qV5 6ƒæS3(4rÄFÜS´µ¨|$+ï<š K^š¨òH B"qV56SÐÑÀ¤nabSHn("SÐÊH A"à¿ÀÀ¤SabcH¯bp'$B(6!x ƒÝH ‹u®ó¸¤aTŠšmSVÓÎÏnabSH > hijklmnjkfo634WC +¤VÓDƒÞSDƒŸ?«†¿šmS+¤ ~уÝÞSŸ?$&VÓ¼ÁÂÉ´ƒæ8;K 9:¨ò‚mS8;<;HnµïÃj!SHm S+¤~уÝÞmhæ‹sP³ò´µ¶¦Sc «ƒÝSßà$aÑcdèj’š¹ƒÝSc«i @1I(aT­ES‚H ³ò´µ¶¦Í´µc«SÁÂ$­èÆ=´ µS‹ÓcaTˆ‰¾®Ã= $HaT ÙmBÄÅ®Ã= $abj!SDƒÞÒmæX$ ­è$aTmz.S8;ÃÁÂ#,01šrÒSZW 1 ( S¨Æ=S‹Óc# (.#$DD(C$D!#,01!C$/,G+".C$ C$10+0) #,01!C$/,G+".C$10+0"D ¯ -/G2891*SKLՒ=>‚S/iÍ$YÖ ªÍ¹ÃSj€=>‚Kç~šSm¿hÆ=S É´%,/3+#$¥Y֪ŮS8;‚$A¦tab DƒÞ„&S8;<;D1»¿kl$abÁÂ8; šmSÎÏêë¥êmôšj!S8;<;D abDƒÞÒmºÓæ€@ä"S…‚ÃåN Dƒ€@DM¯VÓ¼„&8;S‰…JåND ƒ€@$­èPVÓ¼„&Sîç9:¨ò‚Jå ËÌÍf#mçVÓDƒÞSj!KCÈ $%B)
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有