6.12. Функции
6.12. Функции
В приведенном выше примере один из предикатов, а именно предикат «поручик Пшебысский»(c), отличается от остальных предикатов своей явной неэлементарностью. В свойстве «быть поручиком Пшебысским» мы различаем две стороны: иметь чин и иметь фамилию Пшебысский. Поэтому и предикат выражается двумя словами. Конечно, мы могли бы представить каждое из этих слов в виде отдельного предиката, но тот факт, что «поручик» это чин объекта c, а «Пшебысский» — его фамилия, при этом не нашел бы отражения, почему мы и сочли такое разделение бессмысленным.
«Фамилия» и «чин» — это примеры функции от одного аргумента, т. е. конструкции, сопоставляющей объекту-аргументу объект-значение функции. Функция записывается так, как это принято в математике: «фамилия»(x), «чин»(x) и т. п. Если аргументов несколько, то они отделяются друг от друга запятой и мы имеем дело с функцией нескольких переменных. Эта конструкция сопоставляет набору объектов-аргументов (порядок их важен) объект-значение. Пример функции двух аргументов: «результат игры в шахматы» (x, у). Приведем примеры функций из математики. Функции одного аргумента: sin(x), |x|. Функции двух аргументов: арифметические действия, которые можно записывать так: +(х, у), -(х, у) и т.д.; расстояние r(A, B) между двумя точками A и B в пространстве. Функции трех аргументов: угол, образуемый в точке B направлениями на точку A и C; обозначение ?(A, B, C), сокращенно ?ABC.
Не всякий объект можно подставить в качестве аргумента (аргументов) в заданную функцию. Если объект a — рыжий пес, то, очевидно, конструкция «чин»(a) бессмысленна. Бессмысленна и конструкция +(a, B), где a — число, а, B — точка в пространстве. Множество объектов, которые могут быть аргументами функции (для функций от многих аргументов — множество наборов объектов), называется ее областью определения. Область определения функции «чин» (x) образуют все те объекты, которые являются военнослужащими. Объекты, которые могут быть значениями данной функции, образуют множество, которое называют областью значений функции. В область значений функции «чин»(x) входят такие объекты, как «прапорщик», «поручик», «майор» и др., но никак не «3.14» или «рыжий пес». Функция «чин»(x) приписывает каждому военнослужащему определенный чин.
Когда мы имеем дело с функциями, одно из отношений между объектами становится особенно важным, а именно отношение равенства. Оно необходимо для установления соответствия между функциональными конструкциями и наименованиями объектов из области значений функций. Выделяя равенство из массы других отношений, мы сохраним для него привычную запись х = у вместо записи в виде предиката =(х, у). Тот факт, что объект c имеет фамилию «Пшебысский» и чин «поручик», будет выглядеть следующим образом:
(«фамилия»(c) = «Пшебысский») ? («чин»(c) = «поручик»).
Отношение равенства можно определить формально с помощью следующих четырех утверждений:
(?a)(a = a).(?a)(?b)[(a = b) ? (b = a)].(?a)(?b)(?c)[(a = b) ? (b = c) ? (a = c)].(?a)(?b)[(a = b) ? (W(a) ? W(b))].
Последнее утверждение верно для любого высказывания W(x), зависящего от переменной х. В качестве упражнений предлагаем читателю перевести эти утверждения на естественный язык.
В одном из примеров, приведенных выше, мы видели предикат D(x, y), имеющий смысл: «x является делителем у». Понятие делимости целиком определяется операцией (функцией) умножения, поэтому предикат D(x, у) может быть выражен через функцию. Натуральное (т. е. целое положительное) число p является делителем числа n тогда и только тогда, когда существует такое натуральное число т, что n = p ? m. На языке исчисления предикатов
(?p)(?n)[D(p, n) ? (?m)(n = ?(p, m))].
Каждой функции от n аргументов можно поставить в соответствие n+1-местный предикат, выражающий то отношение, что один (скажем, последний) аргумент есть данная функция от остальных аргументов. Например, функции ?(x, y) соответствует предикат M(x, y, z), который дает верное высказывание в том и только в том случае, когда z = ?(x, y). В общем случае функции f(x, у, ..., z) соответствует предикат F(x, у, ..., z, u), обладающий свойством
(?x)( ?y)...(?z)( ?u)[F(x, у, ..., z, и) ? (f(x, у, ..., z) = u)].
Предикат F выражает фактически то же понятие, что и функция f. Любое высказывание, содержащее функциональные символы, можно переписать, используя лишь предикатные символы и введя дополнительно некоторое число объектных переменных. Таким образом, обе конструкции, порождающие новые объекты, — конструкция со связкой «такой, что» и функция — не являются принципиально необходимыми и без них можно обойтись. Однако в отличие от конструкции «такой, что» функциональные символы весьма удобны и широко используются в логике.