Page 27 - 4800
P. 27
Якщо побудуємо запит системі goal: not(dog(„Шарік”)), вона, можливо,
відповість “так”. Але цю відповідь не можна розуміти як повідомлення про те, що
“Шарік не собака”, а потрібно трактувати так, що системі не вистачає інформації для
доведення твердження “Шарік – собака”. Такий підхід бере свій початок від
припущення про замкнутість світу. Відповідно до цього постулату світ замкнутий у
тому розумінні, що все існуюче в ньому або указане в програмі, або може бути з неї
виведене. І в іншому випадку, коли чогось немає в програмі (не може бути з такої
виведено), тоді воно хибне, і відповідно буде істинним його заперечення.
Ми ж традиційно не вважаємо світ замкнутим: якщо в програмі явно не сказано,
що dog(„Шарік”), то це ще не означає, що ми хочемо сказати: “Шарік не собака”.
Розглянемо напраклад наступну програму
/* Програма 2.6 */
predicates
r(symbol)
g(symbol)
p(symbol)
clauses
r(a).
g(b).
p(X):-not(r(X)).
На запит g(X), p(X) cистема дасть відповість Х=b, а на p(X), g(X) система дасть
відповідь no (ні). Уся різниця в тому, що в першому випадку змінна Х до моменту
обчислення Р(X) була вже зв’язана, а в другому цього ще не трапилось.
2.13 Зміст звіту з лабораторної роботи
1. Вказати номер, тему й мету лабораторної роботи.
2. Навести результати дослідження програми 2.3 при наявності і відсутності
предиката fail у програмі.
2. Додати процедури подібні до процедури do_answer() в індивідуальному
завданні (додаток Б).
3. Вдосконалити розроблену раніше програму з використанням меню для вибору
різних варіантів запитів. Організувати повний інтерфейс програми (повторне
виконання запитів, вихід з програми по ключовому слові і т.п.).
27