Лекция 2 (ч2)
ИСПОЛЬЗОВАНИЕ ПРОЛОГА ДЛЯ ДОКАЗАТЕЛЬСТВА ТЕОРЕМ
Для получения программы 4.1 необходимо загрузить модули Пролог-системы
PROLOG, SIMPLE и TOLD.
Функции AND, OR и NOT встроены в Пролог. С помощью этих функций и определяемых в программе отношений true, false и Т сможем определять
истинность сложных высказываний, а также проверять на эквивалентность различные высказывания.
В программе 4.1 отношения b, g и h соответствуют одноименным функциям, приведенным на табл. 4.8.
Они могут быть представлены как
h =
Для того чтобы предоставить пользователю возможность вводить значение той или иной логической переменной, используется отношение is-told.
Запрос может иметь следующую форму «р истинно?» («р true?»,) и, если на него будет получен ответ «да» (yes), то значением р становится истина (true).
В случае же, если вводится ответ «нет» (по), значением р считается ложь
(false).
-------------
Отношение Т, как уже было указано, используется для проверки истинности сложных высказываний.
--------------
---------------
С помощью данного отношения определяется истинность заданного сложного высказывания в зависимости от значений входящих в него переменных, которые в ответ на вопросы системы вводятся пользователем,
Диалог между Пролог-системой и пользователем может иметь, например,
следующий вид:
В рассмотренном примере диалога проверяется высказывание, составленное с помощью операции AND.
-------------
Аналогичная проверка для других значений переменных будет выглядеть следующим образом:
Отметим, что обработав третий ответ пользователя, Пролог-система ответила сразу же после получения значения р, не производя в данном случае ненужной проверки значения q.
---------
-------
Приведем теперь пример определения истинности высказывания b:
----------
Функция OR принимает значение истина, когда это же значение имеет хотя
бы одна из двух ее переменных.
Поэтому Пролог-система, обнаружив, что значением первой переменной яв- ляется истина, прекращает проверку.
Ниже приведены примеры диалога при проверке высказывания
---------------
--------------
--------------
-------------
Впримере представлены варианты получения ответа для всех четырех позиций таблицы истинности данной функции.
Впервом варианте р и q истинны, поэтому второй терм анализируемой функции не проверяется, так как функция OR, связывающая оба терма, в случае истинности первого терма также принимает значение истина.
Значением первого терма во втором варианте является ложь, поэтому Пролог-система переходит к проверке истинности второго терма.
Поскольку не обеспечено запоминание ответа на первый вопрос об
истинности он повторяется
еще раз необходимо утвердительно на него ответить. Сразу после этого Прологсистема устанавливает, что значением g является ложь, так как независимо от значения q значение второго терма — ложь.
В третьем и четвертом вариантах, так же как и во втором, Пролог-система
повторяет вопрос чтобы определить значение второго терма функции g. Как будет показано в дальнейшем, можно избежать повторений вопросов, но сейчас мы не будем останавливаться на этом.
--------------
С помощью разобранного примера было показано, как можно использовать Пролог для проверки правильности логических уравнений, описывающих логические функции b, g и h.
Можно воспользоваться средствами Пролога для проверки правильности альтернативных выражений для этих же функций.
Для этого воспользуемся правилом алгебры логики, позволяющим манипулировать знаком отрицания: двойное отрицание переменной равно
самой переменной:
Пусть тогда, взяв отрицание от обеих частей этого равенства и применив к левой части правило двойного отрицания, получим
Рассмотрим логическую функцию
Согласно правилам алгебры логики, выражение для этой функции может
быть преобразовано к следующему виду:
---------
--------
Ранее было указано, что символьное выражение для функций можно искать с помощью отрицания функции, являющейся по отношению к исходной
альтернативной, т. е. принимающей значение истина при тех значениях переменных, где исходная функция ложна, и наоборот.
Функция OR принимает значение ложь только в том случае, когда р и q ложны
одновременно, поэтому справедливо следующее равенство
С помощью программы 4.1 можно проверить справедливость последнего
равенства, а также сравнить его
Если они окажутся идентичными, это будет доказательством того, что тождественно равно
------------
Добавим к программе 4.1 следующий фрагмент:
Поскольку справедливо «X ложь, если НЕ X истина» (X false if not X true), приведенный выше фрагмент эквивалентен следующему:
что в символьной записи соответствует
Можно проверить это равенство с помощью следующих вопросов:
----------------
-----------