Dijkstra-féle leggyengébbelőfeltétel-kalkulus
(C,s,C).n>0.n(C,s,C)(n)q [p]C[q]=sp. (C,s,C).n>0.n(C,s,C)(n)q A definícióból következik, hogy rögzített C utasítás és q utófeltétel mellett létezik leggyengébb (legbővebb) p előfeltétel, amely mellett a totális helyesség még fennáll. Ezt jelöli a következőkben wp: wp: Uts Felt Felt weakest precondition wp(C,q) = { s : (C,s,C).n>0.n(C,s,C)(n)q }
A wp függvény alaptulajdonságai: A csoda kizárásának elve wp(C,) = Művelettartás wp(C,q1q2) = wp(C,q1)wp(C,q2) Monotonitás Ha q1 q2, akkor wp(C,q1) wp(C,q2)
A wp függvény és az utasítások: A skip utasítás wp(skip,q) = q A determinisztikus értékadás wp(X:=E,q) = {s: s(X:=E(s))q} A nemdeterminisztikus értékadás wp(X:=?,q) = {s: dD.s(X:=d)q}
A wp függvény és az utasítások: A kompozíció wp((C1;C2), q) = wp(C1,wp(C2,q)) A determinisztikus szelekció wp((BC1C2), q) = (Bwp(C1,q))(Bwp(C2,q)) A nemdeterminisztikus szelekció wp((B1C1 B2C2), q) = (B1B2)(B1wp(C1,q))(B2wp(C2,q))
A wp függvény és az utasítások: Az iteráció Feltételezés: (B*C) nemdeterminizmusa véges. wp((B*C),q) = lkfp(p.((Bq) (Bwp(C,p)))) Ez megegyezik a p-re vonatkozó alábbi egyenlet legszűkebb megoldásával: p = (Bq) (Bwp(C,p)) Ennek megoldása: p0 = Bq, pi+1 = p0 (Bwp(C,pi)) wp((B*C),q) = i0 pi
{p}C{q} = ((pS) C) (Sq) A definícióból következik, hogy rögzített C utasítás és q utófeltétel mellett létezik leggyengébb (legbővebb) p előfeltétel, amely mellett a parciális (az eredménytelen végrehajtást is megengedő) helyesség még fennáll. Ezt jelöli a következőkben wlp: wlp: Uts Felt Felt weakest liberal precondition wlp(C,q) = { s : s'S. (s,s'C s'q) }
A wlp függvény alaptulajdonságai: wlp(C,S) = S Művelettartás wlp(C,q1q2) = wlp(C,q1) wlp(C,q2) Monotonitás Ha q1 q2, akkor wlp(C,q1) wlp(C,q2)
A wlp függvény és az utasítások: A skip utasítás wlp(skip,q) = q A determinisztikus értékadás wlp(X:=E,q) = {s: s(X:=E(s))q} A nemdeterminisztikus értékadás wlp(X:=?,q) = {s: dD.s(X:=d)q}
A wlp függvény és az utasítások: A kompozíció wlp((C1;C2), q) = wlp(C1,wlp(C2,q)) A determinisztikus szelekció wlp((BC1C2), q) = (Bwlp(C1,q))(Bwlp(C2,q)) A nemdeterminisztikus szelekció wlp((B1C1 B2C2), q) = (B1wlp(C1,q))(B2wlp(C2,q))
A wlp függvény és az utasítások: Az iteráció wlp((B*C),q) = lnfp(p.((Bq) (Bwlp(C,p)))) Ez megegyezik a p-re vonatkozó alábbi egyenlet legbővebb megoldásával: p = (Bq) (Bwlp(C,p)) Ennek megoldása: p0 = (Bq) B, pi+1 = (Bq) (Bwlp(C,pi)) wlp((B*C),q) = i0 pi
{p}C{q} = ((pS) C) (Sq) A definícióból következik, hogy rögzített C utasítás és p előfeltétel mellett létezik legerősebb (legszűkebb) q utófeltétel, amely mellett a parciális (az eredménytelen végrehajtást is megengedő) helyesség még fennáll. Ezt jelöli a következőkben slp: slp: Felt Uts Felt strongest liberal postcondition slp(p,C) = { s : s'p. s',sC }
Az slp függvény alaptulajdonságai: slp(,C) = Művelettartás slp(p1 p2 ,C,) = slp(p1,C) slp(p2,C) Monotonitás Ha p1 p2, akkor slp(p1,C) slp(p2,C)
Az slp függvény és az utasítások: A skip utasítás slp(p, skip) = p A determinisztikus értékadás slp(p, X:=E) = {s(X:=E(s)): sp} A nemdeterminisztikus értékadás slp(p, X:=?) = {s: dD. s(X:=d)p} (d itt az X eredeti tartalma)
Az slp függvény és az utasítások: A kompozíció slp(p, (C1;C2)) = slp( slp(p, C1), C2) A determinisztikus szelekció slp(p, (BC1C2)) = slp(pB, C1) slp(pB, C2) A nemdeterminisztikus szelekció slp(p, (B1C1 B2C2)) = slp(pB1, C1) slp(pB2, C2)
Az slp függvény és az utasítások: Az iteráció slp(p,(B*C)) = lkfp(q. (pslp(qB,C)))B Ez megegyezik a q-ra vonatkozó alábbi egyenlet legszűkebb megoldásával: q = p slp((qB), C) Ennek megoldása: q 0 = p, q i+1 = slp((q iB), C) slp(p, B*C) = ( i0 q i) B