
- •Лекція 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.1. Декларативна семантика пролог-програм
3.2. Диз’юнкція цілей
3.3. Процедурна семантика
3.3.1. Принцип обчислення
3.3.2. Формальний опис процедур обчислення цілей
3.4. Співвідношення між процедурним та декларативним змістом
3.1 Декларативна семантика пролог-програм
Розрізняють декларативну і процедурну семантику (зміст, розуміння) пролог-програм.
Розглянемо декларативний зміст більш докладно.
Декларативний зміст, стосується тільки відношень, визначених у програмі.
Декларативна семантика визначає, що повинно бути результатом роботи програми, не вдаючись у подробиці, як це досягається. Нехай задано P:-Q, R.
де P, Q, R -терми.
Тоді з погляду декларативного змісту ця пропозиція читається:" P-істинно, якщо Q R істинні." Або " З Q і R випливає Р." Тобто визначаються логічні зв'язки між головою пропозиції і цілями в її тілі.
Таким чином, декларативний зміст програми визначає, чи є дана мета істинною (досяжною), і якщо - так, то при яких значеннях змінних вона досягається.
Конкретизацією I пропозиції С називається результат підстановки в нього на місце кожної змінної деякого терму.
Відмітимо , що це відрізняється від конкретизації змінної.
Приклад:
haschild( X ):-parent( X ,Y).
Пропозиція С.
Визначення.
Нехай дана деяка програма і ціль G, тоді відповідно до декларативної семантики, можна затверджувати, що:
Ціль G щира (т, е. досяжна або логічно випливає з програми) тоді і тільки тоді, коли
(1) У програмі існує пропозиція З, таке, що
(2) існує така його (З) конкретизація I, що
(а) голова I збігається з G і
(b) усі мети в тілі I істинні.
Приклад
C(I):
C:
female(ann).
parent(ann, bob).
mother(ann):-parent(ann, Y), female(ann).
mother(X) :-parent(X, Y), female(X).
?- mother(ann).
Це визначення можна поширити на питання в такий спосіб. У загальному випадку питання - список цілей, розділених комами.
Список цілей називається істинним (досяжним), якщо всі мети в цьому списку істинні, досяжні, при однакових конкретизаціях змінних.
Кома між цілями означає кон’юнкцію цілей, і вони повинні бути усі істинні.
3.2 Диз'юнкція цілей
Можлива диз'юнкція цілей: щира повинна бути принаймні одна з цілей.
Диз'юнкція позначається крапкою з коми ";".
Наприклад
P:-Q;R.
Читається: Р істина, якщо Q - істина або R - щира.
тобто це т же саме, що
P:-R.
P:-Q.
Кома зв'язує мети сильніше, ніж крапка з коми.
У такий спосіб пропозиція
P:-Q, R;S, T, U.
розуміється як
P:-(Q, R);(S, T, U).
і має сенс
P:-Q, R.
P:-S, T, U.
3.3 Процедурна семантика
Процедурна семантика (процедурний зміст) прологу-програми визначає , як пролог-програма відповідає на питання.
Відповісти на питання - це значить задовольнити мети.
Тому процедурна семантика прологу - це процедура обчислення списку цілей з урахуванням програми.
3.3.1 Приклад обчислення
Розглянемо програму і на її прикладі - процедуру обчислення списку цілей.
Програма 1.
1.великий(ведмідь).
2.великий(слон).
3.маленький (кіт).
4.бурий(ведмідь).
5.чорний(кіт).
6.сірий(слон).
7.темний(Z):-чорний(Z).
7.1
8.темний(Z):-бурий(Z).
8.1
9.?-темний(X),великий(X).
9.1 9.2
Пропозиції пронумеровані для зручності
У такий спосіб для обчислення цілей треба було 7 зіставлень і один відкіт.