Jaký je rozdíl mezi celkovou správností a částečnou správností?


Odpověď 1:

Celková specifikace správnosti je také částečná specifikace správnosti. Částečná korektnost je slabší, protože k tomu, aby bylo možné dospět k závěru, je zapotřebí další pomoc „S zakončení“: R je v konečném stavu.

Pro částečnou specifikaci správnosti {Q} S {R} můžete získat následující informace: Při výchozím stavu, který vyhovuje Q, S může nebo nemusí ukončit. Pokud S skončí, po provedení S dosáhnete konečného stavu, který vyhovuje R. Pokud ne, R je k ničemu, protože neexistuje konečný stav.

Například:

{x == 10}
zatímco (y! = 0):
    y = y - 1
x = 0
{x == 0}

Jedná se o částečnou specifikaci správnosti. Je-li y inicializováno nějakým číslem rovným nebo větším než 0, S se ukončí a poté x je 0. Zatímco když y začíná záporným číslem, S navždy smyčky a protože nekončí, nedosáhnete stavu ' po provedení S “.

Ve skutečnosti R může být cokoli, pokud S je mrtvá smyčka. Například pro všechny Q a R:

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

je vždy částečná specifikace správnosti.

Pokud Q není dostatečně silný, nemůžete zaručit ukončení S, natož důvod o stavu po provedení S. V tomto případě můžete podmínku přidat ručně: S končí. U Q a toho může uvažování pokračovat.

Pro úplnou specifikaci správnosti {Q} S {R} je Q dostatečně silný, aby zaručil ukončení S, takže můžete dojít k závěru, že S skončí a konečný stav vyhovuje R.

Například:

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

je celková specifikace správnosti.

BTW: Nejsem si jistý, zda je odpověď správná, protože otázka je označena politickou korektností. Zatímco definice v otázce vypadá úplně stejně jako v informatice.