수학기초론 Foundations of Mathematics |
|||
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" |
다루는 대상과 주요 토픽 | ||
수리논리학 | 논리 · 논증{ 귀납논증 · 연역논증 · 귀추 · 유추} · 공리 및 공준 · 증명{ 증명보조기 · 자동정리증명 · 귀류법 · 수학적 귀납법 · 반증 · 더블 카운팅 · PWW} · 논리함수 · 논리 연산 · 잘 정의됨 · 조건문( 조각적 정의) · 명제 논리( 명제 · 아이버슨 괄호 · 역 · 이 · 대우) · 양상논리 · 술어 논리( 존재성과 유일성) · 형식문법 · 유형 이론 · 모형 이론 | ||
집합론 | 집합( 원소 · 공집합 · 집합족 · 곱집합 · 멱집합) · 관계( 동치관계 · 순서 관계) · 순서쌍( 튜플) · 서수( 하세 다이어그램 · 큰 가산서수) · 수 체계 · ZFC( 선택공리) · 기수( 초한기수) · 절대적 무한 · 모임 | ||
범주론 | 범주 · 함자 · 수반 · 자연 변환 · 모나드 · 쌍대성 | ||
계산가능성 이론 | 계산 · 오토마타 · 튜링 기계 · 바쁜 비버 · 정지 문제 · 재귀함수 | ||
정리 | |||
드모르간 법칙 · 대각선 논법 · 러셀의 역설 · 거짓말쟁이의 역설 · 뢰벤하임-스콜렘 정리 · 슈뢰더-베른슈타인 정리 · 집합-부분합 정리 · 퍼스의 항진명제 · 굿스타인 정리 · 완전성 정리 · 불완전성 정리( 괴델 부호화) · 힐베르트의 호텔 · 연속체 가설 · 퍼지 논리 | |||
기타 | |||
예비사항( 약어 및 기호) · 추상화 · 벤 다이어그램 · 수학철학 | |||
틀:논리학 · 틀:이산수학 · 틀:이론 컴퓨터 과학 · 철학 관련 정보 · 논리학 관련 정보 · 수학 관련 정보 | }}}}}}}}} |
1. 개요
well-definedness어떤 개념이나 표기가 잘 정의되었다는 것은, 말 그대로 그것이 모호하게 정의되지 않고 잘 정의되었다는 뜻이다. 반대로 잘 정의되지 않은 경우는, 그 정의를 만족하는 것이 유일하지 않은 경우, 또는 정의 자체에서 뭔가를 가정하고 있는데 그 가정이 잘못된 경우 등이 있다.
만약 자신이 어떤 개념이나 표기를 정의했을 때는 항상 그것이 잘 정의되어있는지 잘 확인해야 한다. 이거 때문에 수십 년 연구가 통째로 날아가기도 한다. 자세한 것은 밑의 여담 문단 참고. 사실 예시를 보면 훨씬 더 이해가 빠르다.
2. 예시
2.1. 잘 정의되지 않은 함수
함수가 잘 정의되지 않은 경우는 흔히 한 원소에 대한 함수값이 2개 이상이 나오거나( 음함수) 아예 여러 개인 경우( 부정형)나 함숫값이 존재하지 않는 경우, 정의역에 있어야 할 원소가 정의역에 있지 않은 경우 등이 있다.- 함수 [math(f : \mathbb{Q}^+ \rightarrow \mathbb Z )], [math( f({b \over a}) = a+b )](이 때, [math(a, b)]는 양의 정수)는 잘 정의되지 않은 함수이다. [math(f({1 \over 2}) = 3 \neq 6 = f({2 \over 4}) )]이기 때문이다. 단, [math(a\perp b)]이라는 조건을 추가하면 이는 잘 정의된 함수이다.
- 정수 [math(n)]에 대해 [math(\overline n)]을 "[math(n)]을 [math(10)]으로 나눈 나머지가 같은 수들의 집합"이라고 정의할 때[1], [math(f(\overline n) = n)] 라 한다면 [math(f)]는 잘 정의되지 않은 함수이다. [math(\overline1 = \overline{11})] 인데 [math( f(\overline1) = 1 \ne 11 = f(\overline{11}))]이기 때문. 만약 [math(f(\overline n) = n\mod 10)]처럼 정의한다면 잘 정의된다. [math( \overline n)] 표기 때문에 처음 보면 헷갈릴 수 있으니 주의. 이런 표기를 쓸 때는 항상 잘 정의되는지 생각해야 한다.
- [math(f : \mathcal P(\R^{n}) \rightarrow \mathbb Z)]를 [math( f(U) = \begin{cases} 1, & U\textsf{ is open} \\ -1, & U\textsf{ is closed} \\ 0, & \textsf{else} \end{cases})]라 정의하면, [math(\emptyset )]과 [math(\R^n)] 자신은 열린 집합이면서 닫힌 집합이므로 [math(f)]는 잘 정의되지 않았다. 단, 정의역에서 이 둘을 빼면 잘 정의된다. 한편 [math(\R^n)] 대신에 이산 공간을 넣을 경우 임의의 개집합은 폐집합이므로 마찬가지로 잘 정의되지 않게 된다. 사실 이산 공간 말고 칸토어 집합같은 비연결 공간(disconnected space)만 넣어도 [math(\R^{n})]보다 충분히 더 다채롭게(?) 잘 정의되지 않는다는 것을 볼 수 있다.
- 유계함수 [math( f : \mathbb R \rightarrow \mathbb R )]에 대해 [math( m(f) )]를 [math(f)]의 최솟값이라 하면 [math(m)]은 잘 정의되지 않은 함수이다. [math(f)]의 최솟값이 존재하지 않을 수도 있기 때문. [math(m)]의 치역을 확장된 실수 집합(extended real numbers)로 잡고[2] [math( m(f) = \inf(f(\mathbb R)))]과 같이 정의하면 잘 정의된다.
- 벡터 공간 [math(V)]의 차원을 "기저의 원소의 개수(또는 농도)"라고 정의했을 때도, 잘 정의되었는지 확인해야 한다. [math(V)]의 기저는 여러 개 있을 수 있고, 그 중 원소의 개수가 다른 것이 있을 수 있기 때문. 사실 벡터 공간이면 임의의 두 기저를 골라도 이 둘의 원소의 개수가 항상 같음을 증명할 수 있다.[3]
- 심지어는 함수의 합성에서도 '잘 정의되지 않는' 경우가 있는데, 실수 범위에서 [math(\{-1,0,1\})]을 공역으로 갖는 부호 함수 [math(\rm sgn)]와 [math(\{-1,0,1\})]을 정의역으로 갖지 않는 로그 적분 함수 [math(\rm li)]를 합성한 꼴 중 [math(\rm (li \circ sgn))]은 잘 정의되지 않는다.
2.2. 잘 정의된 표기
- 새로운 연산 [math(\heartsuit)]를 정의했을 때, [math(a\heartsuit b\heartsuit c)] 와 같은 표기를 쓰기 전에는 항상 [math(\heartsuit)]가 결합법칙을 만족하는지 확인해봐야 한다.
예를 들어 [math(a\heartsuit b = 2a+b)]라 하면 [math( ((1\heartsuit 2)\heartsuit 3) \neq (1\heartsuit (2\heartsuit 3)))]가 되므로 결합법칙을 만족하지 않아, [math(a\heartsuit b\heartsuit c)]의 표기를 쓸 수 없다. 또한 이는 [math( a/b/c)] 같은 표기를 쓸 수 없는 이유이기도 하다. 다만 앞에서부터 순서대로 연산한다고 정하면 잘 정의된 것처럼 보인다.
뺄셈이나
나눗셈과 같은 비가환 연산이 해당한다.
함수도 마찬가지다. 실제로 집합론 같은 과목들을 보면 [math(+, \times )][4] 같은 연산을 쓸 때도 결합법칙을 만족하는 것을 증명하기 전까지는 [math(a+b+c)]와 같은 표기를 안 쓰고 집요하게 [math((a+b)+c)], [math(a+(b+c))]를 구분하여 쓴다.[5]
3. 여담
- 우리가 일상에서 사용하는 단어나 표현등은 그 뜻이 엄밀하게 정의되지 않은 채, 상황과 맥락에 따라 여러 의미를 지닌다. 이렇게 잘 정의되지 않은 일상 언어를 다른 작업 없이 그대로 논증에 투입하면 우스꽝스럽고 엉터리인 결과가 나온다. 그 예시로, "지칭하는 데 가장 많은 단어가 필요한 것"을 생각해 보자. 우리는 방금 그걸 8개 단어[6]만으로 표현했다. 가장 많이 필요한 게 8개였으니까 세상 어떤 것도 기껏해야 8개 단어면 표현할 수 있다는 것이 방금 증명됐다. 사전에 등재된 한국어 단어가 대충 50만 개쯤 되니, 따라서 세상에 존재하는 건 50만8 개 이하가 된다. 당연히 말도 안 되는 헛소리다.[7]
- 굳이 멀리 갈 필요 없이 48÷2(9+3) 같은 항목에서 보면 알 수 있듯 명확하게 약속되지 않은 연산 순서로 인해 혼동을 주는 표기법 또한 수학의 대전제인 잘 정의됨을 간과한 사례라고 할 수 있을 것이다.
[1]
즉, [math(\overline1 =\left\{..., -19, -9, 1, 11, 21, ...\right\})]
[2]
[math(f)]의 하한 또한 없을 수 있기 때문이다. 다만 이 경우 그 하한을 그냥 [math(-\infty)]라고 '표기'해 버리면 괜찮을 것이며, 확장된 실수 집합에서는 [math(-\infty)]가 나름 쓸만해지기 때문에 괜찮다. 물론
무한대 문서의 각주 중에서도 강조하였다시피
엡실론-델타 논법 같은 기초적인 해석학도 제대로 공부하지 못한 상태로 확장된 실수 집합을 논하면 절대 안 될 것이다
[3]
물론 이는 [math(V)]가 벡터 공간, 즉 체 위의 가군(a module over a field)일 때 이야기이다. 만약 주어진 대상이 어떤 환(ring)의 가군(module)이긴 한데 그 환이 체가 아니라면 기저들의 개수가 항상 일정함을 따로 보이든가 아니면 같지 않을 수 있음을 (직접 보이면 더 좋다) 염두에 둬야 할 것이다.
[4]
우리가 아는 그
덧셈,
곱셈이 맞다!
[5]
한편 현대 대수학 쯤 가면
리 대수,
조르당 대수(Jordan algebra)에서 쓰이는 곱 연산들 같이 결합법칙을 만족하지 않는 다양한 이항 연산들을 볼 수 있는데, 이런 케이스들에서는 보통 [math([A, B])] 혹은 [math([AB])] 같은 꼴로 해당 이항 연산들을 표기하며, 따라서 세 원소를 곱하는 경우는 [math([A[BC]])] 혹은 [math([AB]C)]와 같이 표기하곤 한다. 그리고 일반적으로 이 둘은 다른 값일 것이다. 이런 케이스에서 [math([ABC])] 혹은 [math(ABC)] 같은 표기는 당연히 일반적으로 잘 정의된 표기가 아니다. 그래도 종종 [math([A[BC]])], [math([A[B[CD]]])], [math(\cdots)] 같은 게 어떤 챕터에서 자주 등장하지만 일일이 표기하기가 너무 귀찮아서 [math([ABC] = [A[BC]])], [math([ABCD] = [A[B[CD]]])], [math(\cdots)]와 같이 '정의'할 수도 있다. 하지만 이는 어디까지나 먼저 '정의'를 (즉 '합의'를) 먼저 잘 해 두어야 가능한 일이고, 특히 예를 들어 [math([ABC])]가 [math([[AB]C])]를 가리키지 않는다든가 [math([ABCD])]가 [math([[[AB]C]D])]를 가리키지 않는다든가 하는 것이 보장되어야 할 것이다. 그런 것을 잘 정해주지 않으면 잘 정의됨이 깨질 것이다.
[6]
어절로는 7 어절
[7]
더 깊숙이 파고들자면 well-definedness 말고 다른 문제도 있다. 애초에 '지칭'이라는 말이 모호할뿐더러, 단어도 무한히 많이 만들어낼 수 있다. 당장 1부터 100,000,000까지는
정수만 따져도 1억 개의 단어가 존재한다. 따라서 이 엉터리 논증은
베리의 역설과 마찬가지로 언어의 모호성이나 언어의 한계 또한 보여주는 예시다.