Aký je rozdiel medzi celkovou správnosťou a čiastočnou správnosťou?


Odpoveď 1:

Celková špecifikácia správnosti je tiež čiastočná špecifikácia správnosti. Čiastočná korektnosť je slabšia, pretože na to, aby sa dospelo k záveru: R je v konečnom stave, je potrebná dodatočná pomoc „S koncoviek“.

Pre špecifikáciu čiastočnej správnosti {Q} S {R} môžete získať nasledujúce informácie: Vzhľadom na počiatočný stav, ktorý vyhovuje Q, S sa môže skončiť alebo nie. Ak S skončí, po vykonaní S dosiahnete konečný stav, ktorý vyhovuje R. Ak nie, R je k ničomu, pretože neexistuje konečný stav.

Napríklad:

{X == 10}
zatiaľ čo (y! = 0):
    y = y - 1
x = 0
{X == 0}

Je to špecifikácia čiastočnej správnosti. Ak je y inicializované nejakým číslom rovným alebo väčším ako 0, S sa ukončí a potom x je 0. Zatiaľ čo ak y začína záporným číslom, S bude navždy opakovať a keďže sa neukončí, nedosiahnete stav ' po vykonaní S “.

V skutočnosti R môže byť čokoľvek, ak S je slepá slučka. Napríklad pre všetky Q a R:

{Q}
while (true):
    y = y - 1
{R}

je vždy čiastočná špecifikácia správnosti.

Ak Q nie je dostatočne silný, nemôžete zaručiť ukončenie S, nehovoriac o stave po jeho vykonaní. V takom prípade môžete ručne pridať podmienku: S končí. V prípade Q a jeho argumentácie môže pokračovať.

Pre úplnú špecifikáciu správnosti {Q} S {R} je Q dostatočne silná, aby zaručila ukončenie S, takže môžete dospieť k záveru, že S sa ukončí a konečný stav vyhovuje R.

Napríklad:

{x == 10}
while (x! = 0):
    x = x - 1
{x == 0}

je celková špecifikácia správnosti.

BTW: Nie som si istý, či je odpoveď správna, pretože otázka je označená politickou korektnosťou. Definícia v otázke vyzerá úplne rovnako ako v informatike.