Глава 5: Предложения Хорна
5.1. Функции
Я уверен, что вы знаете, что такое функция. Возможно, вы не знаете математического
определения функции, но вы чувствуете, что это такое, исходя из опыта, полученного в
ходе использования калькуляторов и компьютерных программ или после посещения
одного из курсов элементарной алгебры. Функция имеет функтор, то есть имя, и
аргументы. Например, sin(X) — это функция. Другим примером функции является
функция mod(X, Y), которая возвращает остаток от деления X на Y. Когда вы хотите
использовать функцию, то подставляете в переменные, или аргументы, конкретные
значения. Например, если вы хотите найти остаток от деления 13 на 2, то можете
напечатать mod(13, 2) в своем калькуляторе (если в нем, конечно, имеется эта функция).
Если хотите найти sin(/3), то можете набрать sin(3.1416/3).
Можно сказать, что функция — это отображение из множества всевозможных
значений аргумента во множество результатов вычислений. Домен (т. е. область
определения – ред. пер.) — это множество всевозможных значений аргумента. Образ —
это множество результатов вычислений. Для функции синуса доменом является
множество действительных чисел. Важно запомнить следующее. Математики
настаивают, чтобы функция возвращала только одно значение для заданного аргумента.
Поэтому если вычисления производят более одного значения, то это не функция.
Например, значение выражения
может быть равно 2 или – 2
1
. Поэтому квадратный
корень числа не является функцией. Однако вы можете сделать его соответствующим
определению функции, взяв только неотрицательную часть образа
2
.
Как быть с функциями нескольких аргументов? Например, функция max(X, Y) имеет
два аргумента и возвращает значение наибольшего из них. В этом случае можно считать,
что она имеет только один аргумент, который является парой элементов. Таким образом,
аргументом max(5, 2) является пара (5, 2). Математики говорят, что областью
определения такой функции является декартово произведение R R.
Существуют функции, в которых функтор помещается между аргументами. Так
обстоит дело в случае арифметических операций, где часто пишут 5 + 7 вместо + (5, 7).
5.2. Предикаты
Предикатами являются функции, домены которых отображаются в множество {ve-
rum, falsum}, или, если вам не нравятся латинские названия, используемые в логике, вы
всегда можете полагаться на английский эквивалент: {true, false}. Существует
несколько предикатов, известных любому, кто пробовал себя в программировании, или
даже просто студенту, посещающему курс элементарной алгебры. Вот они:
X > Y есть true, если X больше, чем Y, иначе возвращается false;
X < Y есть true, если X меньше, чем Y, иначе false;
1
Здесь автор не имеет в виду арифметический квадратный корень.
2
То есть рассматривая знак радикала именно как арифметический квадратный корень.