Книга: ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ
Этап 2 - перенос отрицания внутрь формулы
Этап 2 - перенос отрицания внутрь формулы
На этом этапе обрабатываются случаи применения отрицания к формулам, не являющимся атомарными. Если такой случай имеет место, то формула переписывается по соответствующим правилам. Так, например, формула
~(человек (цезарь)& существующий (цезарь))
преобразуется в
~человек(цезарь) # существующий (цезарь)
а
~аll(Х, человек (X))
преобразуется в
exists(Х,~человек(Х))
Преобразования, выполняемые на втором этапе, основаны на следующих фактах:
~(?&?) значит то же самое, что и (~?) # (~?)
~exists(?,?) значит то же самое, что и all(?,~?)
~all(?,?) значит то же самое, что и exists(?,~?)
После завершения второго этапа каждое вхождение отрицания в формулу будет относиться лишь к атомарным подформулам. Атомарная формула или ее отрицание называется литералом. На всех последующих этапах литералы обрабатываются как единый элемент, а то, какие литералы представлены отрицанием, будет существенным лишь в самом конце.
- Этап 6 - выделение множества дизъюнктов
- Этап 5 - использование дистрибутивных законов для. & и #
- Этап 1 - исключение импликаций и зквивалентностей
- Этап 4 - вынесение кванторов общности в начало формулы
- Этап 1 - исключение импликаций
- Этап 3 - сколемизация
- 1.8. СТАДИИ И ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ
- Полиморфизм на этапе выполнения
- 1.1. Схема и основные этапы разработки новой продукции