The Rely-Guarantee Method for Verifying Shared Variable Concurrent Program 正确性公理

南楼画角 提交于 2019-12-20 03:56:18

proof system

Assignment axiom

prepost[eˉ/xˉ](prexˉ=eˉ)guarpre stable when relypost stable when relyxˉ:=eˉ sat (pre,rely,guar,post) pre \to post[ \bar e/ \bar x] \\ (pre \land \lceil \bar x'= \bar e \rceil ) \to guar \\ pre \ \underline {stable \ when} \ rely \\ { post \ \underline {stable \ when} \ rely }\\ \overline{ \bar x:= \bar e \ \underline{sat} \ (pre, rely ,guar ,post)}
wherexˉ=eˉ =def(xˉ=eˉx=x)z(yxˉ).z=zwhere \lceil \bar x = \bar e \rceil \ \overset {def}{=} (\bar x' = \bar e \lor x'=x)\land \forall z \in (y- \bar x). z' =z

An example :x:=10 sat (true,x>0xˉx,true,x10) x:=10 \ \underline {sat} \ (true ,x>0 \to \bar x \ge x ,true ,x \ge 10)
证:1prepost[eˉ/xˉ]truex10[10/xˉ]=true 2prexˉ=eˉ)guartruex=10true3pre stable when relytruex>0true 4post stable when relyx10x>0xxx10x:=10 sat (true,x>0xˉx,true,x10)1、pre \to post[ \bar e/ \bar x] \vDash true \to x\ge 10[10/ \bar x] =true\ 成立 \\ 2、pre \land \lceil \bar x'= \bar e \rceil ) \to guar \vDash true \land x'=10 \to true 成立 \\ 3、 pre\ \underline {stable \ when} \ rely \vDash true \land x \gt 0 \to true\ 成立 \\ 4、 post \ \underline {stable \ when} \ rely \vDash x \ge 10 \land x \gt 0 \to x' \ge x \Rightarrow x' \ge 10 成立 \\ x:=10 \ \underline {sat} \ (true ,x>0 \to \bar x \ge x ,true ,x \ge 10) \\

Await axiom

pre stable when relypost stable when relyP sat (preby=v0,y=y,true,guar[v0/y,y/y]post)await b then P end sat(pre,rely,guar,post) pre\ \underline {stable\ when} \ rely \\ post\ \underline {stable\ when }\ rely \\ \underline{ P\ \underline {sat}\ (pre \land b \land y=v_0,y' =y,true,guar [ {v_0/y,y/y'}] \land post)} \\ { await\ b\ then\ P\ end\ \underline {sat} (pre,rely,guar ,post) }

An example : await x>0 then x:=x1  end await \ x\gt 0\ then\ x:=x-1\ \ end
satisfies (x0,x0x0,xx,x0)(x \ge 0,x \ge0 \to x' \ge 0,x' \le x,x \ge 0)

Consequence rule

prepre1,relyrely1,guar1guar,post1postPsat (pre1,rely1,guar1,post1)P sat (pre,rely,guar,post)pre \to pre_1,rely \to rely_1, \\guar_1\to guar, post_1 \to post \\ \underline {P{sat}\ (pre_1,rely_1,guar_1,post_1) } \\P\ \underline{sat}\ (pre,rely,guar,post)

An example: x:=10 sat (x=2,x>0xx,,true,x10x=6)x:=10\ \underline{sat}\ (x=-2,x \gt 0 \to x' \ge x,,true,x \ge10 \lor x=-6)

Sequential composition rule

P sat (pre,rely,guar,mid)Q sat (mid,rely,guar,post)P;Qsat (pre,rely,guar,post) P\ \underline {sat}\ (pre,rely,guar,mid) \\ Q\ \underline{sat}\ (mid,rely,guar,post) \\ \overline{P;Q \underline {sat}\ (pre,rely,guar,post)}

An example:
x:=x+1 sat (xx0,x0xxx,xx,xx0+1)x:=x+1 sat (xx0+1,x0xxx,xx,xx0+2)x:=x+1;x:=x+1 sat (xx0,x0xxx,xx,xx0+2)x:=x+1\ \underline {sat}\ (x \ge x_0,x_0 \le x \to x \le x',x' \ge x,x \ge x_0+1) \\ x:=x+1\ \underline{sat}\ (x \ge x_0+1,x_0 \le x \to x \le x' ,x' \ge x,x \ge x_0+2 ) \\ x:=x+1;x:=x+1\ \underline{sat}\ (x \ge x_0,x_0 \le x \to x \le x',x' \ge x,x \ge x_0+2)

Conditional rule

pre stable when relyPi sat (prebi,rely,guar,post)skip sat (pre¬(b1bn),rely,guar,post)if b1p1bnPn fi sat (pre,rely,guar,post)pre\ \underline{stable\ when }\ rely \\ P_i\ \underline{sat}\ (pre \land b_i,rely,guar,post) \\ skip\ \underline{sat}\ (pre \land \lnot(b_1 \lor \dots \lor b_n),rely ,guar,post) \\ \overline{if\ b_1 \rightarrow p_1 \square \dots \square b_n \to P_n\ fi\ \underline {sat} \ (pre ,rely,guar,post)}

An example: if x<10 x:=10 fi sat (true,xx,x<x,x10)if\ x \lt10\ \to x:=10\ fi\ \underline{sat}\ (true,x \le x',x \lt x',x \ge10) `

x:=10 sat (x<10,xx,xx,x10)and skip sat (x10,x<x,x<x,x10)x:=10\ \underline{sat}\ (x \lt 10,x \le x',x \le x',x \ge 10) \\ and\ skip\ \underline{sat}\ (x \ge 10 ,x \lt x',x \lt x',x \ge 10)

Iteration rule

pre stable when relypre¬bpostpost stable when relyP sat (preb,rely,guar,pre)while b do P od sat (pre,rely,guar,post) pre\ \underline {stable \ when}\ rely \\ pre \land \lnot b \to post \\ post\ \underline{ stable \ when}\ rely \\ \bm P\ \underline{sat} \ (pre \land b ,rely ,guar,pre) \\ \overline{ \bm {while}\ b\ \bm {do}\ P\ \bm {od}\ \underline{sat}\ (pre,rely,guar,post)}

An example:
while b do P od sat (true,xx,xx,x>10) \bm {while}\ b\ \bm{do}\ P\ \bm {od}\ \underline{sat}\ (true,x \le x' ,x \le x' ,x \gt 10)
## Parallel rule
(relyguar1)rely2(relyguar2)rely1(guar1guar2)guarp sat (pre,rely1,guar1,post1)Q sat (pre,rely2,guar2,post2)PQ sat (pre,rely,guar,post1post2) (rely \lor guar_1) \to rely_2 \\ (rely \lor guar_2) \to rely_1 \\ (guar_1 \lor guar_2) \to guar \\ \bm p\ \underline{sat}\ (pre ,rely_1,guar_1,post_1) \\ \bm Q\ \underline{sat}\ (pre ,rely_2,guar_2,post_2) \\ \overline {P || Q \ \underline {sat}\ (pre,rely ,guar ,post_1 \land post_2)}

Auxiliary variable rule

z.pre1(y,z,y0)z.rely1((y,z).(y,z),y0)P sat (prepre1,relyrely1,guar,post)Qsat (pre,rely,guar,post) \exists z. pre_1(y,z,y_0) \\ \exists z'.rely_1((y,z).(y',z'),y_0) \\ \underline{\bm P\ \underline {sat}\ (pre \land pre1,rely \land rely_1,guar,post)}\\ \bm Q \underline{sat}\ (pre,rely,guar,post)

An example:x:=x+1x:=x+1 x:=x+1 || x:=x+1

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!