[include(틀:수학기초론)] [목차] == 개요 == {{{+1 well-definedness}}} 어떤 개념이나 표기가 잘 정의되었다는 것은, 말 그대로 그것이 애매하게 [[정의]]되지 않고 '''잘''' 정의되었다는 뜻이다. 반대로 잘 정의되지 않은 경우는, 그 정의를 만족하는 것이 유일하지 않은 경우, 또는 정의 자체에서 뭔가를 가정하고 있는데 그 가정이 잘못된 경우 등이 있다. 만약 자신이 어떤 개념이나 표기를 정의했을 때는 항상 그것이 잘 정의되어있는지 잘 확인해야 한다. 이거 때문에 '''수십 년 연구'''가 통째로 날아가기도 한다. 자세한 것은 밑의 여담 문단 참고. 사실 예시를 보면 훨씬 더 이해가 빠르다. == 예시 == === 잘 정의되지 않은 [[함수]] === 함수가 잘 정의되지 않은 경우는 흔히 [[음함수|한 원소에 대한 함수값이 2개 이상이 나오거나]] [[부정형|아예 여러 개인 경우]]나 함숫값이 존재하지 않는 경우, 정의역에 있어야 할 원소가 정의역에 있지 않은 경우 등이 있다. * '''[[0으로 나누기]], [[0의 0제곱]]''': 잘 정의되지 않은 대상의 대표적 사례. * 함수 [math(f : \mathbb Q^+ \mapsto \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)]으로 나눈 나머지가 같은 수들의 집합"이라고 정의할 때[* 즉, [math(\overline1 =\left\{..., -19, -9, 1, 11, 21, ...\right\})]], [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 : \mathbb P(\R^{n}) \mapsto \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 \mapsto \mathbb R )]에 대해 [math( m(f) )]를 [math(f)]의 최솟값이라 하면 [math(m)]은 잘 정의되지 않은 함수이다. [math(f)]의 최솟값이 존재하지 않을 수도 있기 때문. [math(m)]의 치역을 확장된 실수 집합(extended real numbers)로 잡고[* [math(f)]의 하한 또한 없을 수 있기 때문이다. 다만 이 경우 그 하한을 그냥 [math(-\infty)]라고 '표기'해 버리면 괜찮을 것이며, 확장된 실수 집합에서는 [math(-\infty)]가 나름 쓸만해지기 때문에 괜찮다. --물론 [[무한대]] 문서의 각주 중에서도 강조하였다시피 [[엡실론-델타 논법]] 같은 기초적인 해석학도 제대로 공부하지 못한 상태로 확장된 실수 집합을 논하면 절대 안 될 것이다--] [math( m(f) = \inf(f(\mathbb R)))]과 같이 정의하면 잘 정의된다. * [[벡터 공간]] [math(V)]의 [[차원]]을 "기저의 원소의 개수(또는 cardinality)"라고 정의했을 때도, 잘 정의되었는지 확인해야 한다. [math(V)]의 기저는 여러 개 있을 수 있고, 그 중 원소의 개수가 다른 것이 있을 수 있기 때문. 사실 벡터 공간이면 임의의 두 기저를 골라도 이 둘의 원소의 개수가 항상 같음을 증명할 수 있다.[* 물론 이는 [math(V)]가 벡터 공간, 즉 '''체 위의''' 가군(a module '''over a field''')일 때 이야기이다. 만약 주어진 대상이 어떤 환(ring)의 가군(module)이긴 한데 그 환이 체가 아니라면 기저들의 개수가 항상 일정함을 따로 보이든가 아니면 같지 않을 수 있음을 (직접 보이면 더 좋다) 염두에 둬야 할 것이다.] * 심지어는 [[합성함수|함수의 합성]]에서도 '잘 정의되지 않는' 경우가 있는데, 실수 범위에서 [math(\{-1,0,1\})]을 공역으로 갖는 [[부호 함수]] [math(\rm sgn)]와 [math(\{-1,0,1\})]을 정의역으로 갖지 않는 [[로그 적분 함수]] [math(\rm li)]를 합성한 꼴 중 [math(\rm (li \circ sgn))]은 잘 정의되지 않는다. === 잘 정의된 표기 === * 새로운 연산 [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 )][* 우리가 아는 그 [[덧셈]], [[곱셈]]이 맞다!] 같은 연산을 쓸 때도 결합법칙을 만족하는 것을 증명하기 전까지는 [math(a+b+c)]와 같은 표기를 안 쓰고 집요하게 [math((a+b)+c)], [math(a+(b+c))]를 구분하여 쓴다.[* 한편 현대 대수학 쯤 가면 [[리 대수]], [[https://en.wikipedia.org/wiki/Jordan_algebra|조르당 대수]](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])]를 가리키지 않는다든가 하는 것이 보장되어야 할 것이다. 그런 것을 잘 정해주지 않으면 잘 정의됨이 깨질 것이다.] == 여담 == * 우리가 일상에서 사용하는 단어나 표현등은 그 뜻이 엄밀하게 정의되지 않은 채, 상황과 맥락에 따라 여러 의미를 지닌다. 이렇게 잘 정의되지 않은 일상 언어를 다른 작업 없이 그대로 논증에 투입하면 우스꽝스럽고 엉터리인 결과가 나온다. 그 예시로, "지칭하는 데 가장 많은 단어가 필요한 것" 을 생각해 보자. 우리는 방금 그걸 8개 단어[* 어절로는 7어절]만으로 표현했다. 가장 많이 필요한 게 8개 였으니까 세상 어떤 것도 기껏해야 8개 단어면 표현할 수 있다는 것이 방금 증명됐다. 사전에 등재된 단어가 대충 50만 개쯤 되니, 따라서 세상에 존재하는 건 50만^^8^^ 개 이하가 된다. 당연히 말도 안 되는 헛소리다.[* 더 깊숙히 파고 들자면 well-definedness 말고 다른 문제도 있다. 애초에 '지칭'이라는 말이 애매할 뿐더러, 단어도 무한히 많이 만들어낼 수 있다. 당장 1부터 100,000,000까지는 1억 개의 단어가 존재한다. 따라서 이 엉터리 논증은 [[베리의 역설]]과 마찬가지로 언어의 모호성이나 언어의 한계 또한 보여주는 예시다.] * 굳이 멀리 갈 필요 없이 [[48÷2(9+3)]] 같은 항목에서 보면 알 수 있듯 명확하게 약속되지 않은 연산 순서로 인해 혼동을 주는 표기법 또한 수학의 대전제인 잘 정의됨을 간과한 사례라고 할 수 있을 것이다. [[분류:논리학]][[분류:오류]]