음, 두 용어 '단순 유형론[simple type theory]'과 '고차 논리[higher-order logic]'는 동의어로 쓰일 때가 있다는 걸 아시나요? 저는 콰인이 왜 "고차 논리가 은폐된 집합론이다."라는 지적을 했는지 잘 모르지만, 왠지 이 말이 맞는 거 같아요. 유형론이 집합론 대신에 수학을 형식화하기 위한 기초론으로서 잘 쓰인다는 점이 그 정황 증거가 되지 않을까요?
유형론을 배우는 일도 논리학을 배우는 일이라는 점을 먼저 얘기하고 싶습니다. 유형론도 논리학의 한 분야로 여겨지니까요. 그저 한국에서는 몇몇 대학의 컴퓨터 공학과 말고는 유형론을 가르치는 수업을 찾기가 어려운 거죠.
논리학을 가르치거나 배우면서 우리가 느끼는 것은, 일차 논리조차도 쉽게 배우고 가르칠 수 없다는 것입니다. 명제 논리 정도가 직관적으로 받아들일 수 있는 한계인 듯합니다. 조금 더 재능이 있다면 일차 논리를 어느 정도 쉽게 받아들일 수 있고요.
학습자가 명제 논리와 일차 논리를 먼저 배우지 않고, 처음부터 유형론을 배우는 일은 당연히 어렵습니다. 그래도 제가 학습자에게 유형론을 일찍 가르치는 시도를 하는 이유는, 그 학습자가 이른바 '컴퓨터 보조 증명'의 혜택을 빨리 누릴 수 있기를 제가 갈망하기 때문이겠죠.
한편 이미 일차 논리에 대해 잘 이해하고 있지 않다면, Typed logic을 배우는 것이 가능할지 의문입니다. 학습자는 이미 연산자의 개념이나 함수의 개념을 이해하고 있어야 Typed logic을 배울 수 있을 것 같은데, 사실상 그런 개념을 이해하기 위해 필요한 것이 일차 논리의 학습입니다. 그래서 논리학에의 입문을 더 어렵게 만드는 것이 아닌가 싶은 회의감을 느낍니다.
아랫글에서 설명하다시피, 함수는 적어도 린의 유형론에서 원시 개념입니다.
Riccardo Brasca said:
There might be a way of doing it, but I think the general principle is to not mess up with things in core
. Note that docs#function.comp is not a special case of composition in a category: functions are a primitive notion in type theory, they are not literally morphisms in the category of sets. (Of course there is category of sets with its hom, but these are denoted with a slightly different arrow ⟶
.)
그래서 저는 학습자가 일차 논리를 미리 알아야만 '원시 개념으로서의 함수'를 이해할 수 있다고 생각하지 않습니다. 대부분의 연산은 린의 유형론에서 커링(currying)을 이용해 정의할 수 있으니, 학습자가 유형론으로 연산을 정의하는 법을 이해하기 위해 미리 알아야 되는 건 함수 추상화, 함수 유형 그리고 커링이에요.
하지만 @car_nap 님이 제게 진정으로 묻는 바는 "명제 논리와 일차 논리를 배우지 않은 학습자가 자신이 아직 모르는 개념과 마주치지 않으면서 유형론을 학습할 수 있는가?"라는 물음 같습니다. 이 물음은 다음과 같이 일반화할 수 있겠죠.
이론 T
를 이해하는 데 충분한 배경지식을 갖추지 않은 임의의 학습자 l
에 대해, 교재 m
은 학습자 l
이 아직 모르는 지식을 설명 없이 도입하지 않으면서 이론 T
를 학습자 l
에게 가르칠 수 있는가?
이론 T
가 '증명 보조기를 다루기 위한 형식 이론'일 때, 위의 성질을 충족하는 동시에 논리학 입문서로도 쓰일 수 있는 교재 m
을 어떻게 만들어야 하냐는 문제로 제가 2013년부터 고민해 왔습니다. 과장을 약간 넣고 말하면 말이죠.
아직 저도 정확한 답은 모르고, 이 답을 찾는 게 제 일생의 핵심 목표라고 단언합니다. 수학, 논리학, 컴퓨터 과학 학습의 '적절한 시작점'을 찾는 일 말이죠. 앞에서 말한 '증명 보조기를 다루기 위한 형식 이론' 중에서 제가 아는 현실적인 후보는 유형론밖에 없으니, 교재 m
이 유형론 입문서이기도 할 때만을 고려할게요.
교재 m
이 학습자에게 유형론을 다 설명한 뒤에 명제 논리와 일차 논리를 알려 주면 당연히 안 됩니다. 유형론을 설명하는 가운데 명제 논리와 일차 논리를 다뤄야 돼요. 그래서 제가 추측해 보자면, 교재 m
은 명제 논리와 일차 논리의 기초 내용을 설명하기 전에 유형론의 어떤 일부를 학습자에게 가르쳐야 할 겁니다. 지금 제가 이와 비슷한 방식으로 멘티분들에게 린의 유형론, 명제 논리, 일차 논리를 설명하고 있어요. 하지만 제가 정말로 원하는 교재는 본 적이 없고, 아직은 제가 직접 만들어 내지도 못했어요.
그나저나 저는 아직 영어보다 한국어로 제 생각을 훨씬 더 잘 풀어 쓰는 거 같네요. 영어 학습도 더 해야죠.