Frege, Gottlob. (1891) “Function and Concept”, translated by Peter Geach and reprinted in The Frege Reader, ed. Michael Beaney (Wiley-Blackwell, 1997), pp. 130-148.

2008. 7. 10. 동욱

이 논문은 개념(concept)이라는 논리적 관념을 분석하는 글이다. 이를 위해 프레게는 함수(function)라는 수학적 관념을 분석․확장하여, 종국에는 이를 개념(concept)이라는 논리적 관념을 해명하는 데 (비유로서? 모델로서?) 채택한다. 요컨대 개념(concept)은 일종의 함수(function)로, 즉 진리치를 자신의 함수값으로 가지는 1-변항 함수이다. 이와 유사하게 관계(relation)는 진리치를 자신의 함수값으로 가지는 2-변항 함수이다.

수학에서의 함수

흔히 “x의 함수는 x를 포함한 수학적 표현, 즉 문자 x를 포함한 식”으로 간주되곤 한다. 그렇다면 ‘[eqn: 2 cdot x^3 +x]’는 [eqn: x]의 함수일 테고, ‘[eqn: 2 cdot 2^3 +2]’는 2의 함수일 것이다. 그러나 이는 오해를 초래한다. ‘[eqn: 2 cdot 2^3 +2]’는 수(the number) 18을 지시하지만, ‘[eqn: 2 cdot x^3 +x]’ 자체는 특정한 수를 지시하지 않는다.

이러한 오해는 형식과 내용, 즉 기호(sign. e.g., 숫자 numeral)와 그 지시 대상(thing signifed. e.g., 수 number)을 구분하지 못한 데서 기인한다. 예컨대, ‘2+5’, ‘3+4’, ‘22+3’ 등은 다른 표현이지만, 같은 대상, 즉 같은 수(the number) 7을 지시한다.

일반적으로 말해, 함수는 불완전한 표현이다. 우리는 ‘[eqn: 2 cdot x^3 +x]’라는 함수 표현을 대신해서, ‘[eqn: 2 cdot (~)^3 + (~)]’라는 표현을 쓸 수도 있다. 함수 표현은 부분적으로 빈칸들로 구성되어 있으며, 그 빈칸(변항 위치)에 특정한 수(특정한 변항)를 채워 넣을 때에만 완전해지고 그제서야 특정한 수(함수값)를 지시하게 된다. 즉 함수는 각각 완전한 수(변항)와 수(함수값)를 연결시켜주는 역할을 하는 매개체일 뿐 그 자체로는 수가 아니다. 따라서 함수는 수와 근본적으로 다르다.

각각의 함수는 특정한 값-영역(value-range)을 가진다. 즉 함수는 (변항, 함수값)들의 집합 {(변항1, 함수값1), (변항2, 함수값2)...}을 결정짓는다. 우리는 어떤 함수 [eqn: f(x)]의 함수값-영역을 위해 [eqn: dot epsilon f(epsilon)]과 같은 기호법을 채택할 수 있으며, 이 기호법을 이용하면 단순한 값의 비교로부터 함수(값-영역)의 비교를 구분하여 표현할 수 있을 것이다. 예컨대 ‘[eqn: x^2 - 4x = x(x-4)]’라는 표현은 단지 [eqn: x]에 어떤 값을 취하든 양 변의 값이 일반적으로 같다는 주장으로 해석될 수도 있다. 만약 두 함수 [eqn: x^2 -4x]와 [eqn: x(x-4)]의 값-영역 사이의 일치를 명료하게 주장하고자 한다면 ‘[eqn: dot epsilon (epsilon^2 - 4 epsilon) = dot alpha (alpha(alpha-1))]’와 같은 표현을 통해 그것을 표현할 수 있을 것이다. 우리는 두 함수 사이의 함수값의 일반적인 일치를 함수 사이의 (특정한) 일치, 즉 함수값-영역 사이의 일치로 간주할 수 있는데, 이는 증명가능한 문제는 아니다. 다만 논리의 근본 법칙으로 채택해야 할 문제이다. (프레게는 함수값-영역을 함수의 지시체로 보았나?)

함수의 확장 1 : 진리치를 함수값으로 가지는 함수

함수는 변항의 범위를 (무리수로, 복소수로..) 확장하거나, 함수 표현에 쓰이는 연산자들을 (지수, 로그 ...) 확장함으로써 계속 확장될 수 있다. 함수 표현에 =, >, < 등등도 가능하다고 하면 어떻게 될까? [eqn: x^2 =1]을 함수로 본다면, 이 함수의 변항 위치에는 수를 채울 수 있을 것이며, 그 함수값은 진리치가 될 것이다.

즉, 함수의 변항 위치에 특정한 값을 채운 표현들은 참 또는 거짓을 지시하게 된다. 예컨대 ‘[eqn: 2^2 =4]’, ‘[eqn: 2>1]’ 등은 모두 같은 대상인 참(the True)을 지시하며, 그렇다면 ‘[eqn: (2^2 = 4) = (2>1)]’과 같은 표현도 가능하며, 이 표현 또한 참을 지시한다. ‘[eqn: 2^2 =4]’와 ‘[eqn: 2>1]’은 같은 대상을 지시한다고 해서, 그 표현들의 뜻(sense)까지 같은 것은 아니다. 그 둘은 다른 생각(thoughts)을 표현하고 있다.

함수로서의 개념

함수 [eqn: x^2 = 1]에 특정한 변항, 한 예로 -1을 위의 적용하면 그 함수값은 참이다. 이를 우리는 다음과 같이도 표현할 수 있다: ‘수 -1은 그것의 제곱이 1이 되는 속성을 가진다’, ‘-1은 1의 제곱근이다’, ‘-1은 1의 제곱근이라는 개념에 속한다.’ 이로써 우리는 논리학에서 개념이라 불리는 것을 (수학에서) 함수라 불리는 것과 연결시킬 수 있게 되었다.

쉽게 말해, 개념은 진리치를 자신의 함수값으로 가지는 함수이다. 그리고 그 개념의 외연은 그 함수의 값-영역이다. 즉 우리는 함수값-영역을 통해 개념의 외연을 비교할 수 있다.

함수의 확장 2 : 등식이나 부등식을 넘어

등식의 언어적 형태는 문장이다. 문장은 그 뜻으로서 생각을 담고 있으며, 그 생각은 일반적으로 참이거나 거짓이다. 즉 문장은 일반적으로 진리치를 가지며, 이는 그 문장의 지시체(the Bedeutung)로 간주되어야 한다. ‘2+2’의 지시체가 4이듯이, ‘영국의 수도’의 지시체는 런던이며, 마찬가지로, ‘케사르는 갈리아를 정복했다’의 지시체는 참이다.

지금까지의 분석을 확장하여 변항과 함수값에 수뿐만 아니라 일반적인 대상들을 허용한다면, ‘케사르는 갈리아를 정복했다’라는 문장은 두 부분, 즉 ‘케사르’와 ‘__는 갈리아를 정복했다’로 나뉠 수 있는데, 전자는 변항이며, 후자는 함수이고, 이 함수에 ‘케사르’라는 변항을 대입한 결과인 함수값은 참이다.

대상과 함수

그렇다면 대상이란 무엇인가? 정의는 불가능하지만 다음은 이야기할 수 있다. 함수가 아니면 무엇이든 그것은 대상이며, 따라서 대상은 빈칸을 가지지 않는 (완전한) 표현[이 지시하는 것]이다. 함수값과 변항은 모두 대상으로 이루어진다. 반면 함수는 그 자체로 대상이 아니다. 개념은 함수이므로 그 자체로는 대상이 될 수 없다. 다만 개념의 외연은 함수의 값-영역이므로 이는 대상이다. 보통의 낱말처럼 문장 또한 빈칸이 없으므로 문장은 그것의 지시체로 어떤 대상을 가져야 한다. 그런데 문장의 지시체는 진리치이므로, 두 가지 진리치 또한 대상이다. 진리치는 대상이므로 함수값뿐 아니라 변항도 될 수 있다.

예컨대 가로선을 이용해 ‘[eqn: -x]’라는 함수 표현을 만들어, [eqn: x]라는 변항 위치에 문장을 대입하여 그 문장이 참이면 참을, 거짓이면 거짓을 함수값으로 가지는 함수를 의미한다고 하면, 이 함수는 그 변항으로 문장, 즉 진리치를 가진다. 마찬가지로 ‘[eqn: �TOP x]’이란 함수 표현 또한 그 변항으로 문장을 가지는 함수이다. 세로선 ‘|’을 이용하면, 그 문장에 대한 (진위) 판단을 표현할 수 있다. (프레게는 문장의 표현과 문장에 대한 (진위) 판단을 구분했다. ‘[eqn: -x]’나 ‘[eqn: �TOP x]’는 함수이지만, ‘[eqn: VDASH x]’도 함수인가?)

2계 함수

자신의 변항이나 함수값으로 함수를 가지는 함수도 있다. 예컨대 (현대식 표현으로, 프레게의 기호법은 워드프로세서에서 표현이 힘들기 때문에) ‘[eqn: (x)f(x)]’는 자신의 변항으로 함수를 가지고, 함수값으로 진리치를 가지는 함수이다. 이 함수에 변항 위치 [eqn: f]에 ‘[eqn: x=x]’라는 함수를 대입하면 [eqn: (x)(x=x)]라는 문장이 되어 그 값은 참이 되며, ‘[eqn: x^2 =1]’이라는 함수를 대입한 함수값은 거짓이 된다. 또 ‘[eqn: neg (x) neg f(x)]’라는 함수의 경우(이는 ‘[eqn: (exist x)f(x)]’라는 함수와 동일하다.), 변항 위치 [eqn: f]에 ‘[eqn: x^2 =1]’을 대입하면 ‘[eqn: neg (x) neg (x^ 2 =1)]’이라는 완전한 문장이 되어 그 값은 참이 된다. (익히 알려져 있는 정적분이나 미분과 같은 함수는 변항과 함수값 모두를 함수로 가지는 함수이다.)

함수와 대상이 근본적으로 구분되듯이, 자신의 변항으로 함수를 취하는 함수는 변항으로 대상을 취하는 함수와 근본적으로 구분된다. 전자는 2계(level) 함수이고, 후자는 1계 함수라 할 수 있다. 전자의 함수는 2계 개념을 의미하고, 후자는 1계 개념을 의미한다.

함수는 한 개의 변항뿐 아니라 두 개의 변항도 가질 수 있다. 전자의 함수는 개념을 표현하고, 후자는 관계를 표현한다. (넓은 의미에서 다변항 함수 모두가 개념을 표현한다고도 할 수 있을 것이다.)

‘[eqn: (x)(y)(f(x,y) SUPERSET (z)(f(x,z) superset (y=z)))]’는 [eqn: f]만을 변항으로 취하는 2계 함수이다. 우리는 2계 함수를 가지게 되었지만, 여전히 우리는 2계 함수를 뭐라고 부를지에 대한 개념이 없다. 이를 위해 우리는 다음 단계로 올라가야 한다. 그러나 그 작업이 위의 작업만큼 생산적일지는 미지수이다. ...