
- •Лекція 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 Співвідношення між процедурним і декларативним змістом
1.7 Кон’юнкція в правилах.
Додамо ще одне відношення в базу даних, унарне, що визначає стать.
male(tom).
male(bob).
male(jim).
female(liz).
female(pam).
female(pat).
female(ann).
Тепер визначимо відношення mother. Воно описується в такий спосіб:
Для всіх X Y, X -mother Y, if X- parent Y і X -female.
У такий спосіб правило буде mother(X, Y):-parent(X, Y), female(X).
Можна записати mother(X, Y):-parent(X, Y), female(X).
Або mother(X, Y):-parent(X, Y), female(X).
Кома між двома умовами означає кон’юнкцію цілей. Це означає, що дві умови повинні бути виконані одночасно.
Як система відповість на запитання?
?-mother (pam, bob).
yes
Знаходиться правило mother, виробляється підстановка
X=pam
Y=bob
Одержуємо правило mother(pam, bob):-parent(pam, bob), female(pam).
Спочатку задовольняються parent , а потім female
Пролог відповідає: yes
Питання:
?-mother (X, bob).
X=pam
1.8 Змінні в тілі правила.
Визначимо відношення sister.
Для будь-яких X і Y, X sister Y, if у X і Y є загальний батько, і X female
Запишемо правило на пролозі
sister (X, Y):- parent(Z,X), parent(Z,Y), female(X).
Тут Z-загальний батько. Z-деякий, довільний.
Можна запитати
?-sister(ann, pat).
yes
?-sister(pat, pat).
yes
Відповідь буде "yes". Тому що ми не вказали, щоб X і Y були різні.
Додамо відношення different (X, Y), що вказує, що X і Y різні.
sister (X, Y):- parent(Z,X),
parent(Z,X),
female(X),
different (X, Y).
1.9 Структура пролог-програми.
пропозиція |
- |
факт, |
правило, |
питання |
clause |
|
fact, |
rule, |
goal |
склад |
|
head |
head |
|
|
|
. |
.. |
? |
|
|
|
| |
| |
|
|
|
body |
body |
|
|
|
. |
. |
Лекція 2 Синтаксис Прологу. Арифметика. Співставлення.
Зміст
2.1. Синтаксис прологу
2.1.1. Константи
2.1.2. Змінні
2.1.3. Структури
2.1.4. Оператори – теж функтори
2.2. Арифметика
2.3. Операції порівняння
2.4. Співставлення
2.5. Друге значення операції = в Пролозі
2.6. Приклади співставлення структур
2.1 Синтаксис прологу.
Програма на пролозі складається з пропозицій. Пропозиції трьох видів: факти, правила, питання. Усі пропозиції будуються з термів.
Терм є синтаксичною одиницею.
2.1.1 Константи.
Константи - це пойменовані конкретні об'єкти або відносини.
Атоми - аналогічні атомам або символам у ліспі.
Атоми можуть задаватися:
- ланцюжком букв, цифр і символом підкреслення '_', починаючи з малої літери.
A
sister
x_23
- спеціальними символами *: ====>
Числа:
- цілі (діапазон -32768 – 32767)
- дійсні (діапазон 1Е-307 – 1Е+308)
2.1.2 Змінні.
Змінні служать для позначення об'єктів, значення яких міняються в ході виконання програми.
Імена змінних можуть починатися:
- або з прописної букви
- або із символу підкреслення
X
Y
Result
_result
Якщо значення змінної не цікавить, то можна використовувати анонімні змінні у вигляді символу підкреслення '_'.
Наприклад, haschild(X):-parent(X, Y).
Тут значення Y не цікавить, можна записати haschald(X):-parent(X, _).
Значення анонімної змінної не виводиться на друк. Якщо декілька анонімних змінних, то вони всі різні.
Використання анонімних змінних дозволяє не видумувати імена змінних, коли не треба.
Нехай задане відношення parents для двох батьків.
parents(ann, tom, bob).
Тоді в правилі child(X):-parents(_, _, X).
Y Z обидві анонімні змінні різні.
Область дії змінних - одна пропозиція.
Однойменні змінні в різних пропозиціях можуть мати різні значення.