Заперечення як відмоваЗапере́чення як відмо́ва (англ. negation as failure, NAF) — це немонотонне правило висновування в логічному програмуванні, що застосовується для виведення (тобто припущення, що не витримується) з відмови виведення . Зауважте, що може відрізнятися від твердження логічного заперечення в залежності від повноти алгоритму висновування, і, таким чином, також і від системи формальної логіки. Заперечення як відмова було важливою особливістю логічного програмування з найраніших днів як мови програмування Planner, так і мови програмування Пролог. У Пролозі воно зазвичай реалізується прологовими позалогічними конструкціями. Семантика PlannerУ Planner заперечення як відмову може бути реалізовано наступним чином:
що каже, що якщо вичерпний пошук доведення p завершився відмовою, то стверджувати ¬p.[1] Зауважте, що наведений вище приклад використовує справжнє математичне заперечення, що не може бути виражено в Пролозі. Семантика PrologУ чистій Пролог літерали заперечення як відмови вигляду можуть зустрічатися в тілі тверджень, і можуть застосовуватися для виведення інших літералів заперечення як відмови. Наприклад, при заданих лише цих чотирьох твердженнях заперечення як відмова виводить , та . Семантика повнотиСемантика заперечення як відмови залишалася відкритим питанням, поки Кейт Кларк [1978] не показав, що воно є коректним по відношенню до повної логічної програми, де, грубо кажучи, «лише» та інтерпретуються як «якщо і лише якщо» (англ. if and only if), що записується як «» (або англ. «iif»). Наприклад, повною системою для наведених вище чотирьох формул є Правило висновування заперечення як відмови імітує міркування із явним застосуванням повноти, коли заперечуються обидва боки еквівалентності, і заперечення правого боку поширюється донизу аж до атомарних формул[en]. Наприклад, щоби показати , заперечення як відмова імітує міркування еквівалетностями В не-пропозиційному випадку ця повна система потребує доповнення аксіомами еквівалентності, щоби формалізувати припущення, що об'єкти з відмінними назвами є відмінними. Заперечення як відмова імітує це відмовою уніфікації. Наприклад, якщо задано лише два твердження
то заперечення як відмова виводить . Повною системою цієї програми є доповнене аксіомами унікальності назв та аксіомами замкненості області визначення. Семантика повноти тісно пов'язана як із обкреслюванням[en], так і з припущенням про замкненість світу[en]. Семантика автоепістемологіїСемантика повноти виправдовує інтерпретування результату висновування запереченням як відмовою як класичне заперечення твердження . Проте, Майкл Гельфонд[en] [1987] показав, що також можливо інтерпретувати буквально як « не може бути показано», « є невідомим», « не є переконливим», як в автоепістемній логіці[en]. Автоепістемологічна інтерпретація була в подальшому розвинена Гельфондом та Ліфшицем[en], і є основою програмування наборами відповідей (англ. answer set programming, ASP). Автоепістемологічна семантика чистої прологової програми P з літералами заперечення як відмови отримується шляхом «розширення» P набором замкнених (таких, що не містять змінних) літералів заперечення як відмови Δ, що є стійким у тому сенсі, що
Іншими словами, набір припущень Δ про те, що не може бути показано, є стійким тоді й лише тоді, коли Δ є набором усіх речень, що дійсно не може бути показано програмою P, розширеною набором Δ. Тут, через простоту синтаксису чистих прологових програм, «не передбачається» можна розуміти дуже просто як вивідність із застосуванням самих лише modus ponens та універсальної конкретизації[en]. Програма може мати нуль, одне або багато стабільних розширень. Наприклад, не має стабільних розширень. має строго одне стабільне розширення Δ = {} має строго два стабільні розширення, Δ1 = {} та Δ2 = {}. Автоепістемологічну інтерпретацію заперечення як відмови можна поєднувати з класичним запереченням, як в розширеному логічному програмуванні та програмуванні наборами відповідей. Поєднуючи ці два заперечення, можна виразити, наприклад,
Див. такожВиноски
Джерела
Посилання
|
Portal di Ensiklopedia Dunia