- •Міністерство освіти і науки України Дніпропетровський національний університет
- •Програмування мовою пролог
- •Дніпропетровськ
- •1. Основи мови програмування пролог
- •1.1. Основні поняття
- •1.2. Синтаксис мови пролог
- •1.3. Класифікація даних у пролозі
- •1.4. Приклад доказу в пролозі
- •1.5. Подання задачі у вигляді і-або дерева
- •1.6. Структура програми в системі tp
- •1.7. Убудовані типи даних мови tp
- •1.8. Висновки
- •2. Підстави логічного програмування
- •2.1. Принцип резолюцій
- •2.3. Способи застосування принципу резолюцій
- •2.4. Диз’юнкти хорhа
- •3. Три семантичні моделі пролог-програми
- •4. Подання знань
- •4.1. Процес подання знань
- •4.2. Способи подання бази знань
- •4.2.1. Представлення цілісних інформаційних елементів у вигляді фактів
- •4.2.2. Подання атрибутів у вигляді фактів
- •4.2.3. Представлення знань у вигляді списку структур
- •4.2.4. Подання у вигляді рекурсивних структур
- •4.2.5. Подання у вигляді двійкового дерева
- •4.2.6. Порівняння різних виглядів подання бази даних
- •4.2.7. Компонування даних у список
- •4.3. Використання складених об'єктів
- •4.4. Використання альтернативних доменів
- •4.5. Засоби документування програми
- •4.6. Типи й властивості відношень предметної області
- •4.6.1. Обмеження, що забезпечують цілсність відношень
- •4.6.2. Властивості відношень бази знань і їхня підтримка в програмі на tp симетрія і асиметрія
- •Рефлексивность і нерефлексивность
- •Транзитивність
- •Симетричність і транзитивність
- •Спроба 1
- •Спроба 2.
- •Запам'ятовування списку відвіданих місць
- •4.7. Списки
- •4.7.1. Подання й зображення списків
- •4.7.2. Використання списків
- •4.7.3. Метод поділу списку на голову і хвіст (псгх)
- •4.7.4. Списки списків
- •Методи програмування
- •5.1. Повторення і відкіт (пв)
- •5.2. Метод відкоту після невдачі (впн)
- •5.3. Метод відсікання та відкоту (вв)
- •5.4. Повторення та рекурсія (пр)
- •5.5. Метод узагальненого правила рекурсії (упр)
- •5.6. Побудова рекурсивних структур методом прогресуючої підстановки (пп)
- •5.7. Предикат відсікання
- •5.8. Організація багаторазово виконуваних інтерактивних програм (бвіп)
- •5.9. Метод аналізу станів (ас)
- •5.10. Метод організації висхідних рекурсивних обчислень (вро)
- •5.11. Комбінація спадних і висхідних рекурсивных обчислень (ксвро)
- •5.12. Предикат fail-if (not)
- •5.13. Предикат true
- •5.14. Модифікація бази даних (мбд)
- •5.15. Керування базою даних (кбд)
- •5.16. Глобальні змінні (гз)
- •5.17. Накопичування результатів у базі даних за допомогою вимушеного відкоту і глобальної змінної (нрввгз)
- •5.18. Метапрограмування (мп)
- •Список рекомендованої літератури
- •1. Основи мови програмування пролог 4
- •2. Підстави логічного програмування 14
- •3. Три семантичні моделі пролог-програми 20
- •4. Подання знань 23
- •Програмування мовою пролог
1.7. Убудовані типи даних мови tp
Тип даних |
Ключове слово |
Діапазон значень |
Приклад |
Символ |
Char |
Будь-які символи |
‘a’, ’#', ’13’ |
Цілі |
Integer |
Числа від -32768 до 32767 |
56, -7, 4567 |
Дійсні |
Real |
Числа від 1Е-307 до 1Е-308 |
1.5, 1E75, -1.6E5 |
Рядок |
String |
Послідовність символів до 250 штук |
“to_day” |
Символічні імена
|
Symbol
|
1. Послідовність цифр і підкреслень, перший символ – мала літера. 2. Послідовність символів, узятих у лапки. |
to_day, 'to day', 'Василь' “to_day” “MAMA” |
Файли |
FILE |
Будь-яке припустиме ім'я файла в MS DOS. |
“C:\TMP\a.txt”, “work.pro” |
1.8. Висновки
Отже ПРОЛОГ – декларативна мова, зоснована на логіці предикатів. Предикати в загальному випадку визначають відношення між об'єктами.
Факти й правила є твердження, що утворюють програму на ПРОЛОЗі. Правила мають ліву частину (голову) і праву (тіло). Ціль, уніфікована з фактом, уважається доведеною. Ціль, уніфікована із заголовком правила, буде доведена, якщо будуть доведені всі підцілі, що входять до тіла правила. Факти служать для задання фактуальних знань, а правила – концептуальних знань про предметну область. Тобто правила дозволяють виводити нові факти, якщо усі твердження в тілі виявляються доведеними.
Цілі – це конструкції на основі предикатів, які повідомляють, що повинна довести програма на ПРОЛОЗі. Зв'язки у цілях і правилах (“:-”, “,” і “;”) виконують генерацію підцілей як крок процесу доказу цілі.
Внутрішні уніфікаційні процедури надають значення змінним. Означені змінні й константи мають значення “відомі” ПРОЛОГу. Вільні змінні значень не мають.
Відкоти використовуються ПРОЛОГом для визначення альтернативних шляхів обчислення цілі або підцілі. Якщо підціль виявилася неуспішною, а покажчики відкоту були встановлені, то для попередньої підцілі (стік підцілей) буде зроблена спроба домогтися успіху, починаючи з точки відкоту.
Для зовнішньої цілі ПРОЛОГ виконує відкіт навіть у тому випадку, коли ціль була доведена. Це відбувається тому, що для зовнішньої цілі ПРОЛОГ шукає ВСІ можливі розв’язки.
2. Підстави логічного програмування
У логічному програмуванні для подання знань застосовується формальний апарат числення предикатів першого порядку і його поширення. Під численням (чи дедуктивною системою) розуміється система, у якій існує деяка кількість вихідних об'єктів (аксіом) і деяка сукупність правил побудови (правил виведення) нових об'єктів з вихідних і вже побудованих до даного моменту.
Можна вважати, що числення предикатів – поширення класичного числення висловлень, у якому висловлення розглядається як єдине ціле, що не має внутрішньої структури. У численні висловлень істинність або хибність висловлювань фіксована. У численні (на відміну від алгоритму) порядок застосування правил виведення може бути довільним.
У численні предикатів основним об'єктом слугує змінне висловлення (предикат), істинність або хибність якого залежить від значень змінних, які містяться у ньому. Для позначення області значень змінних у численні предикатів використовуються два квантори:
- квантор загальності (x);
- квантор існування (x).
У численні висловлень формули будуються індуктивним способом за допомогою логічних зв'язок &, V, , . Числення предикатів містить усі формули числення висловлень, а також формули, що містять предикатні символи (змінні) із кванторами.
Виділяється підмножина тотожно істиних формул, істинність яких не залежить від істинності висловлень, що входять до нього. Вони називаються аксіомами. У логіці предикатів 1-го порядку існує декілька правил виведення. Наприклад, класичним правилом виведення є правило modus ponens
A, A B
------------
B
Це треба розуміти так: "якщо істинна формула A й істинно, що з A виводиться B, то формула B також буде істинною". Це правило виведення формалізує основний закон дедуктивних систем: із істинних посилок випливають істинні висновки.
У дедуктивній системі задача, що розв'язується, подається у вигляді тверджень (аксіом) F1, F2, ..., Fn числення предикатів першого порядку. Ціль задачі B також записується у вигляді твердження, справедливість якого потрібно або встановити або спростувати на підставі аксіом і правил виведення формальної системи.
Тоді розв’язання задачі зводиться до з'ясування логічного висновку (вивідності) цільової формули B із заданої множини формул (аксіом) B. Таке з'ясування рівносильне доведенню загальнозначущості (тотожної істинності) формули
F1 & F2 & ... & Fn B
чи нездійсненності формули (теорема Эрбана, 1930)
F1 & F2 & ... & Fn & B
Із практичних міркувань зручніше застосовувати доведення від супротивного, тобто доводити нездійсненність формул. Hа доведенні від супротивного основане й головне правило виводу, що застосовується в логічному програмуванні – принцип резолюцій.