Заперечення як відмова

Матеріал з testwiki
Версія від 23:15, 22 березня 2022, створена imported>InternetArchiveBot (Виправлено джерел: 4; позначено як недійсні: 0.) #IABot (v2.0.8.6)
(різн.) ← Попередня версія | Поточна версія (різн.) | Новіша версія → (різн.)
Перейти до навігації Перейти до пошуку

Запере́чення як відмо́ва (Шаблон:Lang-en) — це немонотонне правило висновування в логічному програмуванні, що застосовується для виведення notp (тобто припущення, що p не витримується) з відмови виведення p. Зауважте, що notp може відрізнятися від твердження ¬p логічного заперечення p в залежності від повноти алгоритму висновування, і, таким чином, також і від системи формальної логіки.

Заперечення як відмова було важливою особливістю логічного програмування з найраніших днів як мови програмування Planner, так і мови програмування Пролог. У Пролозі воно зазвичай реалізується прологовими позалогічними конструкціями.

Семантика Planner

У Planner заперечення як відмову може бути реалізовано наступним чином:

if (not (goal p)), then (assert ¬p)

що каже, що якщо вичерпний пошук доведення p завершився відмовою, то стверджувати ¬p.[1] Зауважте, що наведений вище приклад використовує справжнє математичне заперечення, що не може бути виражено в Пролозі.

Семантика Prolog

У чистій Пролог літерали заперечення як відмови вигляду notp можуть зустрічатися в тілі тверджень, і можуть застосовуватися для виведення інших літералів заперечення як відмови. Наприклад, при заданих лише цих чотирьох твердженнях

pqnotr
qs
qt
t

заперечення як відмова виводить nots, notr та p.

Семантика повноти

Семантика заперечення як відмови залишалася відкритим питанням, поки Кейт Кларк [1978] не показав, що воно є коректним по відношенню до повної логічної програми, де, грубо кажучи, «лише» та інтерпретуються як «якщо і лише якщо» (Шаблон:Lang-en), що записується як «» (або Шаблон:Lang-en).

Наприклад, повною системою для наведених вище чотирьох формул є

pqnotr
qst
ttrue
rfalse
sfalse

Правило висновування заперечення як відмови імітує міркування із явним застосуванням повноти, коли заперечуються обидва боки еквівалентності, і заперечення правого боку поширюється донизу аж до Шаблон:Нп. Наприклад, щоби показати notp, заперечення як відмова імітує міркування еквівалетностями

notpnotqr
notqnotsnott
nottfalse
notrtrue
notstrue

В не-пропозиційному випадку ця повна система потребує доповнення аксіомами еквівалентності, щоби формалізувати припущення, що об'єкти з відмінними назвами є відмінними. Заперечення як відмова імітує це відмовою уніфікації. Наприклад, якщо задано лише два твердження

p(a)
p(b) t

то заперечення як відмова виводить notp(c).

Повною системою цієї програми є

p(X)X=aX=b

доповнене аксіомами унікальності назв та аксіомами замкненості області визначення.

Семантика повноти тісно пов'язана як із Шаблон:Нп, так і з Шаблон:Нп.

Семантика автоепістемології

Семантика повноти виправдовує інтерпретування результату notp висновування запереченням як відмовою як класичне заперечення ¬p твердження p. Проте, Шаблон:Нп [1987] показав, що notp також можливо інтерпретувати буквально як «p не може бути показано», «p є невідомим», «p не є переконливим», як в Шаблон:Нп. Автоепістемологічна інтерпретація була в подальшому розвинена Гельфондом та Шаблон:Нп, і є основою програмування наборами відповідей (Шаблон:Lang-en).

Автоепістемологічна семантика чистої прологової програми P з літералами заперечення як відмови отримується шляхом «розширення» P набором замкнених (таких, що не містять змінних) літералів заперечення як відмови Δ, що є стійким у тому сенсі, що

Δ = {notp | p не передбачається P ∪ Δ}

Іншими словами, набір припущень Δ про те, що не може бути показано, є стійким тоді й лише тоді, коли Δ є набором усіх речень, що дійсно не може бути показано програмою P, розширеною набором Δ. Тут, через простоту синтаксису чистих прологових програм, «не передбачається» можна розуміти дуже просто як вивідність із застосуванням самих лише modus ponens та Шаблон:Не перекладено.

Програма може мати нуль, одне або багато стабільних розширень. Наприклад,

pnotp

не має стабільних розширень.

pnotq

має строго одне стабільне розширення Δ = {notq}

pnotq
qnotp

має строго два стабільні розширення, Δ1 = {notp} та Δ2 = {notq}.

Автоепістемологічну інтерпретацію заперечення як відмови можна поєднувати з класичним запереченням, як в розширеному логічному програмуванні та програмуванні наборами відповідей. Поєднуючи ці два заперечення, можна виразити, наприклад,

¬pnotp (припущення про замкненість світу) та
pnot¬p (p витримується за замовчуванням).

Див. також

Виноски

Шаблон:Reflist

Джерела

Посилання