답변:
대각선으로 인해. 경우 모든 합계 계산 가능 함수의 계산 가능한 열거했다 로 와 같은 모든 것을 전체 한 후, 도 전체 계산 가능 함수이지만 열거 형에는 없습니다. 그것은 시퀀스에 대한 가정과 모순됩니다. 따라서 계산 가능한 함수 열거는 정확히 총 계산 가능한 함수로 구성 될 수 없습니다.
우리는 범용 연산 가능한 기능 생각 가정 "범용"수단, 계산 가능한 이진 함수이며, 그 모든 총 계산 가능한 단항 함수에 대한 일부가 되도록 모든 ( . 이어서도 일부이어야 되도록 때문에 이전의 단락, 총 함수가 아니다. 그렇지 않으면 는 모든 계산 가능한 단항 함수를 포함하는 계산 가능한 단항 함수의 계산 가능한 열거를 제공합니다.h f ( n ) e f ( i ) = h ( e , i
따라서 모든 함수가 함수 시스템이어야한다는 요구 사항은 해당 시스템에 범용 함수가 존재하는 것과 호환되지 않습니다. 원시 재귀 함수와 같은 일부 약한 시스템의 경우 모든 함수가 총계이지만 범용 함수는 없습니다. 튜링 계산과 같은 범용 기능이있는 강력한 시스템은 범용 기능이 존재하기 위해 부분 기능 만 가져야합니다.
그냥 명확하게하기 위해, 우리는 수학 함수 구별 할 필요가 (내가 그들을 호출 기능을 거기 그들은 모두 열거에 있지 그래서 그들 중 uncountably 많은 사람들이 종종)과 기능은 당신이 쓸 수 있습니다 : 나는 그들에게 호출 프로그램 또는도 계산 가능한 기능 .
부분 집합 셀 수있는 집합의 E는 이라고 계산할 수있는 요소를 지정해, 그 프로그램이있는 경우 X 의 E 것은 "예"의 경우 응답 X ∈ S 와 "아니오"만약 X ∉ S가 . (그리고 그는 항상 무언가 응답 해야한다) 프로그램이 "아니오"라고 말하지 않고 응답하지 않으면 권한 이있는 세트를 재귀 적으로 열거 할 수있다. (프로그램이 S의 모든 요소를 임의의 순서 로 인쇄해야하는 것과 같습니다 )
유한 세트 에있는 모든 프로그램 세트 는 유한 세트의 모든 요소에 대해 프로그램을 실행하는 인터프리터를 작성하고 모두 종료되면 "예"를 리턴 할 수 있으므로 열거 할 수 있습니다. (그러나 그들 중 어느 것도 그렇지 않으면 볼 수 없습니다)
교수는 무한한 수의 요소에 대해서만 프로그램을 실행할 수 없기 때문에 무한 세트 에있는 모든 프로그램 세트 를 열거 할 수 없다고 말했습니다 .
그러나 이것이 이것이 나쁘다는 것을 의미하지는 않습니다.
예를 들어, 모든 증명을 열거하고 프로그램이 전체임을 증명할 수 있는지 기계적으로 확인할 수 있기 때문에 아마도 총계 인 모든 프로그램을 열거 할 수 있는 집합 입니다.
절차가 언젠가 종료되는지 확실하지 않고 영원히 기다려야 할 수도 있기 때문에 열거 가능한 세트조차 실용적이지 않습니다. 모든 총 기능을 열거하는 프로그램을 사용하는 방법을 모르겠습니다 ...
정적 타이핑으로 작성하는 모든 것이 종료되도록 보장하는 프로그래밍 언어가 있습니다! 다항식 바운드를 보장하는 것도 있습니다. 그들은 대부분 학업 적이며, 글을 쓰면 파이썬을 쓰는 것보다 제약을 느끼게 될 것입니다. 그러나 많은 연구자가 있습니다.
그래서 당신의 질문에 대답하기 위해서 : 예, 그렇습니다. 튜링이 완료되기 위해서는 잠재적 인 비 종료가 필요합니다 (현재로서는 가장 높은 계산 능력). 그러나 나는 이것이 전체 기능이 열거 가능하다는 사실과 직접적으로 관련이 없다고 생각합니다. 당신은 여전히 모든 총 프로그램을 작성할 수 있습니다!