А В А и В
да | да | да |
да | нет | нет |
нет | да | нет |
нет | нет | нет |
Свойства конъюнкции:
И1: Конъюнкция А и В истинна, когда истинны оба суждения.
И 2: Конъюнкция А и В ложна, когда ложно хотя бы одно из суждений А или В.
Логическая связка или в математической логике называется дизъюнкцией. Таблица истинности дизъюнкции:
А В А или В
да | да | да |
да | нет | да |
нет | да | да |
нет | нет | нет |
Свойства дизъюнкции:
ИЛИ1: Дизъюнкция А или В истинна, когда истинно любое из суждений А или В.
ИЛИ2: Дизъюнкция А или В ложна, когда ложны оба суждения А и В.
Свойства конъюнкции и дизъюнкции также можно описать в виде фактов на языке Пролог:
Дизъюнкция:Конъюнкция:
или (да, да, да); и2 (да, да, да);
или (да, нет, да); и2 (да, нет, нет);
или (нет, да, да); и2 (нет, да, нет);
или (нет, нет, нет); и2 (нет, нет, нет);
Опираясь на эти факты можно получить ответы на вопросы о свойствах дизъюнкции и конъюнкции с помощью ЭВМ:
? или (А, В, нет) ? и 2 (А, В, да)
А = нет В = нет А = да В = да
? или (А, В, да) ? и 2 (А, В, нет)
А = да В = да А = да В = нет
А = да В = нет А = нет В = да
А = нет В = да А = нет В = нет
Одной из важнейших логических связок математической логики является импликация А ® В. Эта связка в математической логике используется для определения правил логического вывода.
ИмпликацияА ®В - это логическое следование. Импликация А ® В читается: «если А, то В». Первое суждение в импликации называется посылкой, а второе суждение - следствием.
Приведем примеры правил логического вывода:
а) с использованием высказываний:
если «на улице дождь», то «на улице мокро»,
б) с использованием предикатов:
любит (х, конфеты) ® сластена (х).
Таблица истинности импликации:
А В А ® В
да | да | да |
да | нет | нет |
нет | да | да |
нет | нет | да |
Свойства импликации:
П1: «Импликация А ® В ложна,
когда посылка А истинна, а следствие В - ложно».
П2: «Импликация А ® В истинна,
когда истинно следствие либо ложны и посылка и следствие».
В языке Пролог импликации используются для описания правил вывода и определения новых логических понятий. Например, понятие «сластена» в языке .Пролог описывается следующим образом:
сластена (х) ¬ любит (х, конфеты);
Описание этого правила позволяет вводить в ЭВМ вопросы о «сластенах» и получать осмысленные ответы, исходя из сведений, хранящихся в базе данных:
? сластена (х) - Кто сластена?
х = Маша
С помощью таблиц истинности могут быть описаны и проверены свойства любых сложносоставных высказываний. Соответственно с помощью этих таблиц на ЭВМ средствами языка Пролог могут быть проверены любые сложносоставные высказывания и законы исчисления высказываний.
Задача 1. Проверьте закон двойного отрицания в исчислении высказываний
не (не А) º А
Р е ш е н и е . Рассмотрим объединенную таблицу истинности высказываний
А не А не (неА)
да | нет | да |
нет | да | нет |
Сравнение крайних столбцов показывает, что всюду, где высказывание А истинно, там же истинно и двойное отрицание не (не А). И наоборот, всюду, где ложно А, там ложно и двойное отрицание не (не А). Следовательно, двойное отрицание тождественно исходному высказыванию: не (не А) º А.
Задача 2. Сравните с помощью таблиц истинности отрицание дизъюнкции и отрицание конъюнкции не (А и В) и не (А или В).
Р е ш е н и е .
АВА и В не (А и В) А или В не (А или В)
да | да | да | нет | да | нет |
да | нет | нет | да | да | нет |
нет | да | нет | да | да | нет |
нет | нет | нет | да | нет | да |
В о п р о с ы
1. Когда истинно отрицание?
2. Когда ложна дизъюнкция?
3. Когда истинна конъюнкция?
4. Когда ложна импликация?
З а д а н и е
1. Составьте таблицы истинности для утверждений:
а) (не А) и (не В); в) (не А) или (не В);
б) А и (не В); г) А или (не В).
2. Сравните с помощью таблиц истинности логические выражения:
а) не (А и В); в) (не А) или (не В);
б) не (А и В); г) (не А) или (не В).
3. Проверьте по таблицам истинности логические законы:
а) отрицание конъюнкции:
не (А и В) = (не А) или (не В);
б) отрицание дизъюнкции:
не (А или В) = (не А) и (не В);
в) отрицание импликации:
не (А ® В)º (не В) ® (не А).
Пролог - это одна из моделей систем искусственного интеллекта, способных воспроизводить логические умозаключения. Кроме того, Пролог - это язык для описания фактов, правил и процедур логического вывода. О языке Пролог обычно говорят, что он представляет язык логического программирования.
Основной особенностью системы Пролог являются встроенные процедуры логического вывода, имитирующие способность человеческого интеллекта выполнять логические умозаключения. Какая лексика используется при этом - русского, английского или других языков - играет второстепенную роль, несущественную для ЭВМ, но важную для тех, кто будет работать и вести диалог с машиной.
Основная идея Пролога как языка записи фактов, вопросов и правил заключается в том, что они записываются в форме предикатов математической логики. Все они интерпретируются ЭВМ строго в соответствии с законами математической логики и ни чем более.
Основные конструкции языка Пролог - это факты, вопросы и правила. Все эти три конструкции записываются в форме предикатов и их комбинаций. Рассмотрим правила их записи на языке Пролог.
Факты - это конкретные сведения о ком-то либо о чем-то. Факты на языке Пролог записываются в форме предикатов с конкретными аргументами-значениями. Примеры записи фактов на Прологе:
папа (Вова, Лена); - Вова - папа Лены
любит (Лена, музыка); - Лена любит музыку
оценка (Лена, русский, 5); - У Лены 5 по русскому языку
Вопросы на Прологе - это запросы к совокупности данных или процедурам, хранящимся, в ЭВМ. Запись вопросов начинается со знака ?, за которым записывается предикат или группа предикатов, разделяемых запятыми. Примеры записи простых вопросов на языке Пролог:
? папа (х, Лена) - Кто папы Лены?
х = Вова
? мама (х, у) - Кто у кого - мама ?
НЕТ
? оценка (х, _ , 5) - Кто имеет оценки 5?
х = Лена
Здесь буквы х, у - обозначения переменных, а числа и слова - конкретные значения аргументов в соответствующих предикатах. Знак подчеркивания «_» представляет неопределенное значение, которое несущественно для ответа на вопросы.
При записи сложносоставных вопросов в языке Пролог можно указывать несколько условий-предикатов, разделяемых запятыми. Запятая в этих сложносоставных вопросах играет роль логическойсвязки и. Примеры сложносоставных вопросов:
? мама (х, у), мама(у, Оля) - Кто мама у мамы Оли?
х = Зина у = Люба
? мама (х, у), папа(у, Оля) - Кто мама у папы Оли?
НЕТ
Правила в Прологе - это правила логического вывода. Слева в правилах записывается следствие, а справа - предусловие. Предусловие может состоять из одного или нескольких предикатов, разделяемых запятыми. Примеры записи правил вывода на Прологе:
студент (х) ¬ занятие(х, учеба); - Студент - тот, ктозанят учебой;
нумизмат (х) ¬собирает (х, монеты); - Нумизмат - тот, ктособирает монеты.
Примеры вопросов на использование этих правил:
? студент (х) - Кто - студент?
х = Алеша
х = Лена
? нумизмат(у) - Кто - нумизмат?
у = Алеша
В правилах со сложносоставными определениями запятая также играет роль логической связки и, объединяя условия, образующие определение. Такого рода правила позволяют создавать самые сложные и изощренные базы знаний по самым различным предметным областям и применениям.
Приведем пример составления базы знаний о друзьях. Будем различать друзей по их именам: Алеша, Оля и т. д. Включим в базу данных следующие сведения о друзьях:
что им нравится;
что они коллекционируют;
чем они занимаются;
какие оценки они имеют.
При такой постановке проблемы и предметная область, и круг основных вопросов очерчены достаточно четко. Для записи фактов на Прологе примем следующие предикаты:
нравится (<имя>, <вещь>);
собирает (<имя>, <вещь>);
занимается (<имя>, <предмет>);
оценка (<имя>, <предмет>, <балл>);
Вместо <имя>, <вещь>, <предмет>, <балл> при составлении базы знаний необходимо подставить конкретную информацию о конкретных друзьях. Записывать имена будем с большой буквы в именительном падеже. Далее, <вещь> и <предмет> - это существительные в именительном падеже, <балл> - целое число от 1 до 5.