Kakšna je razlika med popolno pravilnostjo in delno pravilnostjo?


Odgovor 1:

Delna specifičnost pravilnosti je tudi delna specifičnost pravilnosti. Delna korektnost je šibkejša, ker potrebuje dodatno pomoč „S se konča“, da ugotovi: R drži v končnem stanju.

Za delno specifikacijo pravilnosti {Q} S {R} lahko dobite naslednje podatke: Glede na začetno stanje, ki izpolnjuje Q, se lahko S preneha ali ne. Če S preneha, boste po izvedbi S dosegli končno stanje, ki izpolnjuje R. Če ni, je R neuporaben, ker ni končnega stanja.

Na primer:

{x == 10}
medtem ko (y! = 0):
    y = y - 1
x = 0
{x == 0}

Gre za delno natančnost. Če je y inicializirano z nekim številom, enakim ali večjim od 0, bo S prenehal in po tem je x 0. Čeprav se, če y začne z negativnim številom, S zaveže za vedno in ker ne preneha, ne boste dosegli stanja. ' po izvršbi S-ja '.

V resnici je R lahko karkoli, če je S mrtva zanka. Na primer za kateri koli Q in R:

{Q}
medtem ko (resnično):
    y = y - 1
{R}

je vedno delna specifičnost pravilnosti.

Če Q ni dovolj močan, ne morete garantirati S-ovega prenehanja, kaj šele razloga o stanju po izvršbi S-a. V tem primeru lahko ročno dodate pogoj: S preneha. S Q in njim se sklepanje lahko nadaljuje.

Za popolno specifikacijo pravilnosti {Q} S {R} je Q dovolj močan, da zagotavlja prekinitev S, zato lahko sklepate, da bo S prenehal in končno stanje izpolnjuje R.

Na primer:

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

je popolna specifičnost pravilnosti.

BTW: Nisem prepričan, če je odgovor pravilen, ker je vprašanje označeno s politično korektnostjo. Čeprav je definicija v vprašanju videti popolnoma enaka kot v računalništvu.