
- •Курс лекций по дисциплине «Логическое программирование» Специальность 220400 «по вт и ас» Факультет ирт Кафедра вМиК Курс 5 (веч) Основные конструкции логической программы
- •Введение в программирование на языке Пролог
- •Применение рекуpсии
- •Работа со списками
- •Соpтиpовка списков
- •Динамические базы данных
- •Принцип резолюций
- •Полное пространство вычислений.
- •Разрешимость логических программ. Спецификация программ
- •Правильность исполнения логических программ
- •Описание процесса верификации логических программ
- •Синтез логических программ
- •Логическое программирование и базы данных
Курс лекций по дисциплине «Логическое программирование» Специальность 220400 «по вт и ас» Факультет ирт Кафедра вМиК Курс 5 (веч) Основные конструкции логической программы
ЛП состоит из предложений.
Предложения описывают знания о решаемой задаче.
Предложение конструируется из объектов и отношений между ними.
Объекты.
Конкретное множество объектов образует проблемную область.
Например, для задачи f(x) -> min множество всех чисел образует проблемную область, если f(x) определена.
Конкретные объекты образуют множество индивидуумов.
Конкретные объекты и конкретные отношения это константы.
Имена констант это атомы.
Различают атомы простые и составные.
Например, «мир» – простой, «студент(петров)» - составной.
В общем виде структура имени имеет вид: f(t1,…,tn) где f – функтор, ti – аргументы.
Отношения.
Рассмотрим запись «сессия(экзамен(мат, физ, прогр), весна)» (1)
В основе представления о смысле имен сессии и экзамена лежат конкретные множества наборов объектов. Заданием этого множества можно формализовать понятие «экзамены».
Например, экзамены = { (мат, физ, прогр), (фил, псих, экол), … } (2).
Это пример трехместного отношения. N- местное отношение – это множество кортежей для фикс. N.
Предикаты.
В логике отношение называют предикатом.
Имя отношения – предикатный символ.
Запись P(t). Понимание: Элементы кортежа t принадлежат отношению с именем P или:
Высказывание Р верно для элементов кортежа t.
Предложение состоит из:
Логических связок (и), (или), (не), (если), (тождественно).
Предикатов.
Формул:
Каждый предикат – формула.
Если F1, F2 – формулы, то
(F1) – формула.
F1 F2, F1 F2, F1, F1 F2, F1 F2 – тоже формулы.
Например. Студент-ФИРТ(петров) – формула.
Студент-УГАТУ(петров) Студент-ФИРТ(петров) – формула.
Замечание. «петров» - конкретный объект, поэтому с малой буквы.
Переменные, термы, предложения.
Логические переменные используются при формулировке утверждения обо всех объектах данной совокупности.
Имя переменной начинается с заглавной буквы.
Терм – либо константа, либо переменная, либо кортеж, перед которым стоит функтор.
Предикат – кортеж, перед которым стоит предикатный символ.
Формула – предикат либо одно из выражений (F1), θ F1, где θ – любой из кванторов.
Предложение – формула, каждое вхождение переменной которой находится в области действия квантора по ней.
Замечание. Логический терм – единственная структура данных в ЛП.
Предикаты выражают отношения между объектами, а предложения описывают логические свойства отношений.
В ЛП различают 3 типа предложений:
1. Факт P(t1,…,tn). – простейшее предложение, используемое для того, чтобы можно было утверждать, что высказывание о принадлежности объекта ti некоторому отношению P истинно.
Например, факультет-УГАТУ(фирт).
Универсальный факт: «все студенты ПО владеют английским языком»: влад-англ-яз(Студ, ПО).
Простейшей ЛП является простейшая БД.
Создание БД начинается с создания реляционной схемы для каждого отношения.
Например, книга(Автор, Название, Издательство, Год):
книга(братко, программирование-на-языке-пролог, мир, 1990).
2. Правила – предложения вида P(t1,…,tn) a1(t1,…,tn), a2(t1,…,tn), …, am(t1,…,tn).
Например, «некто получает повышенную стипендию, если некто студент, сдавший все экзамены на отлично»: получ-повыш-стип(X) сдал-все-экз(X), экз(X,5,5,5,5).
Замечания. Факт – простейший случай правила.
В ЛП правила называют аксиомами, а совокупность фактов и правил – гипотезами.
3. Вопросы – служат для извлечения информации из ЛП.
Различают простые и конъюнктивные.
Вид: ? P(t). Здесь Р – цель, поэтому вопросы еще называют целевыми утверждениями.
Конъюнктивные: ? поэт(ломоносов), химик(ломоносов), спортсмен(ломоносов).
Процедура поиска ответа на простой вопрос состоит в отыскании факта P(t1,…,tn).
Поиск состоит в том, чтобы определить, является ли вопрос логическим следствием программы.
При поиске ответа на простой вопрос используются простейшие правила вывода.
Правила основаны на теореме “из Р выводимо Р”:
если факт, тождественный вопросу, найден, то ответ “да” иначе “нет”.
Если получен ответ “нет”, то это означает, что факт Р не содержится в БД.
При этом возможно, что информация в факте Р верная.
Например, ? книга(агафонов, логическое-программирование,наука, 1988) БД, хотя правильная.
Вопросы с переменными служат для представления совокупности вопросов.
Например, ? книга(X, Y, Z, 1990).
Поиск ответа на вопрос заключается в определении, существуют ли такие значения переменных, при которых вопрос будет логическим следствием программы. Такие вопросы называются экзистенциональными.
Понятие вопроса связано с понятием общих переменных.
Общие переменные – переменные, входящие в две или более различные цели вопроса.
Например, likes("Саша",X) likes("Зина",X),likes("Нина",X).