- •127994, Москва, ул. Образцова, 15
- •2.Теоретические основы логическоого программирования
- •2.1.Логика высказываний и логика предикатов.
- •2.1.1.Формулы. Синтаксис и семантика формул.
- •2.1.2.Интерпретация формул в логике высказываний.
- •2.1.3.Интерпретация в логике предикатов первого порядка
- •2.1.4.Равносильность формул логики высказываний
- •2.1.5.Тождественная истинность формул логики высказываний
- •2.1.6.Равносильность формул логики первого порядка
- •2.1.7.Тождественная истинность, общезначимость, выполнимость, противоречивость формул логики предикатов
- •2.1.8.Рассуждения в логике высказываний (предикатов)
- •2.2.Метод резолюций
- •2.2.1.Метод резолюций в логике высказываний
- •2.2.2.Подстановка и унификация
- •2.2.3.Метод резолюций для логики первого порядка
- •2.2.4.Стратегии метода резолюций
- •2.3.Отношения и предикаты
- •3.Пролог- язык РекуРсивно-логического программирования
- •3.1.Пролог-история возникновения
- •3.2.Синтаксис языка пролог
- •3.3.Семантика языка пролог
- •3.4.Язык пролог и метод резолюций. Логическая интерпретация языка Пролог.
- •3.5.Работа в пролог-системе
- •3.6.Описание инфиксных операций
- •3.7.Списки в языке пролог
- •3.8.Арифметика в языке пролог
- •3.9.Отсечение и отрицание в языке пролог
- •3.10.Встроенные предикаты языка пролог
- •3.11.Работа с базой данных в языке пролог
- •3.12.Предикаты поиска
- •3.13.Решение головоломки на языке пролог(задача Эйнштейна)
- •4.Лабораторные работы по РекуРсивно-логическому программированию
- •4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)
- •4.1.1.Методические указания
- •4.1.2.Варианты
- •4.2.Задание n2. Работа со списками
- •4.2.1.Методические указания
- •4.2.2.Варианты
- •4.3.Задание n3. Разные задачи
- •4.3.1.Методические указания
- •4.3.2.Варианты
- •4.4.Содержание отчета
4.Лабораторные работы по РекуРсивно-логическому программированию
Лабораторная работа состоит из трех индивидуальных заданий на программирование на языке ПРОЛОГ и нескольких общих упражнений, которые приведены ниже и которые преподаватель уточняет на лекциях.
4.1.Задание n1 Отношения между объектами. (на Прологе и Паскале)
4.1.1.Методические указания
В практическом плане:
определить заданное сложное отношение через заданные простые отношения средствами языка ПРОЛОГ;
сформировать базу данных (явное задание) для простых отношений (база должна быть достаточно представительной для демонстрации возможностей программы);
не использовать отсечение и предикаты ввода-вывода;
протестировать целевой и другие предикаты, получить явные задания отношений, построить различные сечения отношений;
если ответ на запрос содержит повторяющиеся значения, определить дополнительный предикат, содержащий вызов предиката типа findall, setof (см упражнение 3.9.2);
для сравнения - написать программу на языке PASCAL (или другом процедурном языке), которая частично реализует те же функции.
В теоретическом плане:
записать словесную интерпретацию правил ПРОЛОГ- программы;
записать программу посредством формул логики предикатов.
сравнить программы (ПРОЛОГ и PASCAL) по критериям:
пользовательские возможности;
возможности модификации;
объем текста программ;
трудозатраты;
и другие.
4.1.2.Варианты
Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; преподаватель(X,Y) - преподаватель, который ведет данный предмет; предмет(X,Y) – предмет, который преподается в данной группе. Определите предикат студент_обучающийся_у_преподавателя(X,Y).
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определите следующие предикаты тетя(X,Y); братья(X,Y).
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты: двоюродные_братья(X,Y); племянник(X,Y); внук(X,Y); внучка(X,Y).
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определите предикаты тесть(X,Y); теща(X,Y); сват(X,Y).
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определите предикаты троюродные_братья(X,Y); племянник(X,Y).
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты: внучатый_племянник(X,Y), внучатая_племянница(X,Y)..
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X). Определите предикаты сводные_братья(X,Y); сводные_братья_или_сестры(X,Y).
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); утверждает(X,Y) (X утверждает, что Y – убийца). Определите предикат: убийца(X). X - убийца, если это утверждают Y и Z, которые являются двоюродными братьями.
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); знакомы(X,Y). Определить предикат: люди_одного_круга(X,Y), если X,Y - братья, или сестры, или они знакомы, или их родители знакомы.
Определены предикаты: станция_назначения(X,Y); станция_отправления(X,Y); промежуточная_станция(X,Y). (X - станция, Y- поезд). Определить предикат пересадочная_станция (X,Y,Z) для поездов X и Y, который истинен, если поезда следуют через одну промежуточную станцию Z, или станция назначения Z одного поезда является станцией отправления Z другого.
Определены предикаты: отец(X,Y); мать(X,Y); мужчина(X); женщина(X); муж_жена(X,Y). Определить предикат однокровные(X,Y), если у них общий прадедушка.
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определить отношение прямой_родственник(X,Y). X – прямой родственник Y, если X - отец, мать, дедушка, бабушка, брат или сестра Y.
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y). Определить предикаты: тесть(X,Y); теща(X,Y); свекр(X,Y); свекровь(X,Y).
Определены предикаты: сессия(V,W,X,Y,Z) (V,W,X,Y,Z - названия предметов сессии); экзамен(X,Y,Z) (студент X сдал предмет Y с оценкой Z). Определить предикаты: отличник(X) (студент X сдал все экзамены сессии на "отлично"); двоечник(X) (студент X сдал какой-либо из экзаменов сессии на"неуд").
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения тесть(X,Y), теща(X,Y).
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения золовка(X,Y), своячница(X,Y).
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношения кузены(X,Y), кузины(X,Y).
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить предикат двоюродная_бабушка(X,Y).
Определены предикаты: имеет_специальность(X,Y); муж_жена(X,Y). Определить предикат имеют_общие_интересы(X,Y). X и Y имеют общие интересы, если они коллеги или их жены (мужья) коллеги.
Определены предикаты: занимается_спортом(X,Y); имеет_специальность(X,Y). Определить предикат имеют_общие_интересы(X,Y). X и Y имеют общие интересы, если они коллеги или занимаются одним видом спорта.
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); муж_жена(X,Y). Определить отношение шурин(X,Y).
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); нравится(X,Y). Определить отношение близкие_по_духу(X,Y), если существует нечто, что обоим нравится, либо они братья или сестры.
Определены предикаты: мужчина(X); женщина(X); родитель(X,Y); профессия (X,Y). Определить отношение связаны_общим_интересом(X,Y). X и Y связаны общим интересом, если у них одна и та же профессия или их жены - родные сестры.
Определены предикаты: нравится(X,Y), вор(X), дефицитная вещь(X), милиционер(X), не_боится(X,Y). Определить отношение: мог_украсть(X,Y). .X мог украсть Y, если X - вор и Y - есть вещь, которая нравится X или если Y - дефицитная вещь, а Z - милиционер, причем X не боится Z.
Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; предмет(X,Y) – предмет, по которому данная группа сдает экзамен. Определить отношение: экзамен(X,Y), студент X сдает экзамен по дисциплине Y, если он учится в группе, которая сдает экзамен по этой дисциплине.
Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; преподаватель(X,Y) – преподаватель, который читает лекции в данной группе. Определить отношение: лекции(X,Y), студент X слушает лекции преподавателя Y, если он учится в группе, которой читает лекции данный преподаватель.
Определены предикаты: студент(X,Y) - студент, обучающийся в данной группе; присутствовал(X,Y) – студент, который присутствовал на занятиях в данный день. Определить отношение: встретились(X,Y,Z), два студента X,Y встретились в некоторый день Z, если они учатся в одной группе и оба присутствовали на занятиях в этот день.
Определены предикаты: дорога(X,Y) - дорога, включает данную станцию; станция(X,Y) – станция, на которую данный поставщик поставляет груз. Определить отношение: поставщик(X,Y), поставщик поставляет груз на дорогу, если он поставляет груз на какую-либо станцию этой дороги.
Определены предикаты: дорога(X,Y) - дорога, включает данную станцию; отправляет(X,Y) – станция, на которую данное предприятие поставляет груз; получает(X,Y) – станция, от которой данное предприятие получает груз. Определить отношение: является_клиентом(X,Y), предприятие является клиентом дороги, если оно отправляет или получает грузы с какой-либо станции этой дороги.
Определены предикаты: нравится(X,Y). Определить отношение любит(X,A). X любит все то, что нравится Y и Z, или любит P, которому нравятся цветы.
