Ця стаття є сирим з англійської мови. Можливо, вона створена за допомогою машинного перекладу або перекладачем, який недостатньо володіє обома мовами. (березень 2018) |
Логі́чне програмува́ння — парадигма програмування, та також розділ дискретної математики, що вивчає методи і можливості цієї парадигми, засновані на виведенні нових фактів з даних фактів відповідно із заданими логічними правилами. Логічне програмування засноване на теорії математичної логіки. Найвідомішою мовою логічного програмування є Prolog, що є за своєю суттю універсальною машиною виводу, що працює в припущенні замкненості системи фактів.
Першою мовою логічного програмування була мова Planner, в якій була закладена можливість автоматичного виведення результату з даних і заданих правил перебору варіантів. Planner використовували для, зниження вимог до обчислювальних ресурсів (за допомогою методу пошуку з поверненням) і для виведення фактів без активного використання стеку. Потім була розроблена мова Prolog, яка не вимагала плану перебору варіантів і була, в цьому сенсі, спрощенням мови Planner.
На основі ідей Planner були створені такі мови логічного програмування, як: , , і . Мови програмування [en], [en], [en] і [en] були створені на основі Prolog. На основі мови Planner було розроблене також декілька альтернативних мов логічного програмування, не заснованих на методі пошуку з поверненням, наприклад, .
Історія
Використання математичної логіки для представлення і виконання комп'ютерних програм також є властивістю лямбда-числення, розробленого Алонзом Черч в 1930-х роках. Однак, першим запропонував використовувати кон'юнктивну нормальну форму логіки для представлення комп'ютерних програм — Корделл Грін. Було використано аксіоматизацію підмножини LISP разом з представленням відношення вводу-виводу для обчислення відношення шляхом моделювання виконання програми в LISP. З іншого боку, мова Absys, розроблена Фостером і Елкоком, використовувала комбінацію рівнянь і лямбда-числення у вигляді тверджень без обмежень на порядок виконання операцій.
Логічне програмування в нинішньому вигляді можна простежити до дискусій в кінці 1960-х і початку 1970-х років про порівняння декларативного і процедурного представлення знань в штучному інтелекті. Прихильники декларативного представлення, працювали в Стенфорді, пов'язані з Джоном Маккарті, [en] і [en], а також в Единбурзі з Джоном Аланом Робінсоном (академічним гостем із [en]), [en] і Робертом Ковальські. Прихильники процедурного представлення були в основному зосереджені в Массачусетському технологічному інституті під керівництвом Марвіна Лі Мінського та Сеймура Пейперта.
Хоча Planner був заснований на методах доведення логіки, розроблений Карлом Хьюіттом в Массачусетському технологічному інституті, він став першою мовою, що з'явилася в рамках цієї процесуалістичної парадигми.Planner показував шаблонне звернення процедурних планів від цілей (наприклад, метаскорочення або зворотний ланцюжок) і від тверджень (тобто прямий вивід). Найбільш впливова реалізація Planner була підмножиною під назвою Micro-Planner, реалізованого [en], [en] і Террі Виноградом. Він був використаний для реалізації програми WinRED з вивченням природної мови SHRDLU, яка була орієнтиром в той час. Щоб впоратися з дуже обмеженими системами пам'яті, Планувальник використовував структуру управління зворотним трасуванням, щоб одночасно зберігати тільки один можливий шлях обчислення. Планувальник привів до появи мов програмування таких як: QA-4, Popler, Conniver, QLISP і паралельні мови Ether.
Гейс і Ковальський в Единбурзі намагалися узгодити логічний підхід декларативного підходу до подання знань з процедурних підходів Планера. Hayes (1973) розробив екваціональну мову, Golux, в якому різні процедури можуть бути отримані шляхом зміни поведінки доведення теорем. Ковальський, з іншого боку, розробив SLD-резолюція, варіант SL-резолюції і показав, як він розглядає наслідки «процедури скорочення мети». Ковальський співпрацював з [en] в Марселі, який розробив ці ідеї при розробці та впровадженні мови програмування Prolog.
[en] була створена для підтримання логічного програмування в 1986 році.
У Prolog з'явилися мови програмування [en], [en], [en], [en], [en], [en], [en], XSB і [en], а також безліч мов [en], мови [en] і Datalog.
Формальна логіка як основа логічного програмування. Метод резолюцій
Для будь-якої системи логічного програмування характерним є те, що для виконання програми (побудови виведення результату) використовується вмонтована система автоматичного пошуку. Механізм пошуку логічного висновку Prolog-у бере свій початок від методу резолюцій Робінсона. Правило резолюції виведення логічного висновку працює наступним чином: дві фрази можуть резольвувати між собою, коли одна з них має позитивний, а друга — негативний літерал з одним і тим самим позначенням предиката та однаковою кількістю аргументів і в разі, якщо аргументи обох літералів можуть бути уніфіковані (погоджені). Наприклад, фраза P(a, b) o Q(c, d) і фраза Q(c, d) o R(b, c) дають резольвенту P(a, b) o R(b, c). Якщо ж аргументом відношення є змінна, то вона уніфікується з константою, а резольвента буде мати дану константу на місцях попереднього розташування змінної. Розглянемо дві фрази спеціального вигляду: Р(а) — висловлювання без умови і oP(а) — умова без висловлювання. Наявність цих двох фраз в одній теорії є протиріччям. Якщо вони резольвуються між собою, тоді отримана резольвента називається порожньою фразою. Якщо при резолюції двох фраз, що входять до складу теорії, отримується порожня фраза, то теорія буде непослідовною.
Концепції
Логіка і управління
Логічне програмування можна розглядати як контрольований висновок. Важливою концепцією у логічному програмуванні є розділення програм на їх логічний компонент і їх компонент управління. З чистими логічними мовами програмування, тільки логічний компонент визначає отримані рішення. Компонент управління може бути змінений для забезпечення альтернативних способів виконання логічної програми. Це поняття зафіксовано гаслом: Алгоритм = Логіка + Управління. Де «Логіка» являє собою логічну програму, а «Контроль» являє собою різні стратегії доказу теорем.
Рішення проблем
У спрощеному пропозиціональному випадку, коли логічна програма і атомна мета верхнього рівня не містять змінних, зворотне міркування визначає [en], яке являє собою простір для пошуку рішення завдання. Мета верхнього рівня — корінь дерева. Для будь-якого вузла у дереві і будь-якої пропозиції, головка якого збігається з вузлом, існує набір дочірніх вузлів, відповідних під цілі в тексті пропозиції. Ці дочірні вузли групуються разом «і». Альтернативні набори дітей, відповідні альтернативні способи вирішення вузла, групуються разом «або».
Будь-яка пошукова стратегія може використовуватися для пошуку цього простору. У Prolog використовується послідовна стратегія «назад-у-перших», зворотне трасування, в якій одночасно розглядається тільки одна альтернатива і одна підціль. Можливі також інші стратегії пошуку, такі як паралельний пошук, інтелектуальний відкат або кращий початковий пошук для пошуку оптимального рішення.
У більш загальному випадку, коли змінні спільного використання під цілей можуть використовуватися, можна використовувати інші стратегії, такі як вибір найбільш підходящої під цілі або достатнього примірника, так що застосовується тільки одна процедура. Такі стратегії, які використовуються, наприклад, при [en].
Заперечення як відмова
Для більшості практичних додатків, а також для додатків, які вимагають немонотонного міркування в штучному інтелекті, логічні програми клаузули Хорна необхідно поширювати на звичайні логічні програми з негативними умовами. Положення в нормальній логічній програмі має вигляд:
читається декларативно як логічне вираження:
де H та всі і — атомні формули. Заперечення негативних літералах, а не , зазвичай називається «запереченний збій», оскільки в більшості реалізацій показано негативна умова, а не , показуючи, що позитивна умова не виконується. Наприклад:
canfly(X) :- bird(X), not abnormal(X). abnormal(X) :- wounded(X). bird(john). bird(mary). wounded(john).
Враховуючи мету знайти щось, що може літати:
:- canfly(X).
Існує два рішення, які вирішують першу під цільну птицю (X), а саме X = john і X = mary. Друга під ціль не є ненормальним (john) для першого рішення, кандидату не вдається, бо поранений (john) досягає успіху отже і ненормальний (john) досягає успіху. Тим не менш, друга під ціль не є ненормальним (mary) для другого рішення, кандидат успішний, бо поранений (mary) але зазнає невдачу, а отже і ненормальний (mary) зазнає невдачі. Отже, X = mary — єдине рішення цілі.
Мікро-планувальник який було побудовано, називається «thnot», який при нанесенні на вираз повертає значення True, якщо (і тільки якщо) оцінка вираження завершується. Еквівалентний оператор зазвичай вбудований в сучасний «Пролог». Це зазвичай пишуться not(Goal)
або \+ Goal
, де Goal
є (пропозиція) для програми. Цей оператор відрізняється від заперечення в логіці першого порядку: заперечення, наприклад \+ х == 1
завершується, коли змінна х
зв'язана з атомом 1
, але він досягає успіху у всіх інших випадках, у тому числі, коли x
є неприв'язаний. Це робить міркування у Пролозі немонотонно: х = 1, \+ х == 1
і завжди зазнає невдачі, А \+ Х == 1, х = 1
може досягти успіху, прив'язки до 1
в залежності від x
,якщо x
був спочатку прив'язаний (зверніть увагу, що стандартний Пролог виконує цілі зліва направо).
Логічний статус заперечення як невдачі, так і залишився невирішеним, поки Кейт Кларк [1978] показали, що при певних природних умовах, це правильне (а іноді і повне) виконання класичного заперечення щодо завершення програми. Завершення приблизно збігається з набором всіх пропозицій програми, з тим же предикатом на лівій стороні, скажімо: H :- Body1.
- …
- H :- Bodyk.
- Визначення предиката
H iff (Body1 or … or Bodyk)
де «iff» означає «якщо і тільки якщо». Написання завершення також вимагає явного використання предиката рівності і включення набору відповідних аксіом для рівності. Тим не менш, реалізація заперечення невдачею вимагає тільки if-половин визначень без аксіом рівності.
Наприклад, завершення вищенаведеної програми:
canfly(X) iff bird(X), not abnormal(X). abnormal(X) iff wounded(X). bird(X) iff X = john or X = mary. X = X. not john = mary. not mary = john.
Поняття завершення тісно пов'язано з семантикою [en] Маккарті для аргументації за замовчуванням і [en].
В якості альтернативи семантики завершення, заперечення як невдача може інтерпретуватися епістемічно, як і в семантиці стійких моделей та у відповідь множин програмування. У цій інтерпретації () не означає буквально, що не відома або не враховується. Епітимічна інтерпретація має перевагу, що її можна комбінувати дуже просто з класичним запереченням, як у «розширеному логічному програмуванні», для формалізації таких фраз, як «протилежне не можна показати», де «навпаки» є класичним запереченням і «навпаки не може бути показаним» є епістичною інтерпретацією заперечення як невдачі.
Представлення знань
Той факт, що пропозиції Хорна можуть бути дані процедурної інтерпретацією, і навпаки, що процедури усунення мети можна зрозуміти як пропозиції Хорна + зворотнє міркування означає, що логічні програми об'єднують декларативні і процедурні представлення знань. Включення заперечення як відмови означає, що логічне програмування є свого роду немонотонною логікою.
Попри свою простоту порівняно із класичною логікою, ця комбінація пропозицій Хорна і заперечення невдачі виявилася напрочуд виразним. Наприклад, він забезпечує природне подання для здорового глузду законів причини і слідства, а формалізується як ситуаційне числення та [en].Було також показано, що він цілком природно відповідає напівформальній мові законодавства. Зокрема, Праккен і Сартор кредитують подання Британського закону про громадянство як логічної програми будучи «надзвичайно впливовим для розробки обчислювальних уявлень законодавства, показуючи, як логічне програмування дозволяє інтуїтивно привабливими уявленнями, які можуть бути безпосередньо розгорнуті для створення автоматичних висновків».
Prolog
Пролог (англ. Prolog) — мова логічного програмування загального призначення, пов'язана зі штучним інтелектом та математичною лінгвістикою.
Пролог має корені в логіці першого порядку, математичній логіці, та, на відміну від багатьох інших мов програмування, є декларативною: логіка програми виражається в термінах відношень, представлених як факти та правила. Обчислення ініціюється запуском запиту над цими відношеннями.
Цю мову програмування спочатку було задумано групою навколо Алана Кольмерое в Марселі на початку 1970-тих, а першу систему Пролог було розроблено в 1972-му Аланом Кольмерое та Філіпом Русселем.
Пролог була однією з перших логічних мов програмування, й залишається найпопулярнішою серед таких мов і на сьогодні, маючи декілька безкоштовних та комерційних реалізацій. Її застосовували як для доведення теорем, експертних систем, так і для її початкової області призначення, обробки природної мови. Сучасні середовища Прологу підтримують як створення графічних інтерфейсів користувача, так і адміністративні або мережеві застосування.
Пролог добре підходить для розв'язання специфічних задач, що виграю́ть від логічних запитів на базі правил, таких як пошук базами даних, системи голосового керування та заповнення шаблонів.
Варіанти та розширення
Абдуктивне логічне програмування
Абдуктивне логічне програмування — це розширення нормального логічного програмування, яке дозволяє деяким предикатам, оголошеним як предикати, бути «відкритими» або невизначеними. Речення в логічній програмі абдуктивної логіки має вигляд:
де H — атомна формула, яка не є неприводимою, всі є текстовими значеннями, предикат яких не є неприводимим, а — атомними формулами, предикат яких є неприводимим. Неприводимі предикати можуть бути обмежені обмеженнями цілісності, які можуть мати форму:
де — довільні літерали (визначені або неприводимі, а також атомні або негативні). Наприклад:
canfly(X) :- bird(X), normal(X). false :- normal(X), wounded(X). bird(john). bird(mary). wounded(john).
де нормаль предиката є неприводимою.
Рішення проблем досягається шляхом виведення гіпотез, що виражаються в термінах відтворюваних предикатів, як рішень розв'язуваних завдань. Цими проблемами можуть бути або спостереження, які необхідно пояснити (як у класичних [en]), так і цілі, які необхідно вирішити (як у звичайному логічному програмуванні). Наприклад, гіпотеза нормальна (mary) пояснює наглядову метелика (mary). Більше того, та ж сама гіпотеза тягне за собою єдине рішення X = mary мета знайти щось, що може літати:
: - canfly ( X ).
Логічне програмування абдукції було використано для діагностики несправностей, планування, обробки природної мови і машинного навчання. Він також використовувався для інтерпретації Заперечення як Відмова як форми абдуктивного міркування.
Металогічне програмування
Оскільки математична логіка має давню традицію розрізнення між [en] і метамовою, логічне програмування також дозволяє . Найпростіша металогічна програма — це так званий мета-інтерпретатор «ванілі»:
solve(true). solve((A,B)):- solve(A),solve(B). solve(A):- clause(A,B),solve(B).
де true являє собою порожню кон'юнкцію, а пропозиція (A, B) означає, що існує пропозиція рівня об'єкта форми A: — B.
Метаномічне програмування дозволяє комбінувати уявлення об'єктів і метарівнів, як на природній мові. Він також може використовуватися для реалізації будь-якої логіки, яка задається за допомогою правил виведення. Metalogic використовується в логічному програмуванні для реалізації метапрограм, які маніпулюють іншими програмами, базами даних, базами знань або аксіоматичними теоріями в якості даних.
Програмування логіки обмежень
- Основна стаття: [en]
[en] поєднує в собі [en] Horn з рішенням обмеження. Він розширює пропозиції Хорна, дозволяючи деяким предикатам, оголошеними предикатами обмеження, зустрічатися як літерали в сукупності статей. Логічна програма обмеження являє собою набір пропозицій виду:
де H та всі - атомні формули, а — обмеження. Декларативно такі положення розглядаються як звичайні логічні наслідки: H, якщо
Однак, у той час як предикати є в главах розділів і визначаються програмою логіки обмежень, предикати обмеження зумовлені певною теоретико-просторовою структурою або теорією.
Процедурні під цілі, предикат який визначається програмою, вирішуються шляхом усунення мети, як у звичайному логічному програмуванні, але обмеження перевіряються на здійснимість за допомогою спеціалізованого вирішувача обмежень, який реалізує семантику предикатів обмежень. Вихідна задача вирішується шляхом її скорочення до здійсненним кон'юнкції обмежень.
Наступна логічна програма обмеження являє собою іграшкову тимчасову базу даних історії Джона як вчителя:
teaches(john, hardware, T) :- 1990 ≤ T, T < 1999. teaches(john, software, T) :- 1999 ≤ T, T < 2005. teaches(john, logic, T) :- 2005 ≤ T, T ≤ 2012. rank(john, instructor, T) :- 1990 ≤ T, T < 2010. rank(john, professor, T) :- 2010 ≤ T, T < 2014.
Тут ≤ та < — предикати обмеження, з їх звичайною передбачуваною семантикою. Наступне речення мети запитує базу даних, щоб дізнатися, коли Джон викладав логіку і був професором:
:- teaches(john, logic, T), rank(john, professor, T).
Рішенням є : 2010 T, T 2012.
Логічне програмування обмежень використовувалося для вирішення проблем у таких галузях, як цивільне будівництво, машинобудування, цифрова електроніка, автоматизоване планування та диспетчеризація, управління повітряним рухом і фінанси. Він тісно пов'язаний з [en].
Паралельне логічне програмування
- Основна стаття: [en]
Паралельне логічне програмування об'єднує концепції логічного програмування з паралельним програмуванням. Його розвиток отримав великий поштовх у 1980-х роках за його вибором для мови системного програмування японського проекту п'ятого покоління (FGCS).
Паралельна логічна програма являє собою набір захищених диз'юнктів Горна форми:
Кон'юнкція називається захистом пропозиції, а | є оператором зобов'язання. Декларативно охоронювані положення Горна читаються як звичайні логічні наслідки: H, якщо
Тим не менш, процедурно, коли є кілька пропозицій, голови H яких відповідають заданої мети, тоді всі параграфи виконуються паралельно, перевіряючи, чи перебувають їх гвардії . Якщо огорожі більш ніж однієї пропозиції зберігаються, то в один з пропозицій робиться рішучий вибір, а виконання виконується з допомогою під цілей вибраної пропозиції. Ці під цілі можуть також виконуватися паралельно. Таким чином, паралельне логічне програмування реалізує форму «не піклується про недетермінізм», а не «не знає недетермінізм».
Наприклад, наступна паралельна логічна програма визначає предикат shuffle (Left, Right, Merge) , який можна використовувати для перемішування двох списків вліво і вправо, об'єднуючи їх в один список Merge, який зберігає порядок двох списків вліво і вправо:
shuffle ([], [], []). shuffle ( Left , Right , Merge ) : - Left = [ First | Rest ] | Merge = [ First | ShortMerge ], shuffle ( Rest , Right , ShortMerge ). shuffle ( Left , Right , Merge ) : - Right = [ First | Rest ] | Merge = [ First | ShortMerge ], shuffle ( Left , Rest , ShortMerge ).
Представляє [ ] порожній список, а [Head|Tail] представляє список з першим елементом Head, за яким слідує список Tail, як Prolog. (Зверніть увагу, що перше входження | у другому і третьому реченнях є конструктором списку, тоді як друге входження | є оператором зобов'язання.) Програма може використовуватися, наприклад, для перетасовки списків [ace, queen, king ] та [1, 4, 2], викликаючи пропозицію цілі:
shuffle([ace, queen, king], [1, 4, 2], Merge)
Програма буде детерміновано генерувати одне рішення, наприклад Merge = [ace, queen, 1, king, 4, 2].
Можливо, паралельне логічне програмування засноване на передачі повідомлень і, отже, піддається тій же невизначеності, що і інші паралельні системи передачі повідомлень, такі як «Актори» (див. [en]»). Карл Хьюітт стверджував, що паралельне логічне програмування не засноване на логіці в його розумінні того, що обчислювальні етапи не можуть бути логічно виведені. Однак у паралельному логічному програмуванні будь-який результат завершального обчислення є логічним наслідком програми, і будь-який частковий результат часткового обчислення є логічним наслідком програми і залишкової мети (мережі процесів). Отже, невизначеність обчислень є наувазі, що не всі логічні наслідки програми можуть бути виведені.
Паралельне програмування логіки обмеження
- Основна стаття: [en]
[en] об'єднує паралельне логічне програмування та [en], використовуючи обмеження для управління паралелізмом. Пропозиція може містити охорону, яка являє собою набір обмежень, які можуть блокувати застосовність цієї пропозиції. Коли захист кількох пропозицій виконується, паралельне програмування логіки обмежень робить рішучий вибір для використання тільки одного.
Індуктивно логічне програмування
- Основна стаття: [en]
Індуктивне логічне програмування пов'язане з узагальненням позитивних і негативних прикладів у контексті фонових знань: машинне навчання логічних програм. Недавня робота в цій області, що поєднує логічне програмування, навчання і ймовірність, породила нову область [en] та [en].
Об'єктно-орієнтоване логічне програмування
[en] розширює логічне програмування об'єктами та синтаксисом фреймів. Багато систем базуються на F-logic, включно з [en]FLORID [ 24 березня 2017 у Wayback Machine.], і високомаштабовною комерційною системою .
[en] розширює Пролог підтримкою об'єктів, протоколів та інших понять ООП.
Лінійне логічне програмування
Логічне програмування на основі логіки в [en] призвело до створення мов логічного програмування, які значно виразніші, ніж ті, які засновані на класичній логіці. Програми пропозиції Horn можуть представляти тільки зміну станом шляху, зміни аргументів в предикаті. У лінійному логічному програмуванні можна використовувати лінійну логіку для підтримки зміни стану. Деякі ранні розробки логічних мов програмування на основі лінійної логіки включають LO [Andreoli & Pareschi, 1991], Lolli, [14] ACL, і Forum [Miller, 1996]. Форум забезпечує цілеспрямовану інтерпретацію всієї лінійної логіки.
Програмування логіки транзакцій
[en] — це розширення логічного програмування з логічної теорією оновлень, що змінюють стан. Він має як теоретико-модельну семантику, так і процедурну. Реалізація підмножини логіки транзакцій доступна в системі [en]. Інші прототипи також доступні.
Логічне програмування вищого порядку
Деякі дослідники розширюють логічне програмування можливостями програмування вищого порядку успадкованих від [en], таких як предикати-змінні. Реалізацією є наприклад розширення мови Пролог такі як [en] and [en].
Примітки
- Cordell Green (1969). Application of Theorem Proving to Problem Solving. IJCAI 1969.
- J.M. Foster and E.W. Elcock. ABSYS 1: An Incremental Compiler for Assertions: an Introduction, Machine Intelligence 4, Edinburgh U Press, 1969, pp. 423–429
- R.A.Kowalski (July 1979). Algorithm=Logic + Control. Communications of the ACM. 22 (7): 424—436. doi:10.1145/359131.359136.
Див. також
Література
- Логічне і функціональне програмування: навч. посіб. [для студентів ВНЗ України] / В. М. Заяць, М. М. Заяць ; Нац. ун-т «Львів. політехніка». — Кам'янець-Подільський (Хмельниц. обл.) ; Львів: Гордукова І. Є., 2016. — 398 с. : іл., табл., портр.
- Иван Братко. Алгоритмы искусственного интеллекта на языке PROLOG (Оригінал Prolog Programming For Artificial Intelligence)
- John McCarthy. Programs with common sense Symposium on Mechanization of Thought Processes. National Physical Laboratory. Teddington, England. 1958.
- Fisher Black. A deductive question answering system Harvard University. Thesis. 1964.
- James Slagle. Experiments with a Deductive Question-Answering Program CACM. December, 1965.
- Cordell Green. Application of Theorem Proving to Problem Solving IJCAI 1969.
- Carl Hewitt. Planner: A Language for Proving Theorems in Robots IJCAI 1969.
- Gerry Sussman and Terry Winograd. Micro-planner Reference Manual [ 20 серпня 2008 у Wayback Machine.] AI Memo No, 203, MIT Project MAC, July 1970.
- Carl Hewitt. Procedural Embedding of Knowledge In Planner IJCAI 1971.
- Terry Winograd. Procedures as a Representation for Data in a Computer Program for Understanding Natural Language [ 6 жовтня 2008 у Wayback Machine.] MIT AI TR-235. January 1971.
- Bruce Anderson. Documentation for LIB PICO-PLANNER School of Artificial Intelligence, Edinburgh University. 1972
- Bruce Baumgart. Micro-Planner Alternate Reference Manual Stanford AI Lab Operating Note No. 67, April 1972.
- Julian Davies. Popler 1.6 Reference Manual University of Edinburgh, TPU Report No. 1, May 1973.
- Jeff Rulifson, Jan Derksen, and Richard Waldinger. QA4, A Procedural Calculus for Intuitive Reasoning SRI AI Center Technical Note 73, November 1973.
- Robert Kowalski Predicate Logic as Programming Language Memo 70, Department of Artificial Intelligence, Edinburgh University. 1973.
- Drew McDermott and Gerry Sussman. The Conniver Reference Manual MIT AI Memo 259A. January 1974.
- Earl Sacerdoti, et al. QLISP: A Language for the Interactive Development of Complex Systems AFIPS National Computer Conference. 1976.
- Bill Kornfeld and Carl Hewitt. The Scientific Community Metaphor IEEE Transactions on Systems, Man, and Cybernetics. January 1981.
- Bill Kornfeld. The Use of Parallelism to Implement a Heuristic Search IJCAI 1981.
- Bill Kornfeld. Parallelism in Problem Solving MIT EECS Doctoral Dissertation. August 1981.
- Bill Kornfeld. Combinatorially Implosive Algorithms CACM. 1982
- Carl Hewitt. The Challenge of Open Systems Byte Magazine. April 1985.
- Robert Kowalski. The limitation of logic Proceedings of the 1986 ACM fourteenth annual conference on Computer science.
- Ehud Shapiro (Editor). Concurrent Prolog MIT Press. 1987.
- Robert Kowalski. The Early Years of Logic Programming CACM. January 1988.
- Ehud Shapiro. The family of concurrent logic programming languages ACM Computing Surveys. September 1989.
- Carl Hewitt and Gul Agha. Guarded Horn clause languages: are they deductive and Logical? International Conference on Fifth Generation Computer Systems, Ohmsha 1988. Tokyo. Also in Artificial Intelligence at MIT, Vol. 2. MIT Press 1991.
- Shunichi Uchida and Kazuhiro Fuchi Proceedings of the FGCS Project Evaluation Workshop Institute for New Generation Computer Technology (ICOT). 1992.
- Зубенко В. В. Програмування: навчальний посібник (гриф МОН України) / В. В. Зубенко, Л. Л. Омельчук. — К. : ВПЦ «Київський університет», 2011. — 623 c.
- Нікітченко М. С. Теоретичні основи програмування: навчальний посібник / М.С Нікітченко — Ніжин: Видавництво НДУ імені Миколи Гоголя, 2010. — 121с.
- Лавров С. С. Програмирование. Математические основи, средства, теория / С. С. Лавров. — СПб. : БХВ-Петербург,2001. — 251с.
- Непейвода Н. Н. Основания програмирования: учеб. пособие / Н. Н. Непейвода, И. Н. Скопин. — Ижевск, 2003.
- Pratt T.W., Zelkovitz M.V. Programming languages, design and implementation (4th ed.). Prentice Hall, 2000 (англ.) (Пратт Т., Зелкович М., Языки программирования: разработка и реализация.- Спб.: Питер, 2002.-688 с.)(рос.)
- Gabbrielli, Maurizio (2010). Programming languages principles and paradigms. London, New York: Springer,. ISBN .
- : Concepts of Programming Languages, 9th ed., Addison Wesley 2009.
Посилання
- (англ.)
- Bibliographies on Logic Programming [ 4 грудня 2008 у Wayback Machine.](англ.)
- Association for Logic Programming (ALP) [ 10 жовтня 2007 у Wayback Machine.](англ.)
- Theory and Practice of Logic Programming journal [ 11 січня 2010 у Wayback Machine.](англ.)
Це незавершена стаття про мови програмування. Ви можете проєкту, виправивши або дописавши її. |
Це незавершена стаття зі штучного інтелекту. Ви можете проєкту, виправивши або дописавши її. |
Ця стаття має кілька недоліків. Будь ласка, допоможіть удосконалити її або обговоріть ці проблеми на .
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Cya stattya ye sirim perekladom z anglijskoyi movi Mozhlivo vona stvorena za dopomogoyu mashinnogo perekladu abo perekladachem yakij nedostatno volodiye oboma movami Bud laska dopomozhit polipshiti pereklad berezen 2018 Logi chne programuva nnya paradigma programuvannya ta takozh rozdil diskretnoyi matematiki sho vivchaye metodi i mozhlivosti ciyeyi paradigmi zasnovani na vivedenni novih faktiv z danih faktiv vidpovidno iz zadanimi logichnimi pravilami Logichne programuvannya zasnovane na teoriyi matematichnoyi logiki Najvidomishoyu movoyu logichnogo programuvannya ye Prolog sho ye za svoyeyu suttyu universalnoyu mashinoyu vivodu sho pracyuye v pripushenni zamknenosti sistemi faktiv IBM s Blue Gene P masivno paralelnij superkomp yuter Pershoyu movoyu logichnogo programuvannya bula mova Planner v yakij bula zakladena mozhlivist avtomatichnogo vivedennya rezultatu z danih i zadanih pravil pereboru variantiv Planner vikoristovuvali dlya znizhennya vimog do obchislyuvalnih resursiv za dopomogoyu metodu poshuku z povernennyam i dlya vivedennya faktiv bez aktivnogo vikoristannya steku Potim bula rozroblena mova Prolog yaka ne vimagala planu pereboru variantiv i bula v comu sensi sproshennyam movi Planner Na osnovi idej Planner buli stvoreni taki movi logichnogo programuvannya yak i Movi programuvannya en en en i en buli stvoreni na osnovi Prolog Na osnovi movi Planner bulo rozroblene takozh dekilka alternativnih mov logichnogo programuvannya ne zasnovanih na metodi poshuku z povernennyam napriklad IstoriyaVikoristannya matematichnoyi logiki dlya predstavlennya i vikonannya komp yuternih program takozh ye vlastivistyu lyambda chislennya rozroblenogo Alonzom Cherch v 1930 h rokah Odnak pershim zaproponuvav vikoristovuvati kon yunktivnu normalnu formu logiki dlya predstavlennya komp yuternih program Kordell Grin Bulo vikoristano aksiomatizaciyu pidmnozhini LISP razom z predstavlennyam vidnoshennya vvodu vivodu dlya obchislennya vidnoshennya shlyahom modelyuvannya vikonannya programi v LISP Z inshogo boku mova Absys rozroblena Fosterom i Elkokom vikoristovuvala kombinaciyu rivnyan i lyambda chislennya u viglyadi tverdzhen bez obmezhen na poryadok vikonannya operacij Logichne programuvannya v ninishnomu viglyadi mozhna prostezhiti do diskusij v kinci 1960 h i pochatku 1970 h rokiv pro porivnyannya deklarativnogo i procedurnogo predstavlennya znan v shtuchnomu intelekti Prihilniki deklarativnogo predstavlennya pracyuvali v Stenfordi pov yazani z Dzhonom Makkarti en i en a takozh v Edinburzi z Dzhonom Alanom Robinsonom akademichnim gostem iz en en i Robertom Kovalski Prihilniki procedurnogo predstavlennya buli v osnovnomu zoseredzheni v Massachusetskomu tehnologichnomu instituti pid kerivnictvom Marvina Li Minskogo ta Sejmura Pejperta Hocha Planner buv zasnovanij na metodah dovedennya logiki rozroblenij Karlom Hyuittom v Massachusetskomu tehnologichnomu instituti vin stav pershoyu movoyu sho z yavilasya v ramkah ciyeyi procesualistichnoyi paradigmi Planner pokazuvav shablonne zvernennya procedurnih planiv vid cilej napriklad metaskorochennya abo zvorotnij lancyuzhok i vid tverdzhen tobto pryamij vivid Najbilsh vplivova realizaciya Planner bula pidmnozhinoyu pid nazvoyu Micro Planner realizovanogo en en i Terri Vinogradom Vin buv vikoristanij dlya realizaciyi programi WinRED z vivchennyam prirodnoyi movi SHRDLU yaka bula oriyentirom v toj chas Shob vporatisya z duzhe obmezhenimi sistemami pam yati Planuvalnik vikoristovuvav strukturu upravlinnya zvorotnim trasuvannyam shob odnochasno zberigati tilki odin mozhlivij shlyah obchislennya Planuvalnik priviv do poyavi mov programuvannya takih yak QA 4 Popler Conniver QLISP i paralelni movi Ether Gejs i Kovalskij v Edinburzi namagalisya uzgoditi logichnij pidhid deklarativnogo pidhodu do podannya znan z procedurnih pidhodiv Planera Hayes 1973 rozrobiv ekvacionalnu movu Golux v yakomu rizni proceduri mozhut buti otrimani shlyahom zmini povedinki dovedennya teorem Kovalskij z inshogo boku rozrobiv SLD rezolyuciya variant SL rezolyuciyi i pokazav yak vin rozglyadaye naslidki proceduri skorochennya meti Kovalskij spivpracyuvav z en v Marseli yakij rozrobiv ci ideyi pri rozrobci ta vprovadzhenni movi programuvannya Prolog en bula stvorena dlya pidtrimannya logichnogo programuvannya v 1986 roci U Prolog z yavilisya movi programuvannya en en en en en en en XSB i en a takozh bezlich mov en movi en i Datalog Formalna logika yak osnova logichnogo programuvannya Metod rezolyucijDlya bud yakoyi sistemi logichnogo programuvannya harakternim ye te sho dlya vikonannya programi pobudovi vivedennya rezultatu vikoristovuyetsya vmontovana sistema avtomatichnogo poshuku Mehanizm poshuku logichnogo visnovku Prolog u bere svij pochatok vid metodu rezolyucij Robinsona Pravilo rezolyuciyi vivedennya logichnogo visnovku pracyuye nastupnim chinom dvi frazi mozhut rezolvuvati mizh soboyu koli odna z nih maye pozitivnij a druga negativnij literal z odnim i tim samim poznachennyam predikata ta odnakovoyu kilkistyu argumentiv i v razi yaksho argumenti oboh literaliv mozhut buti unifikovani pogodzheni Napriklad fraza P a b o Q c d i fraza Q c d o R b c dayut rezolventu P a b o R b c Yaksho zh argumentom vidnoshennya ye zminna to vona unifikuyetsya z konstantoyu a rezolventa bude mati danu konstantu na miscyah poperednogo roztashuvannya zminnoyi Rozglyanemo dvi frazi specialnogo viglyadu R a vislovlyuvannya bez umovi i oP a umova bez vislovlyuvannya Nayavnist cih dvoh fraz v odnij teoriyi ye protirichchyam Yaksho voni rezolvuyutsya mizh soboyu todi otrimana rezolventa nazivayetsya porozhnoyu frazoyu Yaksho pri rezolyuciyi dvoh fraz sho vhodyat do skladu teoriyi otrimuyetsya porozhnya fraza to teoriya bude neposlidovnoyu KoncepciyiLogika i upravlinnya Dokladnishe Deklarativne programuvannya Logichne programuvannya mozhna rozglyadati yak kontrolovanij visnovok Vazhlivoyu koncepciyeyu u logichnomu programuvanni ye rozdilennya program na yih logichnij komponent i yih komponent upravlinnya Z chistimi logichnimi movami programuvannya tilki logichnij komponent viznachaye otrimani rishennya Komponent upravlinnya mozhe buti zminenij dlya zabezpechennya alternativnih sposobiv vikonannya logichnoyi programi Ce ponyattya zafiksovano gaslom Algoritm Logika Upravlinnya De Logika yavlyaye soboyu logichnu programu a Kontrol yavlyaye soboyu rizni strategiyi dokazu teorem Rishennya problem U sproshenomu propozicionalnomu vipadku koli logichna programa i atomna meta verhnogo rivnya ne mistyat zminnih zvorotne mirkuvannya viznachaye en yake yavlyaye soboyu prostir dlya poshuku rishennya zavdannya Meta verhnogo rivnya korin dereva Dlya bud yakogo vuzla u derevi i bud yakoyi propoziciyi golovka yakogo zbigayetsya z vuzlom isnuye nabir dochirnih vuzliv vidpovidnih pid cili v teksti propoziciyi Ci dochirni vuzli grupuyutsya razom i Alternativni nabori ditej vidpovidni alternativni sposobi virishennya vuzla grupuyutsya razom abo Bud yaka poshukova strategiya mozhe vikoristovuvatisya dlya poshuku cogo prostoru U Prolog vikoristovuyetsya poslidovna strategiya nazad u pershih zvorotne trasuvannya v yakij odnochasno rozglyadayetsya tilki odna alternativa i odna pidcil Mozhlivi takozh inshi strategiyi poshuku taki yak paralelnij poshuk intelektualnij vidkat abo krashij pochatkovij poshuk dlya poshuku optimalnogo rishennya U bilsh zagalnomu vipadku koli zminni spilnogo vikoristannya pid cilej mozhut vikoristovuvatisya mozhna vikoristovuvati inshi strategiyi taki yak vibir najbilsh pidhodyashoyi pid cili abo dostatnogo primirnika tak sho zastosovuyetsya tilki odna procedura Taki strategiyi yaki vikoristovuyutsya napriklad pri en Zaperechennya yak vidmova Dokladnishe Zaperechennya yak vidmova Dlya bilshosti praktichnih dodatkiv a takozh dlya dodatkiv yaki vimagayut nemonotonnogo mirkuvannya v shtuchnomu intelekti logichni programi klauzuli Horna neobhidno poshiryuvati na zvichajni logichni programi z negativnimi umovami Polozhennya v normalnij logichnij programi maye viglyad H A1 An notB1 Bn displaystyle H A1 An notB1 Bn chitayetsya deklarativno yak logichne virazhennya H ifA1 An notB1 Bn displaystyle H ifA1 An notB1 Bn de H ta vsi Ai displaystyle Ai i Bi displaystyle Bi atomni formuli Zaperechennya negativnih literalah a ne Bi displaystyle Bi zazvichaj nazivayetsya zaperechennij zbij oskilki v bilshosti realizacij pokazano negativna umova a ne Bi displaystyle Bi pokazuyuchi sho pozitivna umova Bi displaystyle Bi ne vikonuyetsya Napriklad canfly X bird X not abnormal X abnormal X wounded X bird john bird mary wounded john Vrahovuyuchi metu znajti shos sho mozhe litati canfly X Isnuye dva rishennya yaki virishuyut pershu pid cilnu pticyu X a same X john i X mary Druga pid cil ne ye nenormalnim john dlya pershogo rishennya kandidatu ne vdayetsya bo poranenij john dosyagaye uspihu otzhe i nenormalnij john dosyagaye uspihu Tim ne mensh druga pid cil ne ye nenormalnim mary dlya drugogo rishennya kandidat uspishnij bo poranenij mary ale zaznaye nevdachu a otzhe i nenormalnij mary zaznaye nevdachi Otzhe X mary yedine rishennya cili Mikro planuvalnik yakij bulo pobudovano nazivayetsya thnot yakij pri nanesenni na viraz povertaye znachennya True yaksho i tilki yaksho ocinka virazhennya zavershuyetsya Ekvivalentnij operator zazvichaj vbudovanij v suchasnij Prolog Ce zazvichaj pishutsya not i Goal i abo i Goal i de Goal ye propoziciya dlya programi Cej operator vidriznyayetsya vid zaperechennya v logici pershogo poryadku zaperechennya napriklad h 1 zavershuyetsya koli zminna h zv yazana z atomom 1 ale vin dosyagaye uspihu u vsih inshih vipadkah u tomu chisli koli x ye nepriv yazanij Ce robit mirkuvannya u Prolozi nemonotonno h 1 h 1 i zavzhdi zaznaye nevdachi A H 1 h 1 mozhe dosyagti uspihu priv yazki do 1 v zalezhnosti vid x yaksho x buv spochatku priv yazanij zvernit uvagu sho standartnij Prolog vikonuye cili zliva napravo Logichnij status zaperechennya yak nevdachi tak i zalishivsya nevirishenim poki Kejt Klark 1978 pokazali sho pri pevnih prirodnih umovah ce pravilne a inodi i povne vikonannya klasichnogo zaperechennya shodo zavershennya programi Zavershennya priblizno zbigayetsya z naborom vsih propozicij programi z tim zhe predikatom na livij storoni skazhimo H Body1 H Bodyk Viznachennya predikata H iff Body1 or or Bodyk de iff oznachaye yaksho i tilki yaksho Napisannya zavershennya takozh vimagaye yavnogo vikoristannya predikata rivnosti i vklyuchennya naboru vidpovidnih aksiom dlya rivnosti Tim ne mensh realizaciya zaperechennya nevdacheyu vimagaye tilki if polovin viznachen bez aksiom rivnosti Napriklad zavershennya vishenavedenoyi programi canfly X iff bird X not abnormal X abnormal X iff wounded X bird X iff X john or X mary X X not john mary not mary john Ponyattya zavershennya tisno pov yazano z semantikoyu en Makkarti dlya argumentaciyi za zamovchuvannyam i en V yakosti alternativi semantiki zavershennya zaperechennya yak nevdacha mozhe interpretuvatisya epistemichno yak i v semantici stijkih modelej ta u vidpovid mnozhin programuvannya U cij interpretaciyi Bi displaystyle Bi ne oznachaye bukvalno sho Bi displaystyle Bi ne vidoma abo ne vrahovuyetsya Epitimichna interpretaciya maye perevagu sho yiyi mozhna kombinuvati duzhe prosto z klasichnim zaperechennyam yak u rozshirenomu logichnomu programuvanni dlya formalizaciyi takih fraz yak protilezhne ne mozhna pokazati de navpaki ye klasichnim zaperechennyam i navpaki ne mozhe buti pokazanim ye epistichnoyu interpretaciyeyu zaperechennya yak nevdachi Predstavlennya znan Dokladnishe Predstavlennya znan Toj fakt sho propoziciyi Horna mozhut buti dani procedurnoyi interpretaciyeyu i navpaki sho proceduri usunennya meti mozhna zrozumiti yak propoziciyi Horna zvorotnye mirkuvannya oznachaye sho logichni programi ob yednuyut deklarativni i procedurni predstavlennya znan Vklyuchennya zaperechennya yak vidmovi oznachaye sho logichne programuvannya ye svogo rodu nemonotonnoyu logikoyu Popri svoyu prostotu porivnyano iz klasichnoyu logikoyu cya kombinaciya propozicij Horna i zaperechennya nevdachi viyavilasya naprochud viraznim Napriklad vin zabezpechuye prirodne podannya dlya zdorovogo gluzdu zakoniv prichini i slidstva a formalizuyetsya yak situacijne chislennya ta en Bulo takozh pokazano sho vin cilkom prirodno vidpovidaye napivformalnij movi zakonodavstva Zokrema Prakken i Sartor kredituyut podannya Britanskogo zakonu pro gromadyanstvo yak logichnoyi programi buduchi nadzvichajno vplivovim dlya rozrobki obchislyuvalnih uyavlen zakonodavstva pokazuyuchi yak logichne programuvannya dozvolyaye intuyitivno privablivimi uyavlennyami yaki mozhut buti bezposeredno rozgornuti dlya stvorennya avtomatichnih visnovkiv PrologDokladnishe Prolog Prolog angl Prolog mova logichnogo programuvannya zagalnogo priznachennya pov yazana zi shtuchnim intelektom ta matematichnoyu lingvistikoyu Prolog maye koreni v logici pershogo poryadku matematichnij logici ta na vidminu vid bagatoh inshih mov programuvannya ye deklarativnoyu logika programi virazhayetsya v terminah vidnoshen predstavlenih yak fakti ta pravila Obchislennya iniciyuyetsya zapuskom zapitu nad cimi vidnoshennyami Cyu movu programuvannya spochatku bulo zadumano grupoyu navkolo Alana Kolmeroe v Marseli na pochatku 1970 tih a pershu sistemu Prolog bulo rozrobleno v 1972 mu Alanom Kolmeroe ta Filipom Russelem Prolog bula odniyeyu z pershih logichnih mov programuvannya j zalishayetsya najpopulyarnishoyu sered takih mov i na sogodni mayuchi dekilka bezkoshtovnih ta komercijnih realizacij Yiyi zastosovuvali yak dlya dovedennya teorem ekspertnih sistem tak i dlya yiyi pochatkovoyi oblasti priznachennya obrobki prirodnoyi movi Suchasni seredovisha Prologu pidtrimuyut yak stvorennya grafichnih interfejsiv koristuvacha tak i administrativni abo merezhevi zastosuvannya Prolog dobre pidhodit dlya rozv yazannya specifichnih zadach sho vigrayu t vid logichnih zapitiv na bazi pravil takih yak poshuk bazami danih sistemi golosovogo keruvannya ta zapovnennya shabloniv Varianti ta rozshirennyaAbduktivne logichne programuvannya Abduktivne logichne programuvannya ce rozshirennya normalnogo logichnogo programuvannya yake dozvolyaye deyakim predikatam ogoloshenim yak predikati buti vidkritimi abo neviznachenimi Rechennya v logichnij programi abduktivnoyi logiki maye viglyad H B1 Bn A1 An displaystyle H B1 Bn A1 An de H atomna formula yaka ne ye neprivodimoyu vsi Bi displaystyle Bi ye tekstovimi znachennyami predikat yakih ne ye neprivodimim a Ai displaystyle Ai atomnimi formulami predikat yakih ye neprivodimim Neprivodimi predikati mozhut buti obmezheni obmezhennyami cilisnosti yaki mozhut mati formu false B1 Bn displaystyle false B1 Bn de Bi displaystyle Bi dovilni literali viznacheni abo neprivodimi a takozh atomni abo negativni Napriklad canfly X bird X normal X false normal X wounded X bird john bird mary wounded john de normal predikata ye neprivodimoyu Rishennya problem dosyagayetsya shlyahom vivedennya gipotez sho virazhayutsya v terminah vidtvoryuvanih predikativ yak rishen rozv yazuvanih zavdan Cimi problemami mozhut buti abo sposterezhennya yaki neobhidno poyasniti yak u klasichnih en tak i cili yaki neobhidno virishiti yak u zvichajnomu logichnomu programuvanni Napriklad gipoteza normalna mary poyasnyuye naglyadovu metelika mary Bilshe togo ta zh sama gipoteza tyagne za soboyu yedine rishennya X mary meta znajti shos sho mozhe litati canfly X Logichne programuvannya abdukciyi bulo vikoristano dlya diagnostiki nespravnostej planuvannya obrobki prirodnoyi movi i mashinnogo navchannya Vin takozh vikoristovuvavsya dlya interpretaciyi Zaperechennya yak Vidmova yak formi abduktivnogo mirkuvannya Metalogichne programuvannya Oskilki matematichna logika maye davnyu tradiciyu rozriznennya mizh en i metamovoyu logichne programuvannya takozh dozvolyaye Najprostisha metalogichna programa ce tak zvanij meta interpretator vanili solve true solve A B solve A solve B solve A clause A B solve B de true yavlyaye soboyu porozhnyu kon yunkciyu a propoziciya A B oznachaye sho isnuye propoziciya rivnya ob yekta formi A B Metanomichne programuvannya dozvolyaye kombinuvati uyavlennya ob yektiv i metarivniv yak na prirodnij movi Vin takozh mozhe vikoristovuvatisya dlya realizaciyi bud yakoyi logiki yaka zadayetsya za dopomogoyu pravil vivedennya Metalogic vikoristovuyetsya v logichnomu programuvanni dlya realizaciyi metaprogram yaki manipulyuyut inshimi programami bazami danih bazami znan abo aksiomatichnimi teoriyami v yakosti danih Programuvannya logiki obmezhen Osnovna stattya en en poyednuye v sobi en Horn z rishennyam obmezhennya Vin rozshiryuye propoziciyi Horna dozvolyayuchi deyakim predikatam ogoloshenimi predikatami obmezhennya zustrichatisya yak literali v sukupnosti statej Logichna programa obmezhennya yavlyaye soboyu nabir propozicij vidu H C1 Cn B1 Bn displaystyle H C1 Cn lozenge B1 Bn de H ta vsi Bi displaystyle Bi atomni formuli a Ci displaystyle Ci obmezhennya Deklarativno taki polozhennya rozglyadayutsya yak zvichajni logichni naslidki H yaksho G1 Gn B1 Bn displaystyle G1 Gn B1 Bn Odnak u toj chas yak predikati ye v glavah rozdiliv i viznachayutsya programoyu logiki obmezhen predikati obmezhennya zumovleni pevnoyu teoretiko prostorovoyu strukturoyu abo teoriyeyu Procedurni pid cili predikat yakij viznachayetsya programoyu virishuyutsya shlyahom usunennya meti yak u zvichajnomu logichnomu programuvanni ale obmezhennya pereviryayutsya na zdijsnimist za dopomogoyu specializovanogo virishuvacha obmezhen yakij realizuye semantiku predikativ obmezhen Vihidna zadacha virishuyetsya shlyahom yiyi skorochennya do zdijsnennim kon yunkciyi obmezhen Nastupna logichna programa obmezhennya yavlyaye soboyu igrashkovu timchasovu bazu danih istoriyi Dzhona yak vchitelya teaches john hardware T 1990 T T lt 1999 teaches john software T 1999 T T lt 2005 teaches john logic T 2005 T T 2012 rank john instructor T 1990 T T lt 2010 rank john professor T 2010 T T lt 2014 Tut ta lt predikati obmezhennya z yih zvichajnoyu peredbachuvanoyu semantikoyu Nastupne rechennya meti zapituye bazu danih shob diznatisya koli Dzhon vikladav logiku i buv profesorom teaches john logic T rank john professor T Rishennyam ye 2010 displaystyle leq T T displaystyle leq 2012 Logichne programuvannya obmezhen vikoristovuvalosya dlya virishennya problem u takih galuzyah yak civilne budivnictvo mashinobuduvannya cifrova elektronika avtomatizovane planuvannya ta dispetcherizaciya upravlinnya povitryanim ruhom i finansi Vin tisno pov yazanij z en Paralelne logichne programuvannya Osnovna stattya en Paralelne logichne programuvannya ob yednuye koncepciyi logichnogo programuvannya z paralelnim programuvannyam Jogo rozvitok otrimav velikij poshtovh u 1980 h rokah za jogo viborom dlya movi sistemnogo programuvannya yaponskogo proektu p yatogo pokolinnya FGCS Paralelna logichna programa yavlyaye soboyu nabir zahishenih diz yunktiv Gorna formi H G1 Gn B1 Bn displaystyle H G1 Gn B1 Bn Kon yunkciya G1 Gn displaystyle G1 Gn nazivayetsya zahistom propoziciyi a ye operatorom zobov yazannya Deklarativno ohoronyuvani polozhennya Gorna chitayutsya yak zvichajni logichni naslidki H yaksho G1 Gn B1 Bn displaystyle G1 Gn B1 Bn Tim ne mensh procedurno koli ye kilka propozicij golovi H yakih vidpovidayut zadanoyi meti todi vsi paragrafi vikonuyutsya paralelno pereviryayuchi chi perebuvayut yih gvardiyi G1 Gn displaystyle G1 Gn Yaksho ogorozhi bilsh nizh odniyeyi propoziciyi zberigayutsya to v odin z propozicij robitsya rishuchij vibir a vikonannya vikonuyetsya z dopomogoyu pid cilej B1 Bn displaystyle B1 Bn vibranoyi propoziciyi Ci pid cili mozhut takozh vikonuvatisya paralelno Takim chinom paralelne logichne programuvannya realizuye formu ne pikluyetsya pro nedeterminizm a ne ne znaye nedeterminizm Napriklad nastupna paralelna logichna programa viznachaye predikat shuffle Left Right Merge yakij mozhna vikoristovuvati dlya peremishuvannya dvoh spiskiv vlivo i vpravo ob yednuyuchi yih v odin spisok Merge yakij zberigaye poryadok dvoh spiskiv vlivo i vpravo shuffle shuffle Left Right Merge Left First Rest Merge First ShortMerge shuffle Rest Right ShortMerge shuffle Left Right Merge Right First Rest Merge First ShortMerge shuffle Left Rest ShortMerge Predstavlyaye porozhnij spisok a Head Tail predstavlyaye spisok z pershim elementom Head za yakim sliduye spisok Tail yak Prolog Zvernit uvagu sho pershe vhodzhennya u drugomu i tretomu rechennyah ye konstruktorom spisku todi yak druge vhodzhennya ye operatorom zobov yazannya Programa mozhe vikoristovuvatisya napriklad dlya peretasovki spiskiv ace queen king ta 1 4 2 viklikayuchi propoziciyu cili shuffle ace queen king 1 4 2 Merge Programa bude determinovano generuvati odne rishennya napriklad Merge ace queen 1 king 4 2 Mozhlivo paralelne logichne programuvannya zasnovane na peredachi povidomlen i otzhe piddayetsya tij zhe neviznachenosti sho i inshi paralelni sistemi peredachi povidomlen taki yak Aktori div en Karl Hyuitt stverdzhuvav sho paralelne logichne programuvannya ne zasnovane na logici v jogo rozuminni togo sho obchislyuvalni etapi ne mozhut buti logichno vivedeni Odnak u paralelnomu logichnomu programuvanni bud yakij rezultat zavershalnogo obchislennya ye logichnim naslidkom programi i bud yakij chastkovij rezultat chastkovogo obchislennya ye logichnim naslidkom programi i zalishkovoyi meti merezhi procesiv Otzhe neviznachenist obchislen ye nauvazi sho ne vsi logichni naslidki programi mozhut buti vivedeni Paralelne programuvannya logiki obmezhennya Osnovna stattya en en ob yednuye paralelne logichne programuvannya ta en vikoristovuyuchi obmezhennya dlya upravlinnya paralelizmom Propoziciya mozhe mistiti ohoronu yaka yavlyaye soboyu nabir obmezhen yaki mozhut blokuvati zastosovnist ciyeyi propoziciyi Koli zahist kilkoh propozicij vikonuyetsya paralelne programuvannya logiki obmezhen robit rishuchij vibir dlya vikoristannya tilki odnogo Induktivno logichne programuvannya Osnovna stattya en Induktivne logichne programuvannya pov yazane z uzagalnennyam pozitivnih i negativnih prikladiv u konteksti fonovih znan mashinne navchannya logichnih program Nedavnya robota v cij oblasti sho poyednuye logichne programuvannya navchannya i jmovirnist porodila novu oblast en ta en Ob yektno oriyentovane logichne programuvannya en rozshiryuye logichne programuvannya ob yektami ta sintaksisom frejmiv Bagato sistem bazuyutsya na F logic vklyuchno z en FLORID 24 bereznya 2017 u Wayback Machine i visokomashtabovnoyu komercijnoyu sistemoyu en rozshiryuye Prolog pidtrimkoyu ob yektiv protokoliv ta inshih ponyat OOP Linijne logichne programuvannya Logichne programuvannya na osnovi logiki v en prizvelo do stvorennya mov logichnogo programuvannya yaki znachno viraznishi nizh ti yaki zasnovani na klasichnij logici Programi propoziciyi Horn mozhut predstavlyati tilki zminu stanom shlyahu zmini argumentiv v predikati U linijnomu logichnomu programuvanni mozhna vikoristovuvati linijnu logiku dlya pidtrimki zmini stanu Deyaki ranni rozrobki logichnih mov programuvannya na osnovi linijnoyi logiki vklyuchayut LO Andreoli amp Pareschi 1991 Lolli 14 ACL i Forum Miller 1996 Forum zabezpechuye cilespryamovanu interpretaciyu vsiyeyi linijnoyi logiki Programuvannya logiki tranzakcij en ce rozshirennya logichnogo programuvannya z logichnoyi teoriyeyu onovlen sho zminyuyut stan Vin maye yak teoretiko modelnu semantiku tak i procedurnu Realizaciya pidmnozhini logiki tranzakcij dostupna v sistemi en Inshi prototipi takozh dostupni Logichne programuvannya vishogo poryadku Deyaki doslidniki rozshiryuyut logichne programuvannya mozhlivostyami programuvannya vishogo poryadku uspadkovanih vid en takih yak predikati zminni Realizaciyeyu ye napriklad rozshirennya movi Prolog taki yak en and en PrimitkiCordell Green 1969 Application of Theorem Proving to Problem Solving IJCAI 1969 J M Foster and E W Elcock ABSYS 1 An Incremental Compiler for Assertions an Introduction Machine Intelligence 4 Edinburgh U Press 1969 pp 423 429 R A Kowalski July 1979 Algorithm Logic Control Communications of the ACM 22 7 424 436 doi 10 1145 359131 359136 Div takozhProgramuvannya naborami vidpovidej Imperativne programuvannya Funkcionalne programuvannya Ob yektno oriyentovane programuvannya Mova programuvannya p yatogo pokolinnyaLiteraturaLogichne i funkcionalne programuvannya navch posib dlya studentiv VNZ Ukrayini V M Zayac M M Zayac Nac un t Lviv politehnika Kam yanec Podilskij Hmelnic obl Lviv Gordukova I Ye 2016 398 s il tabl portr Ivan Bratko Algoritmy iskusstvennogo intellekta na yazyke PROLOG Original Prolog Programming For Artificial Intelligence John McCarthy Programs with common sense Symposium on Mechanization of Thought Processes National Physical Laboratory Teddington England 1958 Fisher Black A deductive question answering system Harvard University Thesis 1964 James Slagle Experiments with a Deductive Question Answering Program CACM December 1965 Cordell Green Application of Theorem Proving to Problem Solving IJCAI 1969 Carl Hewitt Planner A Language for Proving Theorems in Robots IJCAI 1969 Gerry Sussman and Terry Winograd Micro planner Reference Manual 20 serpnya 2008 u Wayback Machine AI Memo No 203 MIT Project MAC July 1970 Carl Hewitt Procedural Embedding of Knowledge In Planner IJCAI 1971 Terry Winograd Procedures as a Representation for Data in a Computer Program for Understanding Natural Language 6 zhovtnya 2008 u Wayback Machine MIT AI TR 235 January 1971 Bruce Anderson Documentation for LIB PICO PLANNER School of Artificial Intelligence Edinburgh University 1972 Bruce Baumgart Micro Planner Alternate Reference Manual Stanford AI Lab Operating Note No 67 April 1972 Julian Davies Popler 1 6 Reference Manual University of Edinburgh TPU Report No 1 May 1973 Jeff Rulifson Jan Derksen and Richard Waldinger QA4 A Procedural Calculus for Intuitive Reasoning SRI AI Center Technical Note 73 November 1973 Robert Kowalski Predicate Logic as Programming Language Memo 70 Department of Artificial Intelligence Edinburgh University 1973 Drew McDermott and Gerry Sussman The Conniver Reference Manual MIT AI Memo 259A January 1974 Earl Sacerdoti et al QLISP A Language for the Interactive Development of Complex Systems AFIPS National Computer Conference 1976 Bill Kornfeld and Carl Hewitt The Scientific Community Metaphor IEEE Transactions on Systems Man and Cybernetics January 1981 Bill Kornfeld The Use of Parallelism to Implement a Heuristic Search IJCAI 1981 Bill Kornfeld Parallelism in Problem Solving MIT EECS Doctoral Dissertation August 1981 Bill Kornfeld Combinatorially Implosive Algorithms CACM 1982 Carl Hewitt The Challenge of Open Systems Byte Magazine April 1985 Robert Kowalski The limitation of logic Proceedings of the 1986 ACM fourteenth annual conference on Computer science Ehud Shapiro Editor Concurrent Prolog MIT Press 1987 Robert Kowalski The Early Years of Logic Programming CACM January 1988 Ehud Shapiro The family of concurrent logic programming languages ACM Computing Surveys September 1989 Carl Hewitt and Gul Agha Guarded Horn clause languages are they deductive and Logical International Conference on Fifth Generation Computer Systems Ohmsha 1988 Tokyo Also in Artificial Intelligence at MIT Vol 2 MIT Press 1991 Shunichi Uchida and Kazuhiro Fuchi Proceedings of the FGCS Project Evaluation Workshop Institute for New Generation Computer Technology ICOT 1992 Zubenko V V Programuvannya navchalnij posibnik grif MON Ukrayini V V Zubenko L L Omelchuk K VPC Kiyivskij universitet 2011 623 c Nikitchenko M S Teoretichni osnovi programuvannya navchalnij posibnik M S Nikitchenko Nizhin Vidavnictvo NDU imeni Mikoli Gogolya 2010 121s Lavrov S S Programirovanie Matematicheskie osnovi sredstva teoriya S S Lavrov SPb BHV Peterburg 2001 251s Nepejvoda N N Osnovaniya programirovaniya ucheb posobie N N Nepejvoda I N Skopin Izhevsk 2003 Pratt T W Zelkovitz M V Programming languages design and implementation 4th ed Prentice Hall 2000 angl Pratt T Zelkovich M Yazyki programmirovaniya razrabotka i realizaciya Spb Piter 2002 688 s ros Gabbrielli Maurizio 2010 Programming languages principles and paradigms London New York Springer ISBN 9781848829145 Concepts of Programming Languages 9th ed Addison Wesley 2009 Posilannya angl Bibliographies on Logic Programming 4 grudnya 2008 u Wayback Machine angl Association for Logic Programming ALP 10 zhovtnya 2007 u Wayback Machine angl Theory and Practice of Logic Programming journal 11 sichnya 2010 u Wayback Machine angl Ce nezavershena stattya pro movi programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Ce nezavershena stattya zi shtuchnogo intelektu Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Cya stattya maye kilka nedolikiv Bud laska dopomozhit udoskonaliti yiyi abo obgovorit ci problemi na storinci obgovorennya Cya stattya mistit tekst sho ne vidpovidaye enciklopedichnomu stilyu Bud laska dopomozhit udoskonaliti cyu stattyu pogodivshi stil vikladu zi stilistichnimi pravilami Vikipediyi Mozhlivo storinka obgovorennya mistit zauvazhennya shodo potribnih zmin gruden 2017 Cya stattya ye sirim perekladom z inshoyi movi Mozhlivo vona stvorena za dopomogoyu mashinnogo perekladu abo perekladachem yakij nedostatno volodiye oboma movami Bud laska dopomozhit polipshiti pereklad gruden 2017 Cya stattya mistit pravopisni leksichni gramatichni stilistichni abo inshi movni pomilki yaki treba vipraviti Vi mozhete dopomogti vdoskonaliti cyu stattyu pogodivshi yiyi iz chinnimi movnimi standartami gruden 2017 Cya stattya potrebuye dodatkovih posilan na dzherela dlya polipshennya yiyi perevirnosti Bud laska dopomozhit udoskonaliti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Zvernitsya na storinku obgovorennya za poyasnennyami ta dopomozhit vipraviti nedoliki Material bez dzherel mozhe buti piddano sumnivu ta vilucheno gruden 2017