완전성과 세계 
병장 이승일 02-16 17:09 | HIT : 139 
 

 
   

완전성과 세계

    메타 논리학에는 일관성과 완전성이라는 중요한 두 개념이 있습니다. 이들을 형식적으로 정의하는 방법은 꽤나 복잡하지만, 그 핵심적인 의미는 형식적인 설명 없이도 쉽게 이해할 수 있습니다. 일관성이란, 우리가 흔히 생각하는 대로 어떤 언어체계 안에 모순이 없다는 의미입니다. 그 체계에서 논리 규칙을 통해 도출(연역)될 수 있는 어떠한 문장도, 체계 안의 다른 문장들과 양립 가능하다는 뜻이지요. 좀 더 정확하게 말하자면, 어떠한 문장들의 집합이 있을 때, 그리고 그 문장집합으로부터 p 라는 명제와 그것의 부정인 -p(not p) 가 동시에 도출되지 않을 때, 오직 그 때에만 그 문장집합은 일관성을 갖고 있다고 말합니다. 
한편, 완전성이라는 개념은 일상적으로 쓰이는 것과는 약간 다르므로 낯설 수 있겠습니다만, 이 역시 간단한 개념입니다. 그러나 말로 풀어서 설명하려면 조금 복잡해질 수 있으므로 하나의 예를 들면서 설명해보도록 하겠습니다. 다음과 같은 문장들의 집합을 한번 생각해봅시다. 

  a. 어떤 사과는 빨갛다.
  b. 모든 빨간 사과는 맛있다. 
  c. 어떤 사과는 맛이없다. 
  d. 어떤 사과가 빨갛다면, 그 사과는 파랗지 않다. 

자, a,b,c,d 네 문장들에는 다음과 같은 용어들이 쓰였습니다. ‘어떤’, ‘모든’, ‘사과’, ‘빨갛다’, ‘맛있다’, ‘맛이없다’, ‘파랗지 않다’, 이 용어들은 일반적으로 다음과 같이 분류합니다.

어떤, 모든 : 양화사(quantifier)
사과 : 개체상항(individual constant)
맛있다, 빨갛다, 파랗다 : 술어(predicate)
~ 하지 않다.(NOT) : 논리상항(logical constant)
( ‘는’,‘가’ 라는 조사는 생각하지 말도록 합시다. ‘파랗지 않다’, ‘맛이없다’ 는 파랗다, 맛있다의 부정으로 간주했습니다.)

양화사나 개체상황, 논리상항이 무슨 뜻인지는 대충 어느 정도 직감적으로 이해할 수 있으리라고 생각합니다. 정확한 이해는 여기서 필요하지 않을 듯 하니 그냥 넘어가지요. 이제 이 문장들 안에서 쓰인 양화사와 개체상항, 술어들을 조합해서 a,b,c,d 와는 다른 새로운 문장을 만들어봅시다. 예를 들어 “어떤 사과는 빨갛지 않다.” 라는 문장을 만들어볼 수 있습니다. 이 문장은 ‘어떤’ , ‘사과’ , ‘빨갛다’ , ‘~하지 않다’ 와 같이 a,b,c,d에서 사용된 요소들의 조합으로 이루어져있습니다. 이러한 것을 이 체계의 적형식 이라고 부릅니다. 간단히 말해 ‘우리가 사용하기로 약속한 요소들로만 구성된 문장’이라는 뜻입니다. 한편, 우리는 a,b,c,d 로부터 “어떤 사과는 빨갛지 않다.”라는 문장을 '연역'해낼 수 있습니다. 모든 빨간 사과가 맛있는데(b), 어떤 사과는 맛이 없다면(c), 어떤 사과는 빨갛지 않다는 것이 논리적으로 도출됩니다. 즉, 만약 b 와 c 가 참이라면, “어떤 사과는 빨갛지 않다” 라는 문장도 참임을 우리는 ‘증명’ 할 수 있습니다. 이럴 때 이 문장은 a,b,c,d 로부터 ‘도출가능하다’ 라고 말합니다. 
  이번에는 “모든 파란 사과는 맛있다” 라는 문장을 살펴봅시다. 이 문장 역시 a,b,c,d 에서 사용된 요소들로만 구성된 적형식입니다. 그런데 우리는 a,b,c,d 로부터 이 문장을 도저히 도출해낼 수가 없습니다. a,b,c,d 가 모두 참이라고 할지라도, 과연 모든 파란사과가 맛있는지 맛없는지는 알 길이 없습니다. 이 문장은 그래서 적형식임에도 불구하고 도출가능하지 않습니다. 이렇게 어떤 언어 체계 안에 (그것의 적형식임에도 불구하고) 도출가능하지 않은 문장이 존재할 경우, 그 언어체계는 ‘완전하지 않다’, ‘불완전하다’ 라고 말합니다. 완전성은 물론 그 반대를 의미하겠지요. 

컴퓨터 프로그램 역시 하나의 언어체계이며 따라서 일관성, 완전성 같은 개념이 적용됩니다. 일관성을 결여한 프로그램은 말하자면 거의 쓰레기로써, 프로그램으로서의 역할을 할 수가 없습니다. 반면에 완전성은 어떠한 일관적인 프로그램도 성취할 수 없는 속성입니다. 모든 일관적인 프로그램은 불완전할 수밖에 없습니다. 그리고 이 불완전성이 바로 ‘버그’ 를 의미하는 것입니다. 일반적으로 프로그램상의 버그는 정의되지 않은 상황 때문에 발생합니다. 분명 프로그램의 규칙에 합당한 명령어를 쳤는데, 이 명령어가 참인지 거짓인지 그 프로그램 안에서는 결정을 할 수 없을 경우 버그가 발생하는 것입니다. 이런 상황을 마주칠 경우 프로그램은 계속 참/거짓을 반복하게 됩니다. 일종의 무한 루프에 빠진 것이지요. 가만히 놔두면 컴퓨터는 메인보드가 까맣게 될 때까지 계속 참, 거짓, 참, 거짓, 참 거짓, 참, 거짓, 헉헉 참, 거짓, 참, 거짓... 을 반복 할 것입니다. (러셀의 페러독스와 같은 경우도 마찬가지 결과를 가져옵니다.) 이러한 상황을 방지하기 위해서 프로그램 개발자들은 정의되지 않은 명령어가 입력되면 자동적으로 그 프로그램이 ‘자살하게끔’ 추가적인 알고리즘을 마련해 놓습니다. 이것이 바로 다운down입니다. 우리는 흔히 컴퓨터의 다운이 전혀 계획되지 않은 에러의 일종이라고 생각하곤 합니다. 그러나 컴퓨터에게 있어서 “아무것도 하지 않고 가만히 있는 것” 역시 하나의 선택이며, 그러한 선택을 하게끔 이미 프로그래밍 되어있어야지만 아무것도 하지 않을 수 있는 것입니다. 만약 ‘자살’로 유도해주는 알고리즘이 없다면, 컴퓨터는 다운되는 것이 아니라 끝없이 연산을 계속합니다. 과연 어떤 프로그램이 자살한 것인지, 아니면 무한 루프에 빠져있는지를 알아보려면 windows 에서 cntrl + alt + del 을 눌러서 CPU 새용내용을 확인해보면 됩니다. 프로그램이 인위적으로 다운되었을 경우, CPU 는 평온한 상태를 유지하면 10% 이내의 사용율을 보여줄 것입니다. 그러나 무한 루프에 빠져있다면 거의 100%에 가까운 점유율을 보여줄 것입니다. 

  저는 앞에서 ‘어떤 일관적인 프로그램도 완전할 수 없다’ 라고 말했습니다. 다시 말해 제대로 된 어떤 프로그램도 버그가 없을 수는 없다는 말이지요. (이 말이 이상하게 들린다면, 그것은 여전히 일관성과 완전성의 개념을 구분하지 않고 있기 때문입니다. 비일관적 프로그램은 그것이 모순적 상황, 즉 어떤 문장이 참이면서 ‘동시에’ 거짓인 상황을 만들어내는 반면, 불완전한 프로그램은 어떤 문장이 참인지 거짓인지 결정할 수 없는 상황을 발생시킨다는 것입니다.) 모든 일관적인 체계가 불완전하다는 것은 사실 유명한 <괴델의 불완전성 정리>로부터 직접 따라나오는 명제입니다. 괴델이라는 사람은 ‘괴델화’ 라는 매우 독창적인 방법을 이용해서, 유한개의 공리로 이루어진 일관적인 형식체계가 완전할 수 없음을 증명했습니다. 무한개의 공리로 이루어진 형식체계는 우리가 만들 수가 없기 때문에, 괴델의 정리는 우리가 인간이 만들 수 있는 모든 일관된 형식체계에 적용된다고 간주할 수 있습니다. 이 때문에 사람들은 괴델의 정리가 인간 이성의 한계를 의미한다고 주장하기도 합니다. 그러나 이 때의 ‘한계’라는 말은 매우 신중하게 사용되어야합니다. 왜냐하면 우리는 기존의 공리체계에 계속 새로운 공리를 추가해 감으로써 불완전성을 끊임없이 극복해 나갈 수 있기 때문입니다. 어떤 형식체계에 참/거짓을 정의할 수 없는 문장이 존재한다면, 우리는 그 문장이 참 혹은 거짓이 되게끔 새로운 공리를 추가할 수 있습니다. 강제적으로, 혹은 폭력적으로 선택하는 것이지요. 이런식으로 공리체계는 그것이 마주치는 불완전한 상황을 극복해나갈 수 있습니다. 버그를 잡기 위해 패치를 계속 만들어내는 것과 동일한 상황이라고 생각하시면 됩니다. 계속 패치가 나오는 한, 우리는 마치 그 프로그램이 완전한 것처럼 여길 수 있습니다. (이것은 인공지능의 학습과 관련해서도 중요한 부분으로 생각됩니다. AI 에게 이미 프로그램된 언어는 불완전할 수밖에 없고, 따라서 버그가 생길 수밖에 없지만, 만약 AI 스스로 학습에 의해 자신의 공리체계를 확장시켜나갈 수 있다면, 그러한 불완전성은 극복될 수 있을 것입니다.)

완전성과 관련해서 마지막으로 한 가지 더 말해보고자 합니다.(사실 이 말을 하기 위해 이 글을 썼습니다.) 우리가 살고 있는 세계는 일관적이면서도 동시에 완전한 것으로 우리에게 비추어집니다. 우선 세계가 일관적이라는 말은, 상당히 깊은 함축을 지니고 있지만, 여기서는 그저 직관적으로 이해해달라는 부탁을 드리겠습니다. 단순히 우리가 살고 있는 물리적 세계에는 근본적으로 모순 된 사건이 발생하지 않는다는 뜻으로 받아드리면 되겠습니다. (사회의 모순이라거나 부조리는 엄밀한 의미의 모순이 아니기 때문에 고려의 대상이 아닙니다.) 한편 세계는 완전성도 소유하고 있는 것으로 여겨집니다.정의되지 않은 상황 - 컴퓨터의 버그와 같은 - 이 발생하지 않는다는 뜻이지요. 우리가 무슨 짓을 하더라도, 세계는 그것에 알맞은 상황을 제시해 줍니다. 우리가 세계의 어떤 곳을 가든지 그곳엔 무언가 그럴법한 것들이 기다리고 있습니다. 아무리 멀고 먼 우주를 보더라도 거기엔 알맞은 것들이 기다리고 있으며, 아무리 작은 곳을 보아도 여전히 잘 마련된 상황과 마주하게 됩니다. 우리가 무슨 행동을 하건, 이 세계에 무슨 종류의 힘을 행사하건, 세계는 무언가 그럴법한 대답을 내놓습니다. 이러한 현상은 저에게 경이로움과 토나올 정도의 답답함을 동시에 느끼게 하곤 합니다. 도대체 이 세상은 그 구체적인 상황들을 어떻게 모조리 다 정의해놓았을까요? 물론 여기서 ‘정의’라는 것은 다분히 비유적인 표현이지만 말입니다. 어쨌거나 우리는 아직까지 이 세계가 무한루프에 빠지거나 다운된 경우를 보지 못했습니다.... 이것은 아마도 우리의 세계가 아마도 메트릭스는 아닐 것이라는 잠정적인prima facie 증거인지도 모르겠습니다. 그러나 반대로 이렇게 생각해 볼 수도 있지 않을까 합니다. 이 세상은 원래는 불완전함에도 불구하고, 마치 우리가 버그를 잡기 위해 끊임없이 패치를 개발하듯이, 끊임없이 어떤 원리들이 추가되고 있는 것은 아닐까요? 아마도 양자역학에서 우리는 이와 같은 상상과 가장 쉽게 마주칠 수 있을 것입니다. 양자역학에서 입자들의 여러 성질들 - 이를테면 운동량과 위치와 같은 성질들 - 은 단지 확률적으로만 제시됩니다. 양자역학의 원리는 한 입자가 어떤 운동량과 위치를 갖게될지 결정할 수 없다는 뜻이지요. 즉, 입자의 운동량과 위치는 양자역학적 원리들로부터 도출되지 않습니다. 현대물리학은 입자들이 어떤 운동량을 갖고 어느 곳에 위치하게 될 것인지 '정말로' 정의되지 않았다고 생각할만한 충분한 근거들을 가지고 있습니다. 이 생각이 사실이라면, 자연은 강제적이고 폭력적인 ‘선택’ 을 함으로써, 다운되거나 무한루프에 빠지는 상황을 만들지 않고 현실이 계속 진행되도록 만들고 있는지도 모릅니다. 만약 그렇다면 선택은 매 순간 전 우주에 걸쳐 일어나고 있을 것입니다. 입자들은 매 순간 전 우주에 걸쳐 확률적으로 성질들을 획득하니까요. 어쩌면 이 세계의 프로그래머 - 그를 신이라고 부르건, 혹은 다른 무엇이라고 부르건간에 - 가 매 순간 이 세상에 개입하고 관여하고 있는지도 모릅니다. 우주라는 프로그램이 버그가 나지 않도록 말이지요. 
 
IP Address : 54.2.9.70   
 
상병 임채승 
22.19.47.61   정말 잘 읽었습니다. 한 가지 질문 드리자면, 신적 이성과 인간의 논리적 이성은 동일한 수준이군요. 둘다 세상(대상)의 본을 완전하게 뜰 수 없다는 의미에서 말이지요. 그럴 경우 자유란 신만이 가진 능력이군요. 그것이 지극히 인간의 노력과 닮아 있음에도요.. 02-16 * 
 
상병 김지민 
18.16.13.19   아 난 저능아인가. (...) 02-16 * 
 
병장 성태식 
54.7.5.228   대단하군요. 여기에 다른 말을 더 붙여봐야 쓸모가 없을 정도로 ( ... ) 02-16 * 
 
병장 배진호 
54.10.10.221   짝짝짝 잘읽었어요.. 논리적인 오류를 들먹이며.. 

글을 비판할 여지가 없는 멋진 글이네요~ 

일관성과 완전성에 대한 정의를 이렇게 새롭게 보게 되네요 

프로그래밍을 하는 입장에서도 참 재미있는 글이구요 

어쨋건.. 

중요한건... 버그가 없는 프로그램을 만들어야 한다는 것이죠.. 

그것이 실제 버그가 있던 없던간에 보이는 것에는... 02-16 * 
 
병장 이승일 
54.2.9.70   채승 / 뭐 일종의 비유로서 말한 것일 뿐, 신에 관해서, 더욱이 신의 이성에 관해서 이런 저런 판단을 한다는 것은 제가 할 수 있는 일이 아니겠지요. 다만 저는 만약 이 세계를 창조한 이성적 존재가 있다면, 자신의 피조물 중 그 누구도 자신을 이해하지 못하게끔 만들어놓지는 않았으리라고 믿을 뿐입니다. 물론 우리가 바로 그 피조물이라는 보장은 전혀 없지만요. 
그리고 자유에 관해서라면, 글쎄요, 좀 더 어려운 문제가 되겠지요. 
진호 / 아, 프로그래밍을 하시는 분이셨군요. 태식씨도 컴공이라고 하시던데 ... 02-17 * 
 
상병 임채승 
22.19.47.1   신이라면 선택으로써 다가오는 세계를 프로그래밍할 수 있는 자유만이 주어졌다는 소린데, 지극히 인간적 이성을 지닌 신이라는 언급과 함께, 이론적 수정을 하는 인간의 이성은 세계라는 '상식적'으로 완전해 보이는 세계라는 기준이라도 있음에 반하여, 신의 세계는 어떠한 기준에 맞추어 버그를 수정하는지 모르겠다는 말이죠. 

어떤 핵심 전제가 이런 결과를 빚어냈는지는 모르겠지만, 결국 자유는 축소되고 이성이 줄곧 덮어쓰곤 하는 '신'적 오만을 까발리게 된 것이 아닌지 싶네요. 02-17 * 
 
병장 이승일 
54.2.9.70   채승 / 글쎄요, 그렇게까지 멀리 나아가고 싶진 않지만, 일단 인간의 버그 수정이 '상식적으로 완전해 보이는 세계' 를 기준으로 한다는 말은 잘 못된 것 같습니다. 세계가 존재하지 않아도 패치는 가능합니다. 선택은 어차피 인위적이기 때문에 무엇을 기준으로 하건 상관은 없겠지요. 
그리고 자유에 관해서까지 이야기할 일은 아닌 것 같네요. 그것은 전혀 다른 맥락의 논의를 필요로 하니까요. 02-17 * 
 
상병 박수영 
22.49.63.53   이승일씨의 글은 항상 프린트를 해서 읽어봐야 하기에... 열심히 읽는중.. 02-18 *