Hoareova logika

Zo stránky testwiki
Prejsť na navigáciu Prejsť na vyhľadávanie

Hoareova logika alebo Floydova-Hoareova logika je formálny systém logických pravidiel používaný pri verifikácii počítačových programov. Po prvýkrát s ním prišiel britský informatik a logik Charles Antony Richard Hoare v roku 1969, neskôr prešiel niekoľkými úpravami. Pôvodná myšlienka však siaha do prác Roberta Floyda, ktorý vyvinul podobný formálny systém pre vývojové diagramy.

Hoareova trojica

Základným konceptom Hoareovej logiky sú tzv. Hoarove trojice, ktoré popisujú zmenu výpočtového stavu po vykonaní daného príkazu, prípadne programu. Hoarova trojica má tvar

{P}S{Q},

kde S je príkaz, P je tzv. vstupná podmienka a Q je výstupná podmienka. Uvedená Hoareova trojica znamená, že ak pred vykonaním príkazu S platila vstupná podmienka (istá logická formula) P, tak po vykonaní príkazu S bude platiť výstupná podmienka Q.

Axiómy

Formálny systém Hoareovej logiky pozostáva z dvoch axióm:

Axióma prázdneho príkazu

{P} skip {P}

Axiomatická schéma priradenia

{P[E/x]} x:=E {P}

Inferenčné pravidlá

Formálny systém Hoareovej logiky pozostáva z nasledujúcich inferenčných pravidiel:

Kompozičné pravidlo

{P} S {Q} , {Q} T {R}{P} S;T {R}

Alternatívne pravidlo

{BP} S {Q} , {¬BP} T {Q}{P} if B then S else T endif {Q}

Iteratívne pravidlo

{PB} S {P}{P} while B do S done {¬BP}

Pravidlo následku

P P , {P} S {Q} , Q Q{P } S {Q}

Zdroj

Šablóna:Preklad