ав назву "принцип резолюції". На самому справі, ідея даного методу була запропонована Ербраном в 1931 році, коли ще не було комп'ютерів. Робінсон модифікував цей метод так, що він став придатний для автоматичного, комп'ютерного використання, і, крім того, розробив ефективний алгоритм уніфікації, що становить базис його методу.
У 1973 році "група штучного інтелекту "на чолі з Аланом Колмерое створила в Марсельському університеті програму, призначену для доведення теорем. Ця програма використовувалася при побудові систем обробки текстів на природній мові. Програма докази теорем отримала назву Prolog (Від Programmation en Logique). Вона і стала прообразом Прологу. Ходять легенди, що автором цієї назви була дружина Алана Колмерое. Програма була написана на Фортрані і працювала досить повільно.
Велике значення для розвитку логічного програмування мала робота Роберта Ковальського "Логіка предикатів як мова програмування "(Kowalski R. Predicate Logic as Programming Language. IFIP Congress, 1974), в якому він показав, що для того щоб добитися ефективності, потрібно обмежитися використанням безлічі хорновскіх диз'юнктів. До речі, відомо, що Ковальський і Колмерое працювали разом протягом одного літа.
У 1976 р. Ковальський разом з його колегою Маартеном ван Емден запропонував два підходи до прочитання текстів логічних програм: процедурний і декларативний. Про ці підходах мова піде в третій лекції.
У 1977 році в Единбурзі Уоррен і Перейра створили дуже ефективний компілятор мови Пролог для ЕОМ DEC-10, який послужив прототипом для багатьох наступних реалізацій Прологу. Що цікаво, компілятор був написаний самому Пролозі. Ця реалізація Прологу, відома як "едінбурзька версія", фактично стала першим і єдиним стандартом мови. Алгоритм, використаний при його реалізації, послужив прототипом для багатьох наступних реалізацій язика. Як правило, якщо сучасна Пролог-система і не підтримує единбурзький Пролог, то в її складу входить підсистема, яка переводить прологовскую програму в "Единбурзький" вигляд. Мається, звичайно, стандарт ISO/IEC 13211 - 1:1995, але його підтримують не всі Прологсістеми.
У 1980 році Кларк і Маккейб в Великобританії розробили версію Прологу для персональних ЕОМ. p> У 1981 році стартував вищезазначений проект Інституту з розробки методів створення комп'ютерів нового покоління.
На сьогодні існує досить багато реалізацій Прологу. Найбільш відомі з них наступні: BinProlog, AMZI-Prolog, Arity Prolog, CProlog, Micro Prolog, МПролог, Prolog-2, Quintus Prolog, SICTUS Prolog, Silogic Knowledge Workbench, Strawberry Prolog, SWI Prolog, UNSW Prolog і т. д.
У нашій країні були розроблені такі версії Прологу як Пролог-Д (Сергій Григор'єв), Акторний Пролог (Олексій Морозов), а також Фленг (А. Манцівода, В'ячеслав Петухін). p> Стерлінг і Шапіро в книзі "Мистецтво програмування мовою Пролог" пишуть: "Зрілість мови означає, що він більше не є доопределяется і уточнюється наукової концепцією, а стає реальним об'єктом з усіма притаманними йому вадами і чеснотами. Настав час визнати, що хоча Пролог і не досяг високих цілей логічного програмування, але, тим не менш, являється потужним, продуктивним і практично придатним формалізмом програмування ".
В
3. Обчислення висловлювань .
Обчислення висловлювань являє собою логіку неаналізіруемих припущень, в якій пропозіціональние константи можуть розглядатися як представляють певні прості вирази на кшталт "Сократ - чоловік" і "Сократ смертна ". Рядкові літери р, q, r, ... надалі використовуватимуться для позначення пропозіціональних констант які іноді називають атомарними формулами, або атомами.
Нижче приведені всі синтаксичні правила, які використовуються для конструювання правильно побудованих формул (ППФ) в обчисленні висловлювань. p> (S. U) ЕсліU є атомом, то у є ППФ.
(S В¬) Якщо U є ППФ, то-U також є ППФ.
(S. v) Якщо U і ф є ППФ, то (U u ф) також є ППФ. p> У цих правилах малі літери грецького алфавіту (наприклад, U і ф) представляють пропозіціональние змінні, тобто НЕ атомарні формули, а будь-яке просте чи складене вислів. Пропозіціональние константи є частиною мови висловлювань, який використовується для програми обчислення пропозіціональних змінних до конкретної проблеми.
Вираз-U читається як В«не U ", а (U v ф) читається як диз'юнкція" U або ф (або обидва) ". Можна ввести інші логічні константи - "л" (кон'юнкція), "D" (Імплікація, або обумовленість), "=" (еквівалентність, або рівнозначність), які, по суті, є скороченнями комбінації трьох наведених вище констант. . p> (U ^ ф) Еквівалентно В¬ (В¬ U v ф). Читається "U і ф". p> (U ф) Еквівалентно (В¬ U v ф). Читається "U імпліцірует ф ".
(U == ф) Еквівалентно (Uф) ^ (Ф U). Читається "U еквівалентно ф". p> У кон'юнктивній нормальній формі обчислення висловлювань константи "імплікація" і "Еквівалентніс...