4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella
4/5/ Logica di Hoare (correttezza parziale) {P} skip {P} {false} abort {P} {P 1 } S {P 2 } {P 2 } S’ {P 3 } {P 1 } S ; S’ {P 3 } {P C} S 1 {Q} {P ¬ C} S 2 {Q} {P} if C then S 1 else S 2 {Q} {I C} S {I}. {I} while C do S {I ¬C} Asserzione induttiva {P} S {Q}
4/5/ Logica di Hoare P ’ P {P} S {Q} Q Q ’ {P ’ } S {Q ’ } {[x E] P} x:=E {P} correttezza totale {I C 0≤v=V} S {I 0≤v<V} {I 0≤v} while C do S {I ¬C}
4/5/ A B significa che A è più forte di B (perché “non necessariamente vera” quanto B) Minima precondizione Dato {P} S {Q} possiamo calcolarci la minima precondizione [S]Q (trasformatore di predicato) Vale: {P} S {Q} P [S]Q
4/5/ Minima precondizione [ skip ]Q = Q [ abort ]Q = false [ x:= E ]Q = [ x:= E ] Q [ S;S’ ] Q = [S][S’ ]Q [ if B then S1 else S2 ] Q = (B [ S1 ] Q ) ( B [ S2 ] Q) [ while B do S ] Q = ( B Q ) (B [ S; while B do S ] Q)
4/5/ Semantica della logica di Hoare [S]Q è goduta dal più grande insieme di stati dai quali, applicando S, si ottengono stati nei quali vale Q Indichiamo wp (S,Q) con l ’ insieme di questi stati; spesso Identificheremo le due cose pensando wp (S,Q) come una formula Definiamo |= {P} S {Q} S partendo da uno stato in cui vale P, porta in uno stato nel quale vale Q v. Ben Ari, Huth Ryan cap.4
4/5/ Alcuni teoremi
4/5/ Alcuni teoremi
4/5/ Alcuni teoremi
4/5/ Alcuni teoremi
4/5/ Alcuni teoremi
4/5/ Correttezza della logica di Hoare Se |- HL {P} S {Q} allora |= {P} S {Q} Equivalentemente Se |- HL {P} S {Q} allora |= P wp(S,Q)
4/5/ Correttezza della logica di Hoare Osservazione: il ciclo W = while B do S può essere definito induttivamente W° = if B then abort else skip W k+1 = if B then S; W k else skip
4/5/ Correttezza della logica di Hoare Lemma wp (W°,Q) B ( B Q) Dim: wp (W°,Q) = wp ( if B then abort else skip,Q) = (B wp ( abort,Q)) ( B wp ( skip,Q)) = (B false) ( B Q) B ( B Q)
4/5/ Correttezza della logica di Hoare
4/5/ Correttezza della logica di Hoare Lemma k=0,∞ wp (W k,Q) wp (W,Q) Per induzione su k mostriamo wp (W k,Q) wp (W,Q) k=0 wp (W°,Q) B ( B Q) B Q wp (W°,Q) ( B Q) (B wp (S;W,Q)) wp (W°,Q) wp (W,Q)
4/5/ Correttezza della logica di Hoare k>0 wp (W k+1,Q) = wp ( if B then S; W k else skip,Q) wp (W k+1,Q) = (B wp (S; W k,Q)) ( B wp( skip,Q)) wp (W k+1,Q) = (B wp(S, wp(W k,Q)) ( B Q) wp (W k+1,Q) (B wp(S, wp(W,Q))) ( B Q) wp (W k+1,Q) (B wp(S;W,Q)) ( B Q) wp (W k+1,Q) wp (W,Q)
4/5/ Correttezza della logica di Hoare Il caso della concatenazione Se |- HL {P} S 1 ; S 2 {Q} allora |= P wp(S 1 ; S 2,Q) {P} S1 {R} {R} S2 {Q} {P } S1 ; S2 {Q} Per ipotesi induttiva |= {P} S 1 {R} cioè |= P wp(S 1,R) |= {R} S 2 {Q} cioè |= R wp(S 2,Q) Per monotonia |= P wp(S 1, wp(S 2,Q) ) |= P wp(S 1 ; S 2,Q)
4/5/ Correttezza della logica di Hoare
4/5/ Completezza della logica di Hoare Se |= {P} S {Q} allora |- HL {P} S {Q} Equivalentemente Se |= P wp(S,Q) allora |- HL {P} S {Q}
4/5/ Completezza della logica di Hoare Se |= P wp(S,Q) allora |- HL {P} S {Q}
4/5/ Completezza della logica di Hoare Se |= P wp(S,Q) allora |- HL {P} S {Q}