두 가지의 논리

 

컴퓨터와 인간지능 : Donald G. Fink 저, 이기호 역, 이화여대 출판부, 1986, Page 77~100

 

진리표

두 개의 문장표

선택의 논리

인과 관계

얼마나 많은 진리표가 있는가?

실무율의 논리

벤 도형

 

 

인간의 지능 활동은 언어의 논리에 맞도록 생각들을 모으고 변형시키면서 그 생각들을 조작하는 것이다. 컴퓨터는 인공 지능에서 이와 똑같은 활동을 한다. 즉 컴퓨터 논리의 규칙에 따라서 컴퓨터 단어들을 모으고 변형시켜야 한다.

컴퓨터 단어, 구절, 문장 사이의 관계를 취급하는 과학을 기호논리 (symbolic logic) 라고 한다. 대수에서 문자가 수치적인 값을 나타내며 부호 (+, -, = 등) 가 수치적인 값 사이의 관계를 나타내는 것처럼 기호논리에서 기호와 부호는 논리적인 정보를 나타내고 뒤에 있는 문자들은 (x, y, z) 알려지지 않은 (혹은 종속 관계에 있는) 논리적인 정보를 표시한다. 예를 들면, 문자들은 논리적인 문장들을 나타내는지도 모른다. 우리는 문자들을 논리의 부호와 연결시키며, 그리고 논리식을 만든다. 이 논리식은 주어진 문장의 형식에 의해 종속관계에 있는 문장의 형식을 찾아준다.

처음엔 논리식에 대해 의구심을 갖게 될 것이다. 어떤 식이 대수나 논리에서, 자연 언어로 번역될 수 있는 생각들과 그 생각들 상호 관계에 대한 간단한 표현이라는 것을 상기한다면 그 의구심은 사라질 것이다. 예를 들면 대수식 x = a + b 를 "x 의 값은 a 의 값에 b 의 값을 더하는 것과 같다" 라는 것으로 읽는다.

기호논리에서 이 식은 2 개의 서로 다른 의미를 갖는다. x = a + b 의 논리에 해석은 "문장 x 는 문장 a 가 참이거나 문장 b 가 참이거나, 혹은 둘 다 참일 때만 참이 된다" 는 것이다. 또 하나의 다른 해석은 "집합 x 는 집합 a 의 원소이거나 혹은 집합 b 의 원소이거나 혹은 집합 a 와 b 의 원소를 포함한다" 는 것이다.

이와 같이 똑같은 논리식의 두 가지 해석 (주석 : 대수에서 + 연결기호는 "~ 에 더한다" 를 의미하고 반면에 논리에서 + 는 "혹은 ... 혹은 모두" 를 의미한다. 이 차이점은 앞으로 보여주듯이 대수적 양을 취급하는 법칙이 논리적 문장이나 절을 취급하는 것과 동일할 필요가 없다는 것을 제시해준다.) 은 전산학에서 흥미있는 두 가지 형식의 기호논리를 나타내 준다. 첫 번째는 "진위 (true-or-false)" 의 논리이다. 참인 문장에는 진리값 1 이 할당되고 거짓의 문장에는 진리값 0 이 할당된다. 논리식을 푸는 데 미지수 x 가 진리값 1 을 갖는지 혹은 0 을 갖는지를 찾아야 한다. 두 번째는 "실무율 (all-or-none)" 논리이다. 그것은 생각들의 집합 (class) 을 취급한다. 숫자 1 은 주어진 논리적인 내용에서 모든 생각 (원소, elements) 을 포함하는 집합에 해당되는 반면 숫자 0 은 그런 원소를 포함하지 않는 집합을 나타낸다. 미지의 집합 x 를 푸는 데 있어서 주어진 집합 안에 포함된 원소들 사이에서 어떤 원소를 포함하는지를 찾는다.

논리문과 집합에 숫자 1 과 0 을 줌으로써, 컴퓨터가 소화하기에 적당한 2 진수 형태로 논리문의 형태를 바꾼다. 그러나 참과 거짓을 구별하기 위해서 혹은 생각과 집합의 닮음과 다르다는 것을 결정하기 위해 컴퓨터가 어떻게 2 진수를 조작하느냐에 관한 더 커다란 문제는 이 단계에서는 전혀 분명하지 않다.

다행히도 진리표 (truth table) 과 벤 도형 (Ven diagram) 부호논리의 관계를 알기 쉽게 나타내주는 두 가지 방법이 있다. 이 장에서는 이러한 것을 나타내는 표와 그림의 개발에 대해 집중적으로 다루고자 한다. 또한 진리표나 벤 도형의 전기적으로 유사한 회로에 대해서도 언급할 것이다.

진리표

먼저 논리식 x = a 의 의미와 결과를 조사하자. 진위 논리에서 이 식은 한 문장의 참 (혹은 거짓) 또는 다른 문장의 참 (혹은 거짓) 과 관계가 있다. 즉 "문장 x 는 반드시 문장 a 가 참일 때만 참이다" 라고 읽는다.

그 식은 결국 문장 x 와 a 가 정확히 똑같은 표현을 가질 때 만족된다. 예를 들면 x 가 "비가 온다" 라는 문장을 나타내고, a 또한 "비가 온다" 라고 나타낸다면 여기서는 어떠한 논의도 일어나지 않는다. 만약 하나가 참이라면 다른 것도 참이어야 하고, 그렇게 되면 x = a 이다. 그러나 그것들이 한 부분으로 되는 논리적인 내용의 문장에서는 똑같이 참이라는 것이 문맥상으로 나타나기 때문에 반드시 똑같은 표현일 필요는 없다. 따라서 x 는 "비가 온다" 이고 a 는 "하늘에 있는 구름에서 물방울이 떨어진다" 라고 하더라도 이것은 똑같이 참이기 때문에 그 식은 만족된다. 그러나 우리는 반드시 똑같은 참을 갖지 않는 문장들을 혼동하지 않도록 주의해야 한다. 따라서, a 가 "물방울이 떨어진다" 라고 할 때 그 물방울은 정원의 호스에서 떨어질 수도 있으며, 그러므로 x 는 a 가 참일 때 반드시 참인 것은 아니다.

즉 일반적으로 가지는 식에 대해서 단어 x 와 a 는 동일한 참이어야 한다. 따라서 이 식은 논리적 개념의 일치 (identity) 를 나타낸다. 동일한 식은 또한 거짓 문장을 동등시하는 데도 도움을 준다. 따라서 사실상 비가 오지 않는다면, 문장 x "비가 온다" 는 거짓이고, 논리적으로 동등한 문장 a, "하늘의 구름에서 물방울이 떨어진다" 라는 문장도 똑같이 거짓이다. 식 x = a 는 두 개의 문장이 둘 다 참이 아닌 사실에도 불구하고 만족된다.

그리하여 이 식은 똑같은 진리값을 갖는 두 개의 문장은 둘다 참이거나 거짓이란 사실을 말해준다. 여기에 다른 진위 관계는 존재할 수 없다. 이런 간단하고 자명한 결론들은 수학에서 식의 사고규칙 (rule-of-thought) 에 구체적인 근거가 된다.

이제 진리값은 1 로, 거짓의 값은 0 으로 주자. 우리가 가진 식은 문장 x 와 a 대신 진리값을 썼을 때, 즉 1 = 1, 그리고 0 = 0 과 같은 두 가지 경우에서 만족될 수 있다. 두 가지 다른 가능한 대입은 (0 = 1 과 1 = 0) 논리 (그리고 2 진수 계산) 에 위배된다. 왜냐하면 그것들은 똑같은 진리값을 갖는 두 개의 문장이 각각 거짓과 참이 될 수 있다고, 그리고 그 반대로도 가능하다고 선언했기 때문이다.

우리는 다음과 같이 표로 만들어진 동일한 문장 사이의 두가지 관계를 만들 수 있다.

이것은 동일한 것을 위한 진리표이다. 그것은 a 라는 문장이 거짓 (0) 이면 같은 문장 x 도 거짓 (0) 이며, 만약 a 가 참 (1) 이면 a 와 같은 x 도 참 (1) 이라는 것을 말해준다. 다른 어떠한 진위 관계도 동일하게 참이거나 거짓인 문장들 사이에서는 존재할 수 없기 때문에, 표에서는 단지 두 줄만이 존재한다.

같은 방법으로, 두 문장 사이의 관계가 반대인 부정 (negation) 을 설명할 수 있다. 논리식은 x = 이다. 그것은"문장 x 는 문장 a 가 거짓일 때만 참이다" 를 말해준다. 기호 a 위에 있는 바아 (bar) 는 "not" 을 나타내고 는 "not-a" 로 읽혀진다.

적당한 예로는, x = "비가 온다", a = "비가 오지 않는다", = "비가 오지 않는 것이 아니다" 이다. 식은 문장 x 와 가 똑같은 진리값을 갖는다는 사실이다. 즉, 둘 다 참이거나 둘다 거짓이다. 이 조건은 x 와 a 가 반대의 진리값을 요구한다. 즉, 하나가 거짓일 때 나머지는 참이 될 수 있다.

부정에 대한 진리표는 다음과 같다.

이 표에서 단지 두 줄로 되어 있는 것은 사고규칙을 매우 간단하게 구체화했다는 것이다. 논리적으로 반대되는 문장들은 각각 참과 거짓이거나 혹은 거짓과 참이어야 한다. 그들 사이에는 다른 어떠한 논리적인 관계도 존재할 수 없다.

한 문장이 다른 문장과 같이 가질 수 있는 유일한 관계는 논리적인 독립 (logical independence) 인데 그것은 한 문장의 참이거나 거짓이 다른 문장의 참이나 거짓이냐에 관계없을 때 나타난다. 예를 들면 이러하다. a = "비가 온다", x = "실내는 건조하다."

우리는 이들 두 개의 표를 "단순 문장 (single-statement)" 진리표라고 부른다. 왜냐하면 각각은 주어진 문장 a 와 종속적인 문장 x 를 갖기 때문이다. 그것들은 논리적 총체의 두 부분을 나타낸다. 주어진 문장과 또 다른 논리적으로 관련된 문장 사이에서 단지 세 개의 진위관계가 존재한다. 이것들은 일치, 부정, 그리고 독립이다.

우리는 벽 스위치로써 일치와 부정을 위한 전기회로를 그림으로 보여줄 수 있다 (그림 1). 스위치의 손잡이가 올려지면 스위치 내의 접촉은 더 가까워지고, 전류는 p 에서 q 로 흐른다. 손잡이가 내려지면 접촉은 떨어지고 전류는 흐르지 않는다. 주어진 문장 a 를 "스위치의 손잡이가 올려진다" 라고 하고, 그리고 종속적인 문장 x 를 "전류는 p 에서 q 로 흐른다" 라고 하자. 반대 문장은 "스위치의 손잡이가 내려진다" 와 "전류는 p 에서 q 로 흐르지 않는다" 이다.

 

그림 1  벽 스위치의 두 위치와 각 회로 도형.

만약 벽에 있는 스위치가 벽 오른편 위에 설치되었다면 그것의 회로는 항등소 즉 a = x 를 나타낸다. 즉 문장 a 가 참이면 문장 x 는 거짓이다. 부정을 나타내기 위해서 스위치는 거꾸로 설치된다. 그러면 문장 는 a 가 참일 때 참이고 a 가 거짓일 때는  는 거짓이다. 즉 a =  이다.

벽 스위치 회로는 두 가지 입력 조건과 두 가지의 출력 조건을 갖는다. 이것들은

나중에 우리는 컴퓨터에서 사용된 스위치들이 0 볼트 혹은 1 볼트를 받는 입력 전극과 0 볼트나 혹은 1 볼트를 나타내는 출력 전극을 갖는다는 것을 알 게 될 것이다. 입출력 볼트는 부정회로와 같지 않고 항등회로와 비슷하다.

두 개의 문장표

다음 단계로 두 개의 주어진 문장 a 와 b 에 대해 생각할 때 더욱 흥미롭다. 전에 처럼 a 는 "비가 온다" 라고 하고, b 는 "풀이 젖었다" 라고 하자. 지금 우리는 논리적으로 종속적인 문장들 가운데서 어떤 것이 진위 관계가 가능한지를 고려해 본다. 종속적인 문장 x 는 "비가 오고 그리고 풀이 젖었다" 이다. 여기서 중요한 단어는 "그리고 (and)" 즉 언어의 논리적 관계이다. "그리고" 를 위한 논리적 기호는 "ㆍ" 이다. 그것은 두 문장의 논리적 개념의 접속사를 나타낸다. 논리식은 x = aㆍb 이다.

진리표는 다음과 같다.

이 표에는 네 줄이 있는데, 그 이유는 2 개의 주어진 문장 a 와 b 는 참(1) 과 거짓(0) 의 4 가지 조합으로 정리될 수 있기 때문이다. 첫 줄에서 문장 a 와 b 가 둘 다 거짓 (둘 다 0) 이면 종속문장 x = aㆍb 도 거짓(0) 이다. 이것을 모두 완전히 씀으로써 조사할 수 있다. 즉 비가 오지 않고 그리고 풀이 젖지 않았다면, "비가 오고 그리고 풀이 젖었다" 라는 문장은 거짓이다. 마찬가지로, 우리는 표의 두 번째와 세 번째 줄을 읽는다. 만약 주어진 문장의 하나는 참이고, 다른 하나는 거짓이라면 논리적으로 종속문 x = aㆍb 는 거짓이다. a 와 b 가 둘 다 참일 때만, 네 번째 줄에서 표현된 것처럼 x 는 참이 될 수 있다.

이런 "두 개의 문장" 의 진리표 (두 개의 문장 a 와 b 가 주어진다) 는 접속사의 논리적 관계를 표현한다. "그리고" 에 의해 연결된 두 개의 문장은 두 개의 두 가지가 모두 참일 때만 참인 문장을 만들고 그렇지 않을 경우는 거짓인 문장을 만든다.

두 개의 문장 사이에 논리적 관계사 (두 개의 문장 a 와 b 가 주어진다) 는 접속사의 논리적 관계를 표현한다. "그리고" 에 의해 연결된 두 개의 문장은 두 가지가 모두 참일 때만 참인 문장을 만들고 그렇지 않을 경우는 거짓인 문장을 만든다.

두 개의 문장 사이에 논리적 관계가 "그리고" 는 두 가지 생각을 함께 가져오는 것을 나타낸다. 그밖의 다른 뜻을 갖지는 않는다. 특히 그것은 생각 사이의 어떤 원인과 결과의 관계를 암시하는 것이 아니다. 문장 x "비가 오고 그리고 풀이 젖었다" 는 "비가 오고 있다. 그러므로 풀이 젖는다" 란 문장과는 논리상 다른 의미를 갖는다. 원인과 결과 접속사 "그러므로" 와 그것의 가까운 관계사 "~ 때문에 (because)" 는 다음에 나오겠지만 두 개의 문장에 대한 다른 진리표에 의해 표현된다.

접속사에 관한 벽스위치 회로는 <그림 2> 에 나타나고 있다. 여기서 우리는 두 개의 벽스위치 A 와 B 를 갖는다. 문장 a 는 "스위치 A 의 손잡이가 올려져 있다." b 는 "스위치 B 의 손잡이가 올려져 있다" 그리고 x 는 "전류는 P 에서 Q 로 흐른다."

x 는 문장 a 와 b 가 참일 때만 참이다. 즉 두 스위치가 닫혀져 있을 때만 전류는 흐른다. 이 회로의 입출력 조건은 다음과 같다.

접속사를 위한 진리표에서 0 과 1 을 가진 이들 조건의 비교는 회로가 네 줄로 그 표를 만족한다는 것을 확고히 해준다. 회로가 정해지는 다른 방법은 없다. 회로는 접속사의 논리적인 개념과 전기적으로 매우 유사한 것이다.

선택의 논리

이제 선택의 논리적 개념에 대해 설명하겠다. 양자택일의 결정은 인공 지능의 기본적인 연산 가운데 하나이다. "만약 어떤 문장이 참이라면, 다음 명령을 계속 수행해 나가고, 그렇지 않으면 다른 명령으로 되돌려 보내라" 라고 말할 때, 우리는 두 가지 중 하나가 선택되기를 요구한다.

논리에서 양자 택일의 주요한 관계는 "선언명제 (disjunction)" 라고 하며 +부호로 표시하고 의미는 "혹은…혹은 모두" 이다. 논리식은 x = a + b 이고 그것은 똑같은 논리적 의미를 갖는 두 가지 방법으로 읽는다. 먼저, "문장 x 는 문장 a 가 참이거나 혹은 b 가 참이거나 혹은 a, b 둘 다 참일 때 참이 된다." 두 번째 해석은 "만약 문장 a 나 b 둘 중 하나가 참이면 혹은 a, b 둘다 참이라면, 그러면 x 는 참이다."

앞에 주어진 문장을 관찰함으로써 선언명제를 위한 진리표를 만들 수 있다.

이 표는 두 가지 문장 중 적어도 하나의 진리값에 따른다는 중요한 개념을 구체화시킨다.

엄밀히 말한다면 컴퓨터 내에서 사용된 관계 논리적인 개념은 선언명제의 반대이다. 즉, "문장 x 는 a 와 b 모두가 거짓일 때만 참이 된다" 라고 문장은 정리된다. 식은 x = a ↓ b 이다. 이런 정의에 의해서 만들어진 표는 다음과 같다.

이것을 논리적으로 "칼표 (dagger)" 관계라고 부르고, 약어 ↓ 로 표시한다. 물론 x 행에서 숫자들이 선언명제표에서 대응하는 숫자와 정확히 반대라는 사실에 주의하라. 이런 이유 때문에 그것은 "nor" 관계라 부른다. "or" 앞에 "n" 이라는 "논리적으로 반대" 를 붙인 것이다.

선언 명제에 대한 벽스위치 회로는 <그림 3> 으로 볼 수 있다. 오른쪽이 올려진 스위치 두 개가 "평행으로" 연결되어 있다. 문장과 입출력 조건은 이 책 85 페이지에서 열거한 것과 같다. 만약 우리가 선언명제표와 회로의 연산을 비교한다면 그것이 표에서 각 줄과 일치하고 다른 방법으로는 결정할 수 없음을 알 게 된다. 회로는 선언명제와 정확히 전기적인 유사점을 갖는다. 전류는 스위치 A 혹은 B 가 닫혀졌을 때, 또는 둘 다 닫혀 있을 때 흐른다.

선언명제와 논리적으로 반대가 되는 "nor" 관계를 나타낼 때 우리는 똑같은 회로 (그림 3) 를, 또 똑같은 문장들 그리고 똑같은 입출력 조건을 사용한다. 그러나 벽에 있는 스위치 둘을 거꾸로 놓는다. nor 진리표를 가지는 이 회로의 연산을 비교하면 정확한 유사점을 찾게 된다. 2극진공관과 트랜지스터 회로에서, 우리는 0 과 1 은 입력 전극으로 바꾸거나 혹은 부정회로를 끼워 놓음으로써 스위치를 거꾸로 돌 게 하는 효과를 얻을 수 있다.

컴퓨터 내에서 사용되는 다른 논리 관계가 아직도 남아 있는데 그것은 문장 "x 는 a 나 b 혹은 둘 다 거짓일 때 참이된다" 이다. 그 식은 x = a|b 이고 표는 다음과 같다.

이 관계들을 생략해서 "|" 라 표시하고 "스트로크 (stroke)" 라고 부른다. 그것은 x 행은 접속사 ("그리고") 표에서 대응하는 것과 정반대이다. 가끔 "nand" 라고 불려진다.

nand 관계를 위한 회로는 and (그림 2) 와 같고 닫지 스위치 두 개가 거꾸로 라는 것은 다르다. nand 는 and 와 물리적으로 반대이기 때문에 이런 정리는 반대로 바꾼다.

인과 관계

인과 관계의 논리란 무엇인가? 자연 언어의 관계사 "~때문에 (because)" 와 "그러므로 (therefore)" 는 어떤가? 예를 들어 우리는 이미 이런 주제를 다루어 왔다. 이것은 "a 가 참이거나 혹은 b 가 참이거나 또는 둘 다 참이라면, x 가 참이다" 라는 형태의 문장들을 취급한다. 여러 가지 상황에서 a 나 b 혹은 두 가지가 다 참이라는 사실은 x 가 참이 되는 것에 대한 원인을 나타낸다. 즉, "a 가 참이기 때문에 혹은 b 가 참이기 때문에 혹은, 두 가지 다 참이기 때문에 (because) x 가 참이다" 라고 얘기할 수 있다. 혹은 바꾸어서, "x 가 참이기 때문에 그러므로 (therefore) a 는 참이어야 한다. 혹은 b 가 참이어야 한다. 혹은 둘 다 참이어야 한다" 라고 말한다. 접속사는 "때문에" 와 "그러므로" 를 위한 구조를 준비한다. 이런 관계는 사실상 다른 진리표의 정의된 문장에 삽입된다.

인과 관계 논리의 중요한 예를 제시하는 마지막 진리표를 위해 우린 "a 가 b 를 포함한다" 라는 논리적인 생각을 한다. 이 관계에 대한 문장은, a 가 거짓이거나 b 가 참일 때 x 는 참이다. 식은 x = a → b 이다. 이 식에서 비록 진리표를 그릴 수 있다 하더라도 이 단조로운 문장은 이해하기에 어렵다.

이 표는 일관된 논리를 나타낸다. 앞의 예에서처럼 a = "비가 온다" 그리고 b = "풀이 젖는다" 를 취한다. 비와 풀이 젖는 것 사이의 일방적인 포함은 "비가 온다는 것은 반드시 풀이 젖는다는 것을 포함하지만, 풀이 젖는 것은 반드시 비가 온다는 것을 포함하지 않는다는 사실" 을 일반적인 형태로 취한다 (정원의 호수는 풀을 젖게 할 수 있지만 비가 오는데 풀이 젖지 않을 수 없기 때문이다).

따라서, 만약 비가 오지 않는다면, 풀이 마르거나 (첫째 줄) 혹은 젖는 것 (둘째 줄, 다른 것을 이용해서 젖게 할 수도 있고, 이미 전에 비가 왔을 수도 있다) 은 사실이다. 그러나 비가 왔다면 풀은 젖어야 된다. 이런 조건은 "비가 오는 것이 풀을 마르게 한다" 라고 말하는 셋째 줄에서 x 는 거짓이 되게 하고, "비가 오는 것은 풀을 젖게 한다" 라는 넷째 줄에서 x 는 참이 된다.

이것은 "비가 오는 것은 반드시 풀을 적셔야 하지만, 풀이 젖는 것은 반드시 비가 오게 하는 것은 아니다" 라고 얘기한다. 포함 관계에 대한 기호는 화살표로 왼쪽의 가정에서 오른쪽의 결론으로 가리킨다. a → b 그리고 (인과 관계의 문맥에서) 그것은 "a 는 b 의 원인이다. 그러나 b 는 a 의 원인은 아니다" 라고 읽는다.

포함 관계에 대한 회로는 <그림 3> 에 나타난 바와 같지만 스위치 A 는 반대이다. 그렇지 않으면 회로, 문장 그리고 입출력 조건은 <그림 3> 의 것과 같다. 포함 관계에 대한 표를 이 회로와 비교하면 정확한 전기의 유사점이 있다는 것을 안다. 컴퓨터 회로의 논리를 접속사에서 포함 관계로 바꾸려면 스위치 A 의 0 와 1 의 입력 전극을 교환하면 된다.

얼마나 많은 진리표가 있는가?

컴퓨터를 고안하고 계산하는 프로그램을 만드는 데 중심이 되는 문제 중의 하나는 진리표가 얼마나 많은가 하는 것이다. 진리표가 많지 않다면 각각의 형태를 전기의 유사점 (그림 2, 3) 을 사용해서 나타낼 수 있다. 그리고 모든 가능성이 판명될 때까지 차례로 각 진리표에 의해서 계산의 논리적인 관계를 조사하는 프로그램을 만들 수 있다. 그러나 진리표가 많다면 이런 직선적인 절차는 비현실적이다. 놀라운 사실은 간단한 논리문제에 있어서 까지도 진리표의 수가 매우 많아진다는 것이다. 네 개 이상의 문장들이 논리적인 관계를 위해 그룹으로 조사될 때마다 (그리고 이것은 때때로 간단한 문제에서조차 나타난다.) 숫자들이 너무 크기 때문에 체계적인 논리로 진행될 수 없다. 컴퓨터는 상당히 비싸고, 논리적인 가능성에 대한 철저한 조사 (주석 : N 개의 다른 문장이 모든 가능한 참, 거짓의 결합으로 비치된 진위표의 수는 이다. 다섯 개의 문장에 대하여 또는 4,294,967,296 개의 다른 진리표가 있다. 이것들을 전기적으로 나타내려면 1,228,158 개의 다른 전기 회로가 필요하다.) 를 완료시키는 데 긴 시간이 필요하다. 반면에 그런 문제는 단지 두 세 개의 문장으로 되어 있는 부분적인 문제들로 나누어야 하며, 상식은 하나의 부분적인 문제에서 다음 문제로 나누어야 하며, 상식은 하나의 부분적인 문제에서 다음 문제로 가는 논리적인 방법을 선택한다.

형식적인 논리와 대조하여 보면 문제를 푸는 데 상식을 사용하는 것은 발견적 교수법 (heuristics) 으로 알려진 "순수하지 않은" 수학의 형식이다. 발견적 교수법은 대부분 추리에 의거한 규칙을 만드는 데 그 규칙은 실제 세계에서 의미있고 유용한 관계를 제시해준다. 물론 발견적 교수법을 하는 사람은 논리적이다. 또한 창의력이 풍부하고 현명하며 매우 총명하다. 더욱이 목욕통 속에서의 아르키메데스와 같은 발견적 교수법 학자는 지금까지 무시되어온 사건의 의미 심장함에 놀란다. 발견적 교수법은 논리를 포함하는, 손에 들어오는 어떤 도구도 사용한다. 결과는 매우 다양하여 경험, 행운, 그럴 듯한 짐작, 뜻밖의 수지맞는 발견을 하는 재주, 영감 그리고 용기 등에 의존한다. 컴퓨터의 지능은 논리 (logic) 에만 의존하지 않는다. 지능적인 기계가 자연적인 사고방식에 모방되어 만들어지며 프로그램될 수 있다는 또 다른 방법적 교수법의 압도적인 도움을 받는다.

실무율의 논리

컴퓨터의 회로로 모방될 수 있는 진위의 논리에 대한 표를 정할 때와 마찬가지로 우리는 숫자 0 과 1 에 대한 다른 의미를 검사해야 한다. 0 은 아무것도 없다 (none) 는 것을 의미하며, 1 은 전부 (all) 를 의미한다고 가정하자. 이것은 "거짓" 과 "참" 의 개념과는 다른 개념이지만, 그러나 "all" 과 "none" 사이의 관계는 같은 형식이다. 참과 거짓을 취급하기 위해서뿐만 아니라 사고의 종류를 구별하기 위해서도 같은 전기 회로를 사용할 수 있다. 숫자 1 은 생각의 집합에 모든 원소들을 나타내고 0 은 생각의 집합에 아무런 원소도 나타낼 수 없다.

이런 사고체제 - 대수계 (algebra of classes) 라고 불리운다 - 는 명사라는 품사에 대한 생각으로 제시될 수 있다. 우리들이 생각하는 명사는 공동으로 어떤 것을 갖는 것들의 일반적인 집합을 나타낸다. 사전에서 다양한 정의는 세부된 것을 나타내고, 정의에서 사용된 단어는 세분된 것의 더 세분된 것이다. 만약 우리가 컴퓨터 회로와 프로그램 내에서 자연 언어이 복잡성을 나타낼 수 있다면, 부분집합의 배치를 취급하도록 조정하여야 한다. 1 장의 "휘젓고 다니는 탁발승" 은 논리에 의거한 장치이다.

집합들 사이의 논리적인 관계를 제시하기 위해서 필라델피아 교외에 있는 애빙턴 남부 캠퍼스 고등학교와 같은 특정한 학교의 학생들을 생각해보자. 1, 2 학년 두 학년으로의 구분은 <그림 7> 로 쉽게 그릴 수 있도록 하기 때문에 이 학교가 선택된다 (이 학교는 컴퓨터 과학교육에 전자 계수형 컴퓨터를 처음으로 채택한 학교 중의 하나이다).

이 학교의 학생들의 가장 일반적인 학급은 1 = 애빙턴 남부 캠퍼스 고등학교에 있는 모든 학생이다. 다른 논리는 0 = 애빙턴 남부 캠퍼스 고등학교 안에 있는 학생이 아니다.

이런 제약점 가운데 약간의 세분을 명시할 수 있다.

남학생과 여학생들은 분리되어 있지만, 스포츠와 우등생에서의 부분집합에서는 남-녀, 1학년-2학년 구별에 대해서 중복이 나타나는 것을 알 게 된다. 이들 부분집합 사이의 관계를 어떻게 나타내는가?

벤 도형

이런 종류의 그래프적인 표현에 대해서는 영국의 논리학자 벤 (John Venn, 1834 - 1923) 이 제시한 도형을 이용할 수 있다. 벤 도형상에서 점은 논리적인 내용에서 기본적인 개념 (원소) 을 나타낸다. 우리는 한 학생에 대해 한 점을 기입할 수 있다. 그림의 전체 안에 있는 모든 점은 일반적인 학급 1 = 애빙턴 남부 캠퍼스 고등학교에 있는 학생 모두를 나타낸다 (그림 4).

한 부분에 있는 점들은 부분집합의 원소를 나타낸다. 따라서 <그림 4> 에서 남학생과 여학생은 별개의 부분집합이다. 그들은 함께 전체 그림을 채운다. 왜냐하면 그들이 전체 학생을 구성하기 때문이다. 우리는 부분 하나 하나를 모두 남자인 축구반과, 모두 여자인 육상 하키반과 같은 더 작은 부분집합으로 나눌 수 있다 (그림 5).

우등생과 토론반같이 남학생과 여학생 사이의 경계가 중복이 되는 집합을 나타낼 수 있다 (그림 6). 보이는 것처럼 몇 명의 토론자가 우등생이기 때문에 또 중복이 있다. 또한 축구선수와 토론자가 동시에 되는 학생이 없다는 것을 알 수 있다 (이들 부분집합 사이에는 중복이 없다).

마지막으로, 만약 우리가 2 학년에 비해 1 학년 중 운동에 참여하며, 우등생인 학생을 파악할 수 있다면, 우리는 매우 복잡한 그림을 얻을 수 있다 (그림 7).

더 큰 부분집합을 만들기 위해 몇 개의 부분집합의 외형선 주위에 경계를 그릴 수 있고, 그리고 이 방법으로 우리는 "not" 그리고 "and" 와 "or" 등과 같은 논리 관계를 표현할 수 있다. 따라서 <그림 7> 에 나타난 짙은 경계선은 토론자나 육상 하키 선수이거나 혹은 우등생인 학생들을 나타내며, 두 개 이상의 활동에도 참여하는 학생도 마찬가지로 이런 부분집합에 포함된다.

예를 들면, 토론반이며 우등생인 학생이 있다. 그림에서 굵은 외형선밖에 있는 점들은 운동이나 우등생의 어떤 것에도 포함되지 않는 학생을 나타낸다. 이들 관계를 분명히 하기 위해서, 우리는 A 와 B 두 집합 사이의 관계를 <그림 8> 에서 나타내는데, 그것은 부정, 접속사, 선언명제, "nor" 와 그리고 "nand" 를 위한 진리표와 일치한다. 빗금친 부분과 굵은 선은 이들 논리적인 개념에 일치하면서 집합이 위치하는 내에서 범위를 나타낸다. 예를 들면, 선언명제에 대해서 A 나 B 혹은 A 와 B 둘 모두에 들어 있는 모든 원소를 포함한다. "nor" 그림의 빗금친 부분은 선언명제의 역이고, "nand" 는 접속사의 역이다.

이들 벤 도형에 대한 전기적인 유사점은 <그림 2> 와 <그림 3> 에서 나타난다. 이들 회로들은 참과 거짓 논리만큼 집합 논리에 대해서도 잘 사용될 수 있다.

요약하면 언어의 관계사는 생각 사이의 논리적인 관계를 나타낸다. 이들 관계는 전기적으로 컴퓨터 회로로 나타낼 수 있는 진리표나 집합그림, 혹은 둘 다에 의해 표현될 수 있다. 동시에 많은 생각에 대해서 꽤 복잡한 연결을 해야 하는 것을 피하려면, 그것들을 한 번에 둘씩 (혹은 나쁜 경우는 한 번에 세 개씩) 을 묶고 문제, 자료 그리고 자료의 조작을 적당하게 나타내고, 그리고 원하는 결과로 이끌어 주는 계산에 관한 프로그램과 전기회로에 도달하기 위해서 상식적인 간단한 정리를 따른다.