24b0d121e09c28a8699fe8b115ef046f5f4f9997a8c5



마계자작의 수는 내가 고딩 때 66666년만에 환생한 흑마법사를 보고 영감을 얻어서 개발한 수임.


아래는 내가 고딩 때 만든 마계자작의 수를 수학적으로 다듬어서 작년 3월에 쓴 글의 전문임.


근데 이 글에는 오류가 있음.


예전에 오류를 발견했었는데 고치기 귀찮아서 안 고쳤었었음.


뭐가 오류였는진 까먹음.


이게 ㅈㄴ 확장적인 논의라서 내가 쓴 글도 이해하려면 시간을 들여서 따라가야됨.


오류 다시 찾으려면 20분 정도 걸려서 귀찮아서 못 고침.


너희가 찾을 수 있으면 찾아봐.




[서론]



마계 자작의 수 ζ(ζ(666)')를 정의하기 전, 이 수가 얼마나 큰 지 motivation을 제공하겠다.


마계 자작의 수 ζ(ζ(666)')는 재귀적 원숭이 상황을 통해 감을 잡을 수 있다.


이 원숭이들의 수명은 무한하다고 가정하고, p는 우주 입자 개수에 해당하는 정해진 상수라 하자.


1번 원숭이는 p^p년에 한 번씩 주사위 하나를 던진다.


6이 연속으로 p^p번 뜨는 사건이 발생하였을 때 2번 원숭이가 주사위를 한 번 던진다.


그리고 모두가 예상했다시피 2번 원숭이가 6을 연속으로 p^p번 띄우면 3번 원숭이가 주사위를 한 번 던진다.


이제 귀납적으로 n번 원숭이 상황을 정의하고 n번 원숭이가 99.99999999%의 확률로 주사위를 한 번 던지게 하는 억겁의 시간(단위 : 밀리 초)을 T(n)이라 정의하자.(T(n)의 유일성은 굳이 설명할 필요 없을 것이다.)


666번째 원숭이가 주사위 하나를 99.99999999%의 확률로 던지게 하려면 어느 정도의 시간이 필요할지 상상해보라.(상상력이 좋은 자들은 숨이 막히거나 과호흡이 올 수 있으니 조심하라. 필자가 그러했다.)


이제 T(666)를 상상했으니 이제 T(T(666))을 상상하자.


T(666)는 과호흡이 올 정도로 형언 불가능한 수인데, T(666)번째 원숭이를 상상하자는 것이다...


이제 T(T(T(666)))도 생각할 수 있고 T(T(T(T(T(666)))))도 생각할 수 있다.


T를 1초에 한 번 늘릴 수 있는 1급 공무원 원숭이가 100년 동안 T(...T(T(T(666))...)에서 T를 계속해서 늘린 수를 M(1)이라 하자.


이제 M(1)마리의 1급 공무원 원숭이가 협력해서 100년 동안 T를 늘린 수를 M(2)라 하자.


귀납적으로 M(n)마리의 1급 공무원 원숭이가 협력해서 100년 동안 T를 늘린 수를 M(n+1)이라 하자.


이제 M(M(666))과 같은 수를 상상할 수 있다.


이제 T가 아닌 M을 늘리는 2급 공무원 원숭이를 상상하자.(숫자가 높을 수록 높은 계급의 공무원이다.)


또 다시 귀납적으로 생각해서 666급 공무원 원숭이가 Y를 늘려서 만든 Y(...Y(Y(Y(666))...)를 생각하자.


이 수는 마계 자작의 수 ζ(ζ(666)')에 전혀 미치지 못한다.


이제 Y(Y(666))급 공무원 원숭이가 만든 수를 생각한다면?


그럼에도 마계 자작의 수 ζ(ζ(666)')에 전혀 미치지 못한다.






[마계자작의 수]





나무위키 그레이엄 수 문서에 그레이엄 수의 설명이 아주 잘 되어있다.


그레이엄 수를 정의할 때 사용했던 수열을 함수 버전으로 다시 한 번 정의하자.


함수 g : ℕ → ℕ를 다음을 만족하도록 정의하자.


g(1) = 3 ↑↑↑↑ 3


g(n+1) = 3 ↑(g(n)) 3


그러면 해당 함수의 존재성과 유일성은 재귀 정리에 의해 보장된다.


이제 개초딩 발상을 떠올리자.(나이가 초등학생에 근접할 수록 유리하다.)


g에 매우 큰 수를 입력하는 것이다.


g(666666)를 '악마의 수'로 정의하자.


필자는 여기서 발상이 막혔지만 초등학생 동생이 다음과 같은 발상을 조언하였다.


악마의 수를 g에 입력하여 g(g(666666))을 생각하자는 것이다.


가히 초등학생 다운 발상이 아닐 수 없었다.


또한 다음과 같은 개초딩 발상도 조언하였다.




[초등학생 동생의 발상]



함수 g_2 : ℕ → ℕ를 다음을 만족하도록 정의하자.


g_2(1) = g(666)


g_2(n+1) = g(g_2(n))


예를들어 g_2(5) = g(g(g(g(g(666)))))가 된다.


이 수가 얼마나 크냐면 p가 우주 입자의 개수라고 하고 p^p^p^p년에 0.000001%의 확률로 타자 하나를 입력하는 원숭이가 셰익스피어 전집을 99.99999999%의 확률로 완성할 수 있게 하는 시간(단위 : 밀리초)을 t라고 하면, p^p^......^p에서의 p가 t^t^t^t개 존재한다고 해도 g_2(5)에는 전혀 미치지 못할 정도이다.


역시 초등학생의 발상은 차원이 다르다.


그러나 내 동생은 또 한 번의 jump를 제안했다.


예를들어 다음과 같은 정의를 생각해보자.


함수 g_3 : ℕ → ℕ를 다음을 만족하도록 정의하자.


g_3(1) = g_2(666)


g_3(n+1) = g_2(g_3(n))


이런 식의 정의를 함수열로 확장하자는 것이다.




[초등 함수열의 시발(始發)]



함수열 f :  ℕ  →  (ℕ → ℕ)는 다음과 같이 귀납적으로 정의된다.


f_1 = g이다.


f_[n+1]은 다음과 같이 ∀k ∈ ℕ에 대한 함수값을 묘사하여 정의할 수 있다.(∀k ∈ ℕ의 함수값을 묘사하는 방법도 재귀적이고 함수 자체도 재귀적으로 정의된다... 온 세상이 재귀적이다.)


f_[n+1](1) = f_n(666)


f_[n+1](k+1) = f_n(f_[n+1](k))





즉, 쉽게 말하자면 아까 위에서 정의한 g_3라는 함수를 생각하면, f_3 = g_3이 되도록 f를 정의한 것이다.


너무 확장적인 개초딩 발상이라 머리가 아프다...


참고로 초등 함수열은 초등함수의 열을 뜻하는 것이 아니라 초등학생 함수열을 말하는 것이다.


f(17)의 표기법과 함수열의 항 f_17의 표기법은 같으므로 편의에 따라 혼용하겠다.


내 동생은 다음과 같이 선언했다.


"f_666(666)을 마계 남작의 수라 명명한다."


그런데 이건 그저 시발점에 불과하다.


이제 다시 함수 표기법을 사용해서 f(f_666(666))를 생각하면?


즉, 함수열의 f_666(666)번째 항을 생각하자는 것이다. 이걸 '두 번 겹쳤다'라고 표현할 수 있겠다.


그렇다면... f(f(f_666(666)))를 생각할 수 있겠다는 생각이 들어 초등학생 동생한테 물어봤지만 f(f_666(666))가 애초에 함수라서 f에 또 다시 넣을 수는 없다 하였다.


그러면 f(f_666(666))이라는 함수에 666을 입력하여 나오는 수를 다시 f에 넣는 것은 어떨까?


즉, f(f(f_666(666))(666))를 생각하고 이를 '세 번 겹쳤다'라고 표현할 수 있다.


그러면 이제 n번 겹치는 함수를 f^2로 정의하자.


f^2(3) = f(f(f_666(666))(666))인 것이다.


f^2(666666) 따위를 생각해서 f가 666666번 겹치는 걸 생각하는 것은 너무 초등학생스럽지 못한 거 같고...


우리는 다시 위에서 처럼 f^2을 생각하고 이를 또 일반화하여 함수열 {f^n}로 만들어야 하는, 초등학교 방학숙제 같은 과제를 맞닥드린 것이다.


내 초등학생 동생의 개초딩 발상을 통해 해결할 수 있으리라 기대해본다.





[2위계 초등 함수열]



먼저 '악마 벗기기'라는 함수를 정의하자.


예를들어 vector space V에서 체 F로 가는 모든 선형사상의 집합 Hom(V, F)를 생각하자.


이를 선형대수학에서는 쌍대 공간(dual space)이라 부르고 V*로 표기한다.


이제 V** 즉, Hom(V*, F)를 생각해볼 수 있고 이를 이중 쌍대 공간(double dual space)이라 부른다.


그런데 여기서 V를 vector space가 아닌 단순 집합으로 일반화하면?


애초에  linear map(선형사상)은 대수학적으로 보면 vector space homomorphism의 간략화된 용어이기 때문에 이제는 단순 집합의 homomorphism인, 아무 제약도 없는 function을 생각하자는 것이 된다.


일반화된 버전의 dual space에서 V(666) 따위의 의미는 자명할 것이다.


이제 반대로 *ℕ = Hom(ℕ, ℕ)로 임시 정의하고 **ℕ = Hom(ℕ, *ℕ)로 정의하자.


(10)ℕ의 의미는 설명하지 않아도 자명할 것이다.


x ∈ (10)ℕ에 대하여 x라는 함수에 22라는 자연수를 한 번 입력하면 (9)ℕ의 원소인 함수열이 나온다.


이렇게 10번 반복하여 22를 입력하면 비소로 어떤 자연수가 출력된다.


즉, (10)ℕ라는 10겹의 함수열 중첩을 없애려면 어떤 자연수를 10번 입력해서 마지막 결과가 자연수가 출력되게 해야한다.


(k)ℕ의 원소 중 하나에 자연수 n을 k번 입력하여 모든 중첩을 없애고 결국 자연수를 출력시키는 것을 'n 벗기기'라고 정의하자.


이제 666을 k번 입력하여 중첩을 없애는 것을 '666 벗기기' 또는 '악마 벗기기'로 부르자.


전술한 초딩 함수열 f를 다시 생각하자.


f :  ℕ  →  (ℕ → ℕ)의 형태를 띄므로 f는 (2)ℕ의 원소이다.


k겹 악마 벗기기 함수를 ' : (k)ℕ → ℕ와 같이 정의하고, 실제 대응은 위에서 정의한 것과 같다.


또한 '(f)와 같은 전위표기법이 아닌 후위표기법 (f)'로 쓰며  괄호를 생략하여 f'로 쓰기로 하자.


그러면 이제 (3)ℕ의 원소 중 하나를 2위계 초딩 함수열으로 정의할 준비가 된 것이다.




정의



h ∈ (3)ℕ가 2위계 개초딩 함수열이기 위한 필요충분조건은 h의 각 항이 다음과 같은 것이다.


h_1 = f


h_[n+1]은 다음과 같이 ∀k ∈ ℕ에 대한 함수값을 묘사하여 정의할 수 있다.


h_[n+1](1) = h_n'


h_[n+1](k+1) = h_n(h_[n+1](k)')





[n위계 초등 함수열]



l ∈ (n)ℕ가 n위계 초등 함수열이기 위한 필요충분조건은 n-1위계 초등 함수열 m에 대하여 l의 각 항이 다음과 같은 것이다.


l_1 = m


l_[n+1]은 다음과 같이 ∀k ∈ ℕ에 대한 함수값을 묘사하여 정의할 수 있다.


l_[n+1](1) = l_n'


l_[n+1](k+1) = l_n(l_[n+1](k)')


recursion theorem에 의해 각 n에 대해 n위계 초등 함수열은 유일하며 이를 ζ(n)로 표기하자.




갑자기 논의가 매우 확장적이 되었다.


그러나 이것이 바로 초등학생의 사고 방식이다.


이제 ζ(ζ(666)')을 생각할 수 있다.


내 동생은 이 수를 '마계 자작의 수'라 명명하였다.


1부는 끝났다.


2부는 motivation이 생기면 그 때 다루겠다.