Kuo skiriasi visiškas teisingumas ir dalinis teisingumas?
Atsakymas 1:
Bendroji teisingumo specifikacija taip pat yra dalinė teisingumo specifikacija. Dalinis teisingumas yra silpnesnis, nes reikalinga papildoma „S baigiasi“ pagalba, kad būtų padaryta išvada: R išlaiko galutinę būseną.
Norėdami gauti {Q} S {R} dalinio teisingumo specifikaciją, galite gauti šią informaciją: Atsižvelgiant į pradinę būseną, tenkinančią Q, S gali baigtis arba ne. Jei S pasibaigia, po S vykdymo, jūs pasieksite galutinę būseną, tenkinančią R. Jei ne, R yra nenaudingas, nes galutinės būsenos nėra.
Pavyzdžiui:
{x == 10} o (y! = 0): y = y - 1 x = 0 {x == 0}
Tai yra dalinė teisingumo specifikacija. Jei y yra inicializuotas tam tikru skaičiumi, lygiu ar didesniu kaip 0, S baigsis, o po to x bus 0. Nors jei y prasideda neigiamu skaičiumi, S bus kilpa amžinai, o kadangi jis nesibaigia, nepasieksite būsenos ' po S egzekucijos '.
Iš tiesų, R gali būti bet kas, jei S yra aklavietė. Pavyzdžiui, bet kuriam Q ir R:
{Q} tuo tarpu (tiesa): y = y - 1 {R}
visada yra dalinė teisingumo specifikacija.
Jei Q nėra pakankamai stiprus, negalite garantuoti S nutraukimo, jau nekalbant apie priežastį apie būseną po S įvykdymo. Tokiu atveju galite rankiniu būdu pridėti sąlygą: S baigiasi. Kai Q ir jis, samprotavimas gali tęstis.
Visiškam {Q} S {R} teisingumo specifikacijai Q yra pakankamai stiprus, kad garantuotų S nutraukimą, todėl galite padaryti išvadą, kad S baigsis, o galutinė būsena patenkins R.
Pavyzdžiui:
{x == 10} tuo tarpu (x! = 0): x = x - 1 {x == 0}
yra visiško teisingumo specifikacija.
BTW: Aš nesu tikras, ar atsakymas teisingas, nes klausimas pažymėtas politiniu korektiškumu. Nors klausime pateiktas apibrėžimas atrodo visiškai toks pat kaip ir informatikos moksle.