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.