Программирование на языке Пролог для искусственного интеллекта



         

Различные виды равенства


В каких случаях мы считаем, что два терма равны? До сих пор мы рассматривали три вида равенства в Прологе. Первый был связан с сопоставлением и записывался так:

        Х = Y

Это равенство верно, если Х и Y сопоставимы. Следующий вид равенства записывался в виде

        Х  is  E

Такое равенство выполняется, если Х сопоставим со значением арифметического выражения E. Мы также рассматривали равенства вида

        Е1 =:= Е2

которые верны, если равны значения арифметических выражений  Е1  и  Е2.   Наоборот, если значения двух арифметических выражений не равны, мы пишем

        Е1 =/= Е2

Иногда нам может понадобиться более строгий вид равенства - буквальное равенство

двух термов. Этот вид реализован еще одним встроенным предикатом, записываемым как инфиксный оператор '==':

        Т1 == Т2

Это равенство выполняется, если термы   Т1    и   Т2   идентичны, т. е. имеют в точности одинаковую структуру, причем все соответствующие компоненты совпадают. В частности, должны совпадать и имена переменных. Отношение "не идентичны", дополнительное к данному, записывается так:

        Tl \== T2

Приведем несколько примеров:

        ?-  f( a, b) == f( а, b).

        yes

        ?-  f( a, b) == f( a, X).

        nо

        ?-  f( a, X) == f( a, Y).

        no

        ?-  X \== Y.

        yes

        ?-  t( X, f( a, Y) ) == t( X, f( a, Y) ).

        yes




Содержание  Назад  Вперед