논리함수
1. 개요
입력에 따라 참, 거짓 중 하나의 값을 출력하는 함수.
가령 f(A, B) = A*B 라고 하면(단, A와 B는 부울 변수), A와 B의 값에 따라서 f는 참(True), 거짓(False) 둘 중 하나의 값을 출력할 수 있다.
논리함수는 위와 같이 And, Or과 같은 논리연산만으로도 이루어 질 수도 있지만, f = x == 5, f = x< 3, f = "오늘 비가 온다"와 같이 결과값이 참, 거짓으로 나오는 모든 연산과 논리로 구성 될 수 있다.
당연한 것이겠지만 논리함수에 값을 집어넣으면 참 또는 거짓인 값을 출력해 낸다. 일반 함수처럼 생각하면 된다.
2. 명제화
주의할 점은, 부울 함수는 그 자체로 명제가 아니라는 것이다. 명제란 참 거짓이 명확한 문장으로써, 논리함수는 입력하는 값에 따라 참 또는 거짓이 되므로 명제가 아니다. 논리함수가 명제가 되려면 함수의 결과값으로 무조건 참이 나오거나, 무조건 거짓이 나와야 한다.
그럼 논리함수를 명제화 하려면 어떻게 해야 할까? 단순히 생각하면 입력의 값을 제어하면 된다. 예를 들어 값의 범위를 지정하는 방법이 있는데, 가령 f = x < 5라는 논리함수에서 x<3의 범위를 지정하면 f는 무조건 참이 된다. 이는 명제다.
3. 제한자
여기서 더 나아가 모든(Universal, ∀)과 어떤(Existantial, ∃)이라는 제한자(quantifier)라는 것이 있다. 이것들 또한 값의 범위를 지정하는 것으로 각각 '모든 원소가', '어떤 한 원소가' 라는 뜻을 가지고 있다.
가령 f(x)를 x는 3의 배수인 정수이다. 라고 하면, 모든 x에 대해서 f(x)가 성립한다(= 참이다), 어떤 x에 대해서 f(x)가 성립한다. 이런식으로 사용한다.
다만 이 제한자를 사용하기 위해서는 논리함수가 정의되는 범위(domain)가 반드시 필요하다. 가령 위에서 말한 f(x)가 '6의 배수를 모은 집합'에서 정의가 된다고 하면 모든 x에 대해서 f(x)가 성립하지만 '모든 자연수' 에서 정의 된다고 하면 모든 x에 대해 f(x)가 성립하지는 않는다.