正在加载图片...
1048 计算机研究与发展2013,50(5) 不变式推断算法得出各循环的循环不变形状图) 影响符号断言:符号断言中若有以“或u为前缀的 在完成形状分析后,程序验证器进行程序其他 访问路径,则要用和u相等但不是别名的'来代换 性质Q的验证.在{G∧Q}S{G'∧Q'}中,若S不是 u.另一个影响符号断言的场合是,在free语句之后 指针操作语句,则G和G一样,但Q可能不同于Q. 应该删除涉及被释放节点上数据的原子断言. 若S是指针操作语句(指针赋值、分配空间和释放 G中也会有符号断言,附加在浓缩节点上,用来 空间等),则除了G'和G可能不同外,Q'和Q可能 限制它代表结构节点的个数.G的符号断言和Q的 也有一些细微的区别,这是本文下面关注的部分. 符号断言不会有矛盾,但前者有时会给出更准确的 信息,在第4节介绍例1时解释. 2消除访问路径别名的程序验证方法 2.2程序推理规则的扩展 在使用推理规则从语句S的前条件G∧Q产生 程序点数据结构构成的形状有多种可能时,则 后条件G'∧Q时,要保证Q合法、Q和G无重复和 G表示为G1VG2V…VGm,例如图3(b)的循环不 无矛盾 变形状图就是G1VG2的形式.同样,Q也可能是 先考虑S是指针操作语句,修改指针型数据的 Q1VQ2V…VQm的析取形式,例如第4节例1的 简单语句会引起指针值的变化,或者是存储堆块的 循环不变式就是Q:VQ2的形式.完整的断言可以 增减,因而导致形状图的变化.根据2.1节的介绍可 整理成析取范式(disjunctive normal form)G1V 知,对Q的影响是访问路径的替换或者删除部分断 QVG2VQ2V…VGVQ的形式.根据形状图逻 言.先假定Q和S无别名,有别名的情况在考虑非 辑,可以用析取范式的一种情况为例来讨论,写成G 指针操作语句时介绍.下面分各种语句给出规则. ∧Q,G和Q分别为合取形式. 1)指针型赋值语句u=o 程序验证器基于形状图逻辑进行最强后条件演 若u既不是NULL指针也不是悬空指针,则按 算并产生验证条件16],验证条件由Z3自动证明, 下面规则得到后断言: 2.1形状图和符号断言之间的联系 {G∧Q}u=w{G'∧Q[u'Iu]}, 符号断言Q中允许出现指针是否等于NULL 其中,G是由形状分析得到的形状图,Q['|]表示 或两个指针是否相等的断言.例如在第4节例1的 Q中作为访问路径(包括作为前缀情况)的“及其别 循环不变式中,这样的断言用来把其他断言分别联 名用和它们相等且不互为别名的访问路径'代换. 系到1r是否等于NULL两种情况.即使函数前后 2)对指针赋值的其他语句 条件和循环不变式中没有这样的断言,它们也会因 分配空间语句u=malloc(t)和函数调用语句 为出现在条件语句或循环语句的布尔表达式中,而 ret=f(act)有关Q的处理同上面赋值语句的规则 在最强后条件演算过程中被加到Q中,第4节例1 一样 也有这种情况. 3)释放空间语句free(u) Q中指针等于NULL或两个指针相等的断言 释放u指向的节点后,Q中含u或u的别名的 会因为和G中的信息重复而被吸收,或因有矛盾而 原子断言不应再存在,因此规则如下: 使得G∧Q为假. (GAQ)free(u)(GAQ), Q中访问路径的合法性依赖于G.例如,在Q中 其中,Q'由把Q中含u或“的别名的原子断言都删 若出现非指针型的访问路径p->…->data,则忽 除而得到 略>data所剩下的前缀应该是G上到达某个结构 很容易明白,若Q无别名,则这些语句的规则 节点的一条访问路径,若是到达悬空节点、NULL 不会导致Q出现别名,因为它们对Q作的小修改都 节点或不存在这样的路径则都是非法的,若是到达 不会引人别名! 谓词节点则视谓词节点展开后的情况决定。 再考虑非指针操作语句.只要前断言Q和语句 Q中的访问路径之间是否有别名,Q中的访问 S中无别名,则使用Hoare的赋值公理就是可靠的, 路径和下一条语句S中的访问路径之间以及S中 若有别名则可以先用G的信息来消除别名(把互为 的访问路径之间是否有别名都依赖于G,即利用G 别名的访问路径改成都用其中同一条访问路径),然 可以判断 后再用赋值公理.定义函数eliminate._aliases为 在指针操作语句中,在对指针赋值时可能会 (S',Q)=eliminate_aliases(G,S,Q),它根据G消¨ò‚Ð8"†û"h9:S9:¨ò›i'$A( D ¯8t›àXæ$VÓDƒÞ¢£VÓ¶W c«@ SDƒD¯)K#@*!)KL#@L*6$}! ¨n rs±²<£$¤KLKK mÜ$#@LaŸ¨F¿@D }! nrs±²<£!rs€&àžKßë žf"$¤Vu KLKK aŸ¨F-$@LK@ aŸ H‹méDESF5$®nabz.hGSßàD = OPQRSTUV61234WC VÓ¸´µ¶¦¦tS›‹HaŸG$¤ K = 1K$'K'','K/$­èi(!Q"S9:¨ ò›iAn K$ 'K' S‚DF Ü$@ H a Ÿ n @$'@'','@( SX«‚$­èBÑ­$S 9:¨ò‚An @$ '@' S‚D81S8;aT 1Ñt X « ÷ ‚ !>G;P02<8G@92/16345/16"K$ ' @$'K''@' ','KJ '@J S‚D,µ›iÎ Ï$aTmX«÷‚Sm¿À1­ÃIÊ$<tK #@$K K@ à51;«‚D VÓDƒÞ/¿›iÎÏ¢£ºÓæ€@ä "¥åNDƒ€@'$D($Dƒ€@;M(+¤ƒÝD =<; IJB9XFYHZ[6\] êë8;@ 6xy"ÈrsnJf¿ #[KK یçrsnJáfS8;D­è¯BÑ­$S 9:¨ò‚6$®ÜS8;m̶W8;à54 Qü)+-nJf¿ #[KKŒ¿ÀDwÙÉ´ƒæ €@K9:¨ò‚6拮ÜS8;$•ÏHJ+ 1"ȯ€@<£Û9:<£SKL=>‚6$„ ¯ºÓæ€@ä"V6Öü @ 6$BÑ­$ H‹®¿ÀD @ 6rsf¿ #[KK یçrsáfS8; J+1KK 6Ss[p[„MY$Û+‹NO„ ÙûK#@ 1PD @ 63(4S;†cTU¿KD­è$¯@ 6 }"È"rs’S3(4)C$,C$10+0$¤Q ˆC$10+0š#zSƒRlInK Íü>ã綦 ѸSm€3(4$}nü>!Ñ¸&#[KK ѸۨŠ¯®ÜS4¤Dn"†S$}nü> ¾®Ñ¸¤S¾®Ñ¸(læS¿À†~D @ 6S3(4ížnJ‹56$@ 6S3( 4Kzm€<£! 6S3(4ížTì! 6 S3(4ížnJ‹56DTU¿K$wkm K aT78D ¯rs±²<£6$¯Prs* €GaŸJ ÔÕêë8;#êë8;6}‹T* Û* 1ƒRS 3(4$¤qmK*áf#¨n56S*LÃÉó *D›mçÔÕêë8;ST;n$¯&-,,<£íæ lIUVVìßëѸʹµS*8;D K 6HJ‹êë8;$WÖ¯'(ѸÍ$mà uQ•É=¶¦Ñ¸Sç´DK Sêë8;K@ S êë8;¨J‹NO$#ƒX‹GJô"YZ^S s[$¯BÑcd­$G…ßD =<= 12^_`a6bc ¯ÙmÐÑÀ¤ô<£! Sƒ€@K#@ åN æ€@KL#@LG$qdƒ @ ;†&@ KK %p[K %NOD JK! nrs±²<£Drs’´µS ?¨<£Jˆgrs€Sò@$ÛXnŠ‹žŸS Y]$+„C[›iSò@D,µ'D$ÑScda 6$P@ SÔÕn3(4S\óÛXUVßà8 ;DP~@ K! %56$‹56S¿À¯JK" rs±²<£GcdDz.àh<£ô"À¤D $"rs’€<£*Z6 }*¸¨n #[KKrsH¨n!rs$¤~ z.À¤ûüæ8;# )K#@**Z6)KL#@'*L"*(*$ ¶6$KLn;›àXûüS›i$@'*L"*(=  @ 6²13(4!_`²1ƒR¿À"S*ì¶5 6mK•Ïáfب¾156S3(4*LÉóD '"Prs€S¶W<£ àž<£*Z(0%%$"!+"KÉ´Ôm<£ -,+Z&!0"+"‹h @ S]ÑFÍ.€<£SÀ¤ mÜD ("ß띞<£&-,,!*" ßë*rÒSѸæ$@ 6^* Û* S56S *8;¨l¢Š¯$+ïÀ¤èz# )K#@*&-,,!*")KL#@L*$ ¶6$@L;Œ@ 6^* Û* S56S*8;DU V„ûüD _`³Ýa$} @ %56$¤®é<£SÀ¤ ¨JC[@L"È56$+1•ÏP@ ²S»D ¨Jˆ‰56D ¢JK"rs±²<£Dàqƒ8; @ K<£ ! 6%56$¤Ùm V/319S€ÑAnabSD }‹56¤aTmK Ss[ÃqV56!Œ¾1 56S3(4tDm¶6Fm€3(4"$, æ¢ m  €  ÑD~ š É ´,%.(./0+,-0%.07,7 1 !!L$@L"Z,%.(./0+,-0%.07,7!K$!$@"$•,µ K q $%BE !"#$%&'( '%$($A%!A"
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有