실수를 "표현"하거나 "구현"한다는 것이 무엇을 의미하는지 혼동하기 쉽습니다. 실제로, 우리는 표현이 논쟁적인 의견에 대한 토론을 목격하고 있습니다. 먼저이 문제를 해결하겠습니다.
구현이 올바른지 어떻게 알 수 있습니까?
컴퓨터에서 사물을 표현하는 방법을 설명하는 이론은 실현 가능성 입니다. 기본 아이디어는 세트가 주어지면 데이터 유형 τ를 선택하고 모든 x ∈ X 마다 그것을 실현 하는 τ 유형의 값 세트 를 선택 한다는 것입니다. 우리는 쓰기 절 ⊢ X ∈ X 때 V는 실현이하는 값 x는 . 예를 들어의 합리적인 구현 (I없이 좋은 이유에 대한 하스켈을 사용하여야한다) N은 데이터 유형이 될 수있는 곳 V ⊢ K ∈ N 때 V엑스τx ∈ Xτv ⊢ x ∈ XV엑스엔Integer
v ⊢ k ∈ NV는 숫자 평가됩니다 (특히 , 자연수를 나타내지 않으며 분기 프로그램도 나타내지 않음). 그러나 일부 조커는 우리가 걸을 수 있고 우리 가 n ≠ 42에 대해 T r u e ⊢ 42 ∈ N 및 F a l s e ⊢ n ∈ N으로 자연수를 표현할 것을 제안 할 수 있습니다 . 왜 이것이 잘못 되었습니까? 우리는 기준이 필요합니다 .케이¯¯¯-42
Bool
T R U E ⊢42∈ NF a l s e ⊢n∈ Nn ≠ 42
"조커 번호"의 경우 쉬운 관찰은 추가를 구현할 수 없다는 것입니다. 표시된 두 개의 숫자가 있다고 가정 합니다. 당신은 그들의 합계를 실현할 수 있습니까? 글쎄, 그것은 합이 42인지에 달려 있지만 말할 수는 없습니다. 덧셈은 "자연수의 본질적인 부분"이기 때문에 용납 할 수 없습니다. 다시 말해 구현은 집합이 아니라 구조 에 관한 것입니다 . 즉, 관련 구조를 구현할 수있는 방식으로 집합을 나타내야합니다. 이것을 강조하겠습니다 :F 리터 의 전자
베어 세트가 아닌 구조를 구현합니다. 따라서 구현이 정확하려면 전체 구조를 작업 및 모든 공리와 함께 구현할 수 있어야합니다.
이 원칙을 준수하지 않으면 정확성에 대한 대체 수학적 기준 을 제안해야 합니다. 나도 몰라
예 : 자연수 표현
자연수의 경우 관련 구조는 Peano axioms로 설명되며 구현해야 할 중요한 공리는 유도입니다 (그러나 , 후속, + 및 × ). 실현 가능성을 사용하여 유도 구현이 수행하는 작업을 계산할 수 있습니다. 그것은 맵으로 밝혀졌습니다 ( 자연수를 나타내는 아직 알려지지 않은 데이터 유형이 있습니다)0+×nat
induction : 'a -> (nat -> 'a -> 'a) -> 'nat -> 'a
만족 induction x f zero = x
하고 induction x f (succ n) = f n (induction x f n)
. 이 모든 것이 실현 가능성에서 나옵니다. 우리는 기준을 가지고있다 : 자연수의 구현은 Peano 공리의 구현을 허용 할 때 정확하다. functor 의 초기 대수로 숫자의 특성을 사용하면 비슷한 결과를 얻을 수 있습니다 .X↦1+X
실수의 올바른 구현
실수와 당면한 문제에주의를 기울 이겠습니다. 첫번째 질문은 "실수의 관련 구조는 무엇입니까?"입니다. 답은 Archimedean Cauchy complete ordered field 입니다. 이것이 "실수"의 확립 된 의미입니다. 당신은 그것을 바꿀 수 없으며, 그것은 당신을 위해 다른 사람들에 의해 수정되었습니다 (우리의 경우 대안 Dedekind reals는 우리가 여기에서 고려하고있는 Cauchy reals와 동형 인 것으로 판명되었습니다). "추가 구현에 관심이 없습니다"또는 "주문에 관심이 없습니다"라고 말할 수 없습니다. 그렇게하면 "실제 숫자"라고 부르지 말고 "선형 순서를 잊어 버린 실수"와 같은 것이어야합니다.
모든 세부 사항에 대해서는 다루지 않겠습니다. 그러나 구조의 다양한 부분이 실제 작업에서 어떻게 다양한 작업을 수행하는지 설명하겠습니다.
- 아르키메데스 공리에 대한 계산됩니다 합리적 실수의 근사치를
- 필드 구조는 일반적인 산술 연산을 제공합니다
- 선형 순서는 x < y 테스트를위한 반 결정 가능한 절차를 제공합니다.x<y
lim : (nat -> real) -> real
(xn)n m , n|xn−xm|≤2min(n,m)m,n
우리가 얻지 못하는 것은 평등을위한 테스트 함수입니다. 그 요청 실수에 대한 공리 아무것도 없다 decidable 수는. (반면, Peano 공리는 자연수를 결정할 수 있음을 의미 하며 재미있는 운동으로 만 사용하여 구현함으로써 증명할 수 있습니다 ).=eq : nat -> nat -> Bool
induction
인류가 사용하는 실수의 일반적인 십진수 표현은 우리가 덧셈을 구현할 수 없기 때문에 나쁘다는 사실입니다. 무한 가수가있는 부동 소수점도 실패합니다 (운동 : 왜?). 그러나 작동하는 것은 부호있는 숫자 표현, 즉 우리가 양수뿐만 아니라 음수를 허용하는 것입니다. 또는 위에서 언급 한 것처럼 빠른 Cauchy 테스트를 만족하는 일련의 합리적인 시퀀스를 사용할 수 있습니다.
쓰요시 표현은 무언가를 구현하지만 은 구현하지 않습니다R
다음과 같은 실수 표현을 고려해 봅시다. 실수 는 쌍 로 표현됩니다. 여기서 은 수렴하는 빠른 Cauchy 시퀀스 이고 는 가 정수 인지 여부를 나타내는 부울 입니다. 이것이 실수를 나타내려면 덧셈을 구현해야하지만 부울 플래그를 계산할 수는 없습니다. 따라서 이것은 실재를 나타내는 것이 아닙니다 . 그러나 여전히 무언가, 즉 실제 의 하위 세트를 나타냅니다.( q , b ) ( q n ) n x b x Z ∪ ( R ∖ Z ) Z ∪ ( R ∖ Z ) Rx(q,b)(qn)nxbxZ∪(R∖Z). 실제로, 실현 가능성의 해석에 따라 노동 조합은 우리가에있는 노동 조합의 일부를 나타내는 플래그로 구현되어있다. 그런데, 있다 하지 동일 당신이 중간에서 제외 믿지 않는 구현하기 때문에이 토론에 매우 관련이 될 수없는,. 우리는 컴퓨터 가 직관적으로 일 을 하도록 강요받습니다 .Z∪(R∖Z)R
실수가 정수인지 테스트 할 수 없습니다
마지막으로 질문에 대한 답변을 드리겠습니다. 우리는 이제 현실의 수용 가능한 표현이 빠른 코시의 합리적 시퀀스에 의한 것이라는 것을 알고 있습니다. (중요한 정리에 따르면 수용 할 수있는 실수의 두 가지 표현은 실제로 계산 가능한 동형이라고합니다.)
정리 : 실수가 정수인지 테스트하는 것은 결정할 수 없습니다.
증명. 실수가 정수인지 테스트 할 수 있다고 가정합니다 (물론, 실제는 빠른 Cauchy 시퀀스에 의해 실현됩니다). 원하는 경우 훨씬 더 일반적인 정리를 증명할 수있는 아이디어는 정수로 수렴하는 비정 수 의 빠른 Cauchy 시퀀스 을 구성하는 것입니다. 만 사용하면 쉽습니다 . 다음으로 Halting 문제를 다음과 같이 해결하십시오. Turing machine 주어지면, 새 시퀀스 을
정의
즉, 시퀀스 등 새로운 시퀀스 모양 만큼X N = 2 - N T ( Y N ) N Y N = { X N 경우 T는 내 정지되지 않은 N 단계 X m 경우 T는 스텝 중지 m 과 m ≤ N ( X의 N ) N T의 X m T m T z = lim n y n z 0(xn)nxn=2−nT(yn)n
yn={xnxmif T has not stopped within n stepsif T stopped in step m and m≤n
(xn)nT실행,하지만 그것은에 "붙어"도착 경우 가 정지 단계에서 . 매우 중요한 새로운 순서는 또한 빠른 코시 순서입니다 (우리는인지 모르고 증명할 수 가 정지). 따라서 실수의 표현이 정확하기 때문에 한계 계산할 수 있습니다 . 가 정수 인지 테스트합니다 . 그렇다면 이어야하며 이는 가 영원히 실행될 경우에만 발생합니다 . 그렇지 않으면 는 정수가 아니므로 가 중지되어야합니다. QED.
xmTmTz=limnynz0z TTzT
연습 : 위의 증거를 수정하여 유리수를 테스트 할 수 없음을 보여줍니다. 그런 다음 우리가 사소한 것을 테스트 할 수 없다는 것을 보여 주도록 조정하십시오 (조금 더 어렵습니다).
때때로 사람들은이 모든 테스트 사업에 대해 혼란스러워합니다. 그들은 실수가 정수인지 테스트 할 수 없다는 것을 증명했다고 생각 합니다. 그러나 42는 실수이고 정수인지를 알 수 있습니다. 사실, 어떤 특정 우리가 올 실제, , , 등, 우리가 완벽하게 그들이 정수 여부를 알 수 있습니다. 정확하게, 우리가 있기 때문에 말할 수있는 우리는 추가 정보가 이러한 실수는 시퀀스로 우리에게 주어진 것이 아니라 우리가 츠요시 비트를 계산할 수있는 상징적 인 표현으로하지 않습니다. 우리가 현실에 대해 가지고있는 유일한 정보는 그것에 수렴하는 일련의 합리적인 근사치입니다.88 ln 89 e π √sin1188ln89 nneπ163√되지 순서를 나타내는 상징적 인 표현되지만 출력하는 블랙 박스 의미 입력 번째 기간에 ) 우리는 단지 기계 무력한로됩니다.nn
이 이야기의 교훈
어떤 종류의 작업을 수행할지 알지 못한다면 집합 구현에 대해 이야기하는 것은 의미가 없습니다.