Каква е разликата между пълна коректност и частична коректност?


Отговор 1:

Общата спецификация за коректност също е частична спецификация за точност. Частичната коректност е по-слаба, тъй като се нуждае от допълнителна помощ на „S прекратява“, за да стигне до заключението: R е в крайно състояние.

За частична спецификация за коректност {Q} S {R} можете да получите следната информация: Като се има предвид начално състояние, което удовлетворява Q, S може да прекрати или не. Ако S прекрати, след изпълнението на S, ще достигнете до крайно състояние, което удовлетворява R. Ако не, R е безполезен, тъй като няма окончателно състояние.

Например:

{Х == 10}
докато (y! = 0):
    y = y - 1
x = 0
{Х == 0}

Това е частична спецификация за коректност. Ако y се инициализира с някакво число, равно или по-голямо от 0, S ще се прекрати и след това x е 0. Докато, ако y започне с отрицателно число, S ще цикъл завинаги и тъй като не се прекратява, няма да достигнете състояние ' след екзекуцията на S “.

Всъщност R може да бъде всичко, ако S е мъртъв цикъл. Например за всеки Q и R:

{Q}
докато (вярно):
    y = y - 1
{R}

винаги е частична спецификация за коректност.

Ако Q не е достатъчно силен, не можете да гарантирате прекратяването на S, да не говорим за състоянието след изпълнението на S. В този случай можете ръчно да добавите условие: S прекратява. С Q и то разсъжденията могат да продължат.

За пълната спецификация на коректността {Q} S {R}, Q е достатъчно силен, за да гарантира прекратяването на S, така че можете да заключите, че S ще прекрати и крайното състояние удовлетворява R.

Например:

{x == 10}
докато (x! = 0):
    x = x - 1
{x == 0}

е пълна спецификация за коректност.

BTW: Не съм сигурен дали отговорът е правилен, защото въпросът е маркиран с Политическа коректност. Докато определението във въпроса изглежда точно същото като в компютърните науки.