Встроенные предикаты Пролога
Для операций над числами в рассматриваемой версии Пролога имеются следующие арифметические предикаты: Предикат: Смысл: СУММА (x, y, z) х + у = z ПРОИЗВ (x, y, z) х*у = z ЧАСТНОЕ (x, y, z) [х/у] = z ОСТАТОК (x, y, z) х - [х/у] = z РАВНО (х, у) х = у БОЛЬШЕ (х, у) х > у МЕНЬШЕ (х, у) х < у
Арифметические предикаты по смыслу и функциям существенно отличаются от арифметических операций в традиционных языках программирования. Прежде всего любой из этих предикатов вырабатывает логическое значение ИСТИНА или ЛОЖЬ в зависимости от того, имеет или не имеет решение арифметическая задача, представляемая предикатом. Примеры: ? СУММА (2, 2, 5) НЕТ ? СУММА (2, 2, z) z = 4 ? СУММА (х, 2, 5) х = 3
Таким образом, арифметические предикаты позволяют решать простейшие арифметические уравнения с одной или несколькими переменными, автоматически производя соответствующие вычисления, если эти решения существуют. Однако обращение к предикатам, связанным с умножением и делением целых чисел, может дать отрицательный результат из-за отсутствия решений в некоторых случаях:
? ПРОИЗВ (2, у, 5) НЕТ ? ЧАСТНОЕ (5, 2, z) z = 2 ? ОСТАТОК (5, 2, r) r = 1
Предикаты БОЛЬШЕ и МЕНЬШЕ вместе с предикатом РАВНО могут использоваться для сравнения различных численных переменных и констант. А предикаты «неменьше» и «небольше» могут быть определены через отрицание предикатов БОЛЬШЕ и МЕНЬШЕ:
|