Резюме

Резюме

• Отсечение подавляет перебор. Его применяют как для повышения эффективности программ, так и для повышения выразительности языка.

• Эффективность повышается путем прямого указания (при помощи отсечения) пролог — системе не проверять альтернативы, про которые нам заранее известно, что они должны потерпеть неудачу.

• Отсечение дает возможность сформулировать взаимно исключающие утверждения при помощи правил вида:

 если Условие то Утверждение1 иначе Утверждение2

• Отсечение дает возможность ввести отрицание как неуспех: not( Цель) определяется через неуспех цели Цель.

• Иногда бывают полезными две особые цели true и fail. true — всегда успешна и fail — всегда терпит неудачу.

• Существуют ограничения в применении отсечения: его появление может нарушить, соответствие между декларативным и процедурным смыслами программы. Поэтому хороший стиль программирования предполагает осторожное применение отсечений и отказ от их применения без достаточных оснований.

• Оператор not, определенный через неуспех, не полностью соответствует отрицанию в математической логике. Поэтому not тоже нужно применять с осторожностью.

Литература

Различать "зеленые и "красные" отсечения предложил ван Эмден (1982).

van Emden M. (1982). Red and green cuts. Logic Programming Newsletter:  2.