Mitä eroa on täydellisyyden ja osittaisuuden välillä?


Vastaus 1:

Koko oikeellisuusmäärittely on myös osittainen oikeellisuusmäärittely. Osittainen oikeellisuus on heikompaa, koska se tarvitsee 'S päättyy' -apua päästäkseen johtopäätökseen: R pysyy lopullisessa tilassa.

Osittaista oikeellisuusmäärittelyä {Q} S {R} varten saat seuraavat tiedot: Kun Q-tyydyttävä aloitustila, S voi lopettaa vai ei. Jos S päättyy, S: n suorittamisen jälkeen saavut lopullinen tila, joka tyydyttää R: n. Jos ei, R on hyödytön, koska lopullista tilaa ei ole.

Esimerkiksi:

{X == 10}
kun taas (y! = 0):
    y = y - 1
x = 0
{X == 0}

Se on osittainen oikeellisuusmäärittely. Jos y alustetaan luvulla, joka on yhtä suuri tai suurempi kuin 0, S lopettaa ja sen jälkeen x on 0. Vaikka y alkaa negatiivisella numerolla, S kiertää ikuisesti, ja koska se ei lopu, et saavuta tilaa ' S: n teloituksen jälkeen '.

R voi todellakin olla mikä tahansa, jos S on kuollut silmukka. Esimerkiksi jokaiselle Q: lle ja R: lle:

{Q}
kun taas (totta):
    y = y - 1
{R}

on aina osittainen oikeellisuusmäärittely.

Jos Q ei ole tarpeeksi vahva, et voi taata S: n irtisanomista, puhumattakaan syistä S: n toteutuksen jälkeisestä tilasta. Tässä tapauksessa voit lisätä ehdon manuaalisesti: S päättyy. Q: n ja sen kanssa päättely voi jatkua.

Täydellisen oikeellisuuden määrittämiseksi {Q} S {R} Q on riittävän vahva takaamaan S: n päättymisen, joten voit päätellä, että S loppuu ja lopullinen tila täyttää R: n.

Esimerkiksi:

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

on täydellisen oikeellisuuden määrittely.

BTW: En ole varma, onko vastaus oikea, koska kysymys on merkitty poliittisella korrektiudella. Vaikka kysymyksessä oleva määritelmä näyttää täsmälleen samalta kuin tietotekniikassa.