
- •Лекція 1 Загальний огляд мови Пролог
- •1.1 Приклад програми: родинні відносини.
- •1.2 Факти.
- •1.3 Питання.
- •1.5 Конъюнкция цілей.
- •1.6 Правила.
- •1.7 Кон’юнкція в правилах.
- •1.8 Змінні в тілі правила.
- •Лекція 2 Синтаксис Прологу. Арифметика. Співставлення.
- •2.1.3 Структури.
- •2.1.4 Оператори - теж функтори.
- •2.2 Арифметика.
- •2.3 Операції порівняння.
- •2.4 Співставлення.
- •Лекція 3 Семантика Прологу.
- •3.2 Диз'юнкція цілей
- •3.3 Процедурна семантика
- •3.3.1 Приклад обчислення
- •3.3.2 Формальний опис процедури обчислення цілей.
- •3.4 Співвідношення між процедурним і декларативним змістом
3.3.2 Формальний опис процедури обчислення цілей.
Нехай список цілей
1.Якщо список цілей порожній, обчислення дає успіх, якщо ні, то виконаються пункт 2.
2.Береться перша мета G1 зі списку. Пролог вибирає в базі даних, переглядаючи спочатку, перша пропозиція С,
С: H :- B1, B2, ..., Bn.
голова якого, зіставляється з метою G1.
Якщо такої пропозиції немає, то невдача.
Якщо є, то змінні конкретизуються і ціль G1 заміняється на список цілей
с конкретизованими значеннями змінних.
3.Розглядається рекурсивно через п.2 новий список цілей.
Якщо С -факт, то новий список коротше на одну мету.(n=0)
Якщо обчислення нового списку закінчується успішно, то і вихідний список цілей виконується успішно.
Якщо ні, то новий список цілей відкидається, знімається конкретизація змінних і відбувається повернення до перегляду програми, але починаючи з пропозиції наступного за пропозицією С.
Описаний процес повернення називається бектрекінг. (backtracking).
3.4 Співвідношення між процедурним і декларативним змістом
Створюючи пролог програми завжди треба пам'ятати про процедурний і декларативний зміст.
Декларативний зміст стосується відношень , визначених у програмі. Тобто декларативний зміст визначає, що повинно бути результатом програми.
З іншого боку, процедурний зміст визначає , як цей результат можна досягнути, тобто, як реально відношення обробляються прологом.