4.4Труднощі у використанні відтинання і
заперечення
Виділимо спочатку переваги використання відтинання:
1.За допомогою предикату cut можна підвищити
ефективність програми.
2.Використовуючи cut, можна описати взаємовиключні
правила, тому є можливість запрограмувати твердження: якщо
умова P, тоді розв'язок Q, інакше розв'язок R.
Обмеження на використання відтинання виходять із
декларативної сторони прологівської програми. Якщо в програмі
немає відтинання, тоді ми можемо міняти місцями порядок
речень і цілей. Якщо ж предикат cut присутній в програмі, тоді
зміна порядку речень в програмі може вплинути на її
декларативний зміст (дати інший розв'язок).
Якщо видалення відтинання з програми не міняє її
декларативного змісту, тоді таке відтинання називають
"зеленим". В іншому випадку відтинання називають "червоним".
Працювати з запереченням також треба обережно.
Труднощі виникають тому, що заперечення, яке ми
використовуємо, не повністю відповідає математичному
запереченню.
Якщо ми побудуємо запит системі:
goal: not(cat(leopold)),
вона, можливо, відповість "так". Але цю відповідь не можна
розуміти як повідомлення про те, що "Леопольд не кіт", а
потрібно трактувати те, що системі не вистачає інформації для
доведення твердження " Леопольд - кіт". Такий підхід бере
свій початок від припущення про замкнутість світу. В
відповідності до цього постулату світ замкнутий в тому
розумінні, що все, що в ньому існує або ж вказане в програмі,
або може бути із неї виведене. І в іншому випадку, якщо щось не
міститься в програмі (не може бути з неї виведеним), тоді воно
хибне, і відповідно буде істинним його заперечення.
49