Толық дұрыстық пен жартылай дәлдіктің айырмашылығы неде?


жауап 1:

Толық дұрыстылық туралы мәлімдеме ішінара дұрыстық туралы мәлімдеме де болып табылады. Ішінара дұрыстық әлсіз, өйткені қорытындыға жету үшін «S терминдері» қосымша көмегін қажет етеді: R соңғы күйінде қолданылады.

Ішінара дұрыстығын анықтау үшін {Q} S {R} сіз келесі ақпаратты ала аласыз: егер Q, S сәйкес келетін бастапқы жағдай болса, аяқталуы немесе аяқталмауы мүмкін. Егер S аяқталса, S орындалғаннан кейін, сіз R-ны орындайтын қорытынды күйге жетесіз. Егер жоқ болса, R мүмкін емес, өйткені соңғы күй жоқ.

Мысалы:

{x == 10} кезінде (y! = 0): y = y - 1 x = 0 {x == 0}

Бұл ішінара дәлдік туралы мәлімдеме. Егер у 0-ге тең немесе одан үлкен санмен басталса, S аяқталады, ал x 0-ге тең болады. Егер y теріс саннан басталса, S мәңгі қайталанады, және ол аяқталмағандықтан, сіз күйге жете алмайсыз. 'С. жазаланғаннан кейін'

Шын мәнінде, R кез келген болуы мүмкін, егер S өлі ілмек болса. Мысалы, әр Q және R үшін:

{Q} кезінде (шын): y = y - 1 {R}

әрқашан дұрыстығының ішінара көрсеткіші болып табылады.

Егер Q жеткіліксіз болса, сіз S-дің тоқтатылуына кепілдік бере алмайсыз, S орындалғаннан кейін күйді ақтай алмайсыз. Бұл жағдайда сіз шартты қолмен қосуға болады: S аборттары. Дәлелді Q-пен де жалғастыруға болады.

Толық дəлдік сипаттамасы үшін {Q} S {R} Q Q S тоқтатылатындығына кепілдік бере алады, осылайша S тоқтатылғанын жəне R күйі қанағаттандырылады деп қорытынды жасауға болады.

Мысалы:

{x == 10} кезінде (x! = 0): x = x - 1 {x == 0}

толық дәлдік мәлімдемесі.

Айтпақшы: жауап дұрыс екеніне сенімді емеспін, өйткені сұрақ саяси дұрыстығымен белгіленген. Сұрақтағы анықтама компьютерлік ғылымдағыдай бірдей.