실현 가능성 이론 : Lambda 미적분학과 튜링 머신의 전력 차이


48

세 가지 관련 하위 질문이 있는데 아래 글 머리 기호로 강조 표시되어 있습니다. 궁금한 경우 분할 할 수 없습니다. 안드레이 바우어 (Andrej Bauer)는 여기 에서 튜링 머신을 통해 일부 기능을 구현할 수 있지만 람다 미적분을 통해서는 불가능하다고 썼다 . 그의 추론의 핵심 단계는 다음과 같습니다.

그러나 우리가 람다 미적분학을 사용한다면, [프로그램] c는 함수 f를 나타내는 람다 항으로부터 튜링 기계를 나타내는 숫자를 계산해야한다. 이것은 할 수 없습니다 (별도의 질문으로 물어 보면 이유를 설명 할 수 있습니다).

  • 설명 / 비공식 증거를보고 싶습니다.

라이스 정리를 적용하는 방법을 모르겠습니다. 이 술어를 동등한 조건에 적용하면 동일한 결과를 얻을 수 있기 때문에 "이 터링 머신 T와이 람다 용어 L에 해당합니까?"라는 문제에 적용됩니다. 그러나 필요한 함수는 다르지만 동등한 람다 항에 대해 다르지만 동등한 TM을 계산할 수 있습니다.

  • 또한 문제가 람다 용어의 내성에 관한 것이라면 람다 용어의 고델 인코딩을 전달하는 것도 수용 가능할 것이라고 생각합니다.

한편으로 그의 예제에는 람다 미적분학에서 튜링 머신이 주어진 작업을 완료하는 데 필요한 단계 수를 계산하는 것이 포함되어 있기 때문에 놀랄 일이 아닙니다.

  • 그러나 여기서 람다 미적분은 튜링 기계 관련 문제를 해결할 수 없으므로 람다 미적분에 대해 비슷한 문제를 정의하고 튜링 기계에 대해 해결할 수 없는지 또는 실제로 힘의 차이가 있는지 궁금합니다. 튜링 머신 (놀랍게도).

답변:


56

John Longley는 "높은 유형의 컴퓨팅 개념" 과 관련된 문제를 다루는 매우 광범위한 조사 기사를 보유하고 있습니다.

기본 개념은 Church-Turing 논문은 에서 까지의 기능에 관한 것입니다. 특히 프로그램을 작성할 때 과 같이 더 높은 유형의 함수를 사용 합니다.NN(NN)N

더 높은 유형의 계산 모델을 완전히 정의 하려면 함수 하나가 인수로받는 다른 함수를 호출 할 수 있도록 함수 호출 규칙 을 지정해야합니다 . 람다 미적분학에서 표준 호출 규칙은 우리가 람다 용어로 함수를 표현한다는 것이며 람다 미적분학에서 람다로 할 수있는 유일한 것은 그것을 적용하는 것입니다. Turing 머신을 사용한 일반적인 인코딩에서는 특정 Godel 인코딩을 수정하여 함수를 인수로 전달한 다음 인수로 전달하려는 머신의 색인을 나타내는 문자열을 전달합니다.

인코딩의 차이는 TM 스타일 인코딩으로 인수 구문을 분석 할 수 있으며 표준 람다 미적분 표현으로는 불가능합니다. 따라서 유형의 함수에 대해 람다 항을 받으면 특정 을 전달하여 동작을 테스트 만 할 수 있습니다. 어떤 식 으로든 용어. 이것은 람다 용어의 코드를 파악하기에 충분한 정보가 아닙니다.NNn

주목할 가치가있는 것은 더 높은 유형의 경우 언어가 한 순서로 표현력이 떨어지면 함수가 반 변하기 때문에 표현력이 높다는 것입니다. 마찬가지로 LC로 작성할 수있는 TM 스타일 인코딩으로는 작성할 수없는 기능이 있습니다 (기능 인수를 전달할 수 있고 수신자가 사용자가 제공 한 함수를 볼 수 없다는 사실에 의존하기 때문에) .

편집 : 다음은 PCF에서 정의 할 수 있지만 TM + Goedel 인코딩에서는 정의 할 수없는 함수의 예입니다. isAlwaysTrue함수를 선언하겠습니다

 isAlwaysTrue : ((unit → bool) → bool) → bool

인수가 인수를 무시하고 항상 true를 리턴하면 true를 리턴하고, 입력에서 인수가 false를 리턴하면 false를 리턴하고, 인수가 입력에서 루프로 들어가면 루프로 이동합니다. 다음과 같이이 함수를 매우 쉽게 정의 할 수 있습니다.

isAlwaysTrue p = p (λ(). true) ∧ p (λ(). false) ∧ p (λ(). ⊥)

루핑 계산은 어디 이며 부울의 and 연산자입니다. 이것은 unit → boolPCF에 3 명의 거주자가 있기 때문에 작동하므로 철저하게 열거 할 수 있습니다. 그러나 TM + Goedel 인코딩 스타일 모델에서 p인수가 응답을 반환하는 데 걸리는 시간을 테스트하고 그에 따라 다른 응답을 반환 할 수 있습니다. 따라서 isAlwaysTrueTM 구현은 사양을 충족하지 못합니다.


1
이것은 훌륭한 설문 조사입니다. 링크 주셔서 감사합니다!
Suresh Venkat

나는 당신의 대답을 받아들이려고했지만 대답을 받아들이지 않았다는 것을 깨달았습니다. 죄송합니다!
Blaisorblade

“인코딩의 차이점은 TM 스타일 인코딩으로 인수 구문을 분석 할 수 있으며 표준 람다 미적분학 표현으로는 불가능합니다.”: 그러나 함수 구성에 대한 표현이 있다면? 또한 HOL이 유형 람다 미적분학 이상의 이론이라고 제안하는 것 같습니다. 그 이상입니까?
Hibou57

또한 이것에 대해서는 cs.virginia.edu/~evans/cs150/classes/class39/lecture39.pdf 입니다. 어떤 식 으로든 잘못 되었습니까?
Hibou57

친애하는 Neel, 당신은 튜링 모델이 아닌 람다 미적분학 모델에서 실현 될 수있는 함수의 예를 가지고 있습니까?
Ingo Blechschmidt

29

Neel의 말과 다음 내용.

나는 (강조하고 싶습니다 다시 , 다시 하고 다시 ) 입력 및 출력 문제의 표현을. 표현을 변경할 수 있다면 거의 모든 것을 달성 할 수 있습니다 (예 : 주어진 함수를 계산 가능하게 함). 그래서, 함수 표현으로부터 전달 하여 괴델 번호에 의해 표현 -terms는 없는 연산이 모델이면 허용 가능한 -calculus (다음 태닝 동작 때문에 하여 uncomputable된다 ) -calculus.NNλλλ

term 모델에서는 실현 가능 하지만 Turing 머신 모델에서는 불가능한 문장 은 "모든 함수 에 Gödel 코드가있는 것은 아닙니다 "라는 말은 일종의 바보입니다. 나는 더 나은 것을 생각해 내고이 답변을 편집하려고 노력할 것입니다.λNN


2013-10-07 편집 : "카레는 계산할 수 없게된다"는 의미입니다. 유형이 지정되지 않은 -calculus를 계산 모델로 사용한다고 가정 한 다음 Gödel 코드 (Turing 머신의 교회 숫자로 인코딩 됨)로 맵을 표시해야한다고 결정합니다 . 무해한 소리 지? 결국 우리는 "Turing machines과 -calculus는 동등하다" 라는 만트라를 믿습니다 .λNNλ

이 새로운 표현이 실제로 의 유효한 표현이 되려면 응용 프로그램과 카레를 실현해야합니다 ( "함수를 표현하는"이라는 의미는 " 지수 객체 "). 구체적으로, 우리는 필요 -term가 교회 부호마다되도록 나타내는 다음 로 나타낸다 . (여기서 숫자 나타내는 교회 숫자로 을 .) 그런NNλappn¯f:NNf(k)appn¯k¯n¯napp -calculus에 구현 된 튜링 머신의 인터프리터에 해당하므로 쉽게 사용할 수 있습니다 .λ

그러나 카레는 어떻습니까? 이를 위해서는 다음이 필요합니다. 가 표현 된 집합 이라고 가정 합니다. 어떤 맵을 감안할 때 a로 계산 -term의 , 우리는 보여줄 필요가 조옮김 일부에 의해 계산된다 -term . 그러나 여기서의 예를 고려 세트는 O fmaps 로 표시 -terms 및 애플리케이션이다. 그러면 는 동일하게 작동하는 맵이됩니다.Xf:X×NNλtf~:X(NN)λsXNNλff~NN그러나 실현자는 용어로 을 나타내는 용어 를 해당 Gödel 코드로 변환합니다. 이러한 은 존재하지 않습니다 (예를 들어 위상 의미 론적 모델에서 불연속 적이기 때문에).λλNNλ

-terms로 표시되는 맵 의 특정 표현 세트 를 사용해서는 안된다고 반대 할 수도 있습니다. . 그러나 당신은 틀릴 것입니다. 우선 , 더 복잡한 증거 로 다른 를 사용하여 당신을 피할 수는 있지만 여전히 동일한 결과를 얻을 수있었습니다. 둘째, 는 범주에 있으며 지수의 정의는 모든 객체에 대해 카레 작업이 필요 합니다. 카테고리를 존중해야합니다. 당신은 무작위로 그것을 정육점으로 삼을 수 없으며 어떤 물건을 꺼낼 수 있습니다.XNNλXX


2
그래도 더 좋은 예를 기다리고 있습니다.
Jacques Carette

1
글쎄, 나는 Turing 기계로는 실현 가능하지만 -terms로는 실현할 수없는 많은 진술을 생각할 수 있습니다 . 나는 당신이 반대를 원한다고 가정합니다. 흠. λ
Andrej Bauer

카레가 어떻게 계산할 수 없는지 모르겠습니다. 증거가 1 차 데이터 (자연)에 함수를 구성하므로 smn 정리를 재사용 할 수 있어야합니다. Church-Turing 논문에 따르면, 본성에 대한 이러한 행동은 람다 용어로 구현 될 수 있습니다. 마찬가지로 utm 정리를 증명할 수 있으므로 게시물 에 따라 완료해야합니다. 내가 무엇을 놓치고 있습니까?
Blaisorblade

1
나는 대답에서 커링이 계산 불가능하다는 의미, 즉 제안 된 객체가 표현 된 세트의 범주에서 지수가 아니라는 것을 설명했습니다.
Andrej Bauer

설명 주셔서 감사합니다! 불행히도 나는 다시 공감할 수 없다. 대부분의 기술적 세부 사항을 따를 수 있습니다. 토폴로지 모델에는 익숙하지 않지만 어쨌든 "함수 프로그래밍 / λ- 미적분의 함수를 검사 할 수 없습니다"에 익숙합니다. 마지막 단락은 또한 smn을 통해 갈 수없는 이유를 설명합니다. smn이 제공하는 카레는 표준 기능이 아닌 Gödel 코드를 다시 생성하기 때문입니다. 나는 그 문단을 묵상 할 것이다.
Blaisorblade
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.