순수한 람다 미적분학의 퀴네


13

순수한 람다 미적분학 에서 quine 의 예를 원합니다 . 인터넷 검색으로 찾을 수 없다는 사실에 놀랐습니다. quine 페이지 에는 많은 "실제"언어에 대한 quies가 나열되어 있지만 lambda 미적분학에는 해당되지 않습니다.

물론 이것은 람다 미적분학에서 퀴니가 의미하는 바를 정의하는 것을 의미합니다. (나는 매우 구체적인 것을 요구하고 있습니다.)

Larkin and Stocks (2004)와 같은 몇몇 장소에서 나는 다음을 "자기 복제"표현으로 인용했다 : (λx.xx)(λx.xx) . 이것은 단일 베타 감소 단계 후에 그 자체로 감소하여 어떻게 든 뾰족한 느낌을줍니다. 그러나 종료되지 않는다는 점에서 말과는 다릅니다. 추가 베타 감소는 동일한 표현을 계속 생성하므로 정상적인 형태로 절대 줄어들지 않습니다. 저에게 quine은 종료되고 출력되는 프로그램이므로 해당 속성을 가진 람다 식을 원합니다.

물론, redexes를 포함하지 않는 표현식은 이미 정상적인 형태이므로 종료되고 출력됩니다. 그러나 그것은 너무 사소합니다. 그래서 나는 사소한 해결책을 인정하기를 희망하면서 다음과 같은 정의를 제안합니다.

정의 (잠정) 람다 계산법에서의 quine 폼의 표현이다

(λx.A)
( A 일부 특정 람다 수학 식 약자)되도록 ((λx.A)y) 된다(λx.A) , 또는 변수 이름의 변경하에 뭔가 당량에 대해, 통상의 형태로 감소 할 때어떤입력y .

람다 미적분학이 다른 언어와 마찬가지로 튜링과 동등한 것으로 가정하면 이것이 가능 해야하는 것처럼 보이지만 내 람다 미적분학은 녹슨 것이므로 예제를 생각할 수 없습니다.

참고

제임스 라킨과 필 주식. (2004) "람다 미적분학에서의 자기 복제 표현"정보 기술 연구 및 실무 회의, 26 (1), 167-173. http://epublications.bond.edu.au/infotech_pubs/158


내 질문에 대한 대답은 아니지만 내 미래의 참조 및 미래 방문자를 위해 wiki.haskell.org/Combinatory_logic 링크를 사용 하면 누군가보다 내가 quine에 대해 훨씬 더 깊이 생각하는 것이 좋습니다.
Nathaniel

quine은 자체 소스 코드 를 생성해야합니다 . 그것이 나타내는 기능을 생산하는 것만으로는 충분하지 않습니다.
PyRulez

@PyRulez 람다 식의 소스 코드는 무엇입니까? 일련의 문자이면 람다 식으로 출력 할 수 없으므로 모호함을 두려워하지 않고 람다 식에 대해 약간 다른 것을 의미하도록 "quine"이라는 단어를 정의 할 수 있습니다. 반면에 소스 코드를 람다 소비 자체라고 생각하면 "소스 코드"와 "그것이 나타내는 기능"은 동일합니다. 그래서 나는 여기에 괜찮다고 생각합니다.
Nathaniel

문자열을 인코딩하는 교회가 있습니다. 람다 미적분학 퀴니는 그것을 나타내는 문자열을 교회 인코딩으로 출력해야합니다.
PyRulez

물론, 그렇게 정의하면 어렵지 않습니다. 이 질문은 다른 것에 관한 것입니다.
Nathaniel

답변:


8

당신은 용어 원하는 등이 M Λ를 :QMΛ

QMβQ

에 대해서는 더 이상 제한을 지정하지 않으며 (예 : 형식 및 정규화 여부), 반드시 정규화되지 않아야 함을 보여줍니다.Q

  1. 가정 인 정규형. 선택합니다 (모든 정리가 필요하기 때문에 그렇게 할 수 있습니다 ). 그런 다음 세 가지 경우가 있습니다.QMxM

    • Q 는 원자 입니다. 그런 다음 . 이에 환원하지 .aQMaxa
    • Q 는 일부 애플리케이션 입니다. 그런 다음 입니다. 는 가설에 의한 정규형이므로 도 정규형이며 환원 할 수 없습니다 .(RS)QM(RS)x(RS)(RS)x(RS)
    • Q 는 추상화 ( 가 에서 자유로 워야 경우 단순성을 위해 변수 초록에 해당하는 과 동일하게 선택할 수 있습니다 ). 그런 다음 입니다. 이후 정상 형태이므로,이다 . 따라서 를 줄일 수 없습니다 .(λx.A)xAMλQM(λx.A)xβA[x/x]A(λx.A)AA(λx.A)

    그래서 이러한의 경우 존재, 그것은 될 수 없습니다 에서 일반적인 형태.Q

  2. 완전성을 위해서, 가정 갖는 일반적인 형태가되지 않지만, , 즉 (아마도 약하게 정규화이다) 정규형 와 되도록 : Q Nβ-nfNQMΛ

    QMβQβN

    그런 다음 하면 다음과 같은 감소 시퀀스 도 있어야합니다 .MxQxβNxβN

    • QxβNx 는 입니다.QβN
    • Nx 은 -nf이고 는 원자 이므로 는 정규화해야합니다 .Nβx
    • 경우 이외의 다른 정상화했다 , 다음 두 가지가 처치 -로서 정리에 대한 추론에 의해 수 없습니다 -nfs을. (교회-로저 정리는 본질적으로 이미 알고 있듯이 축소가 합류한다고 명시합니다.)NxNQxβ

    그러나 위의 인수 (1)로 을 사용할 수 없으므로 가 정상적인 형태라는 가정은 수 없습니다.NxβNQ

  3. 우리가 그러한 허용한다면 , 우리는 그것이 비정규 화되어야 함을 확신합니다. 이 경우 우리는 단순히 인수를 제거하는 결합기를 사용할 수 있습니다. Denis의 제안 은 잘 작동합니다 : 그런 다음 두 개의 만 있습니다 : Q

    Q(λz.(λx.λz.(xx))(λx.λz.(xx)))
    β
    QM(λz.(λx.λz.(xx))(λx.λz.(xx)))M1β(λx.λz.(xx))(λx.λz.(xx))1β(λz.((λx.λz.(xx))(λx.λz.(xx)))Q

이 때문에이 결과는 매우 놀라운 일이 아니다 된다 본질적을 제거해 인수가이 수신하는 기간을 요구하고,이 나는 종종 고정 소수점 정리의 직접적인 응용 프로그램으로 언급되는 무언가이다.


내가 Denis의 대답을 받아 들일 수 있다면 (하지만 조금 더 배우고 그것을 완전히 이해할 수 있었을 때)이 답변은이 "퀸 콤비 네이터"가 정상적인 형태의 람다 식.
Nathaniel

9

한 손은 quine이 자체 코드를 출력해야하기 때문에 순수 람다 미적분은 출력을 수행 할 수단이 없기 때문에 불가능합니다.

반면에 결과 항이 출력이라고 가정하면 모든 일반 양식은 quine입니다.

예를 들어, 람다 항 은 이미 정규 형식이며 출력이 결과 정규 형식이라고 가정하면 출력은 입니다. 따라서 는 퀴네입니다.(λx.x)(λx.x)(λx.x)


2
흥미로운 지적입니다. 이 질문에서 나는 람다 미적분학에서 사소한 퀴인으로 간주 될 수있는 것에 대한 정의를 제공하려고 시도했습니다 : 어떤 입력에 적용될 때 자체적으로 베타 감소하는 함수 (최대 변수 이름 대체). 이것이 불가능할 수도 있지만 적어도 나에게는 분명하지 않습니다.
Nathaniel

8

제안은 다음과 같습니다.

함수 의 고정 점으로 를 선택합니다 .Af=λt.(λz.t)

수정 점 결합기 를 사용하고 .Y=λg.((λx.g (x x)) (λx.g (x x)))A=Yf=(λx.λz.(x x)) (λx.λz.(x x))

이제 우리는 가 quine 임을 보여줍니다 . 실제로 는 감소 하므로 모든 에 대해 입니다.AAλz.Ay(λz.A)yβAβ(λz.A)


이것은 매우 깔끔하고 질문에 대한 답변이므로 받아들이지 않아서 안타깝지만 불행히도 원하는 것을 지정하는 데 약간의 실수가있었습니다. 베타 축소 단계 이후가 아니라 정상적인 형태로 축소 될 때 실제로 가 가 되기를 원합니다 . (이유에 대해서는 업데이트 된 질문을 참조하십시오.) 이것은 redexe를 포함 할 수 없음을 의미합니다 . 그렇지 않으면 축소가 종료되지 않기 때문입니다. (λz.A)y(λz.A)A
Nathaniel

1
아,이 경우 나는 다음 직관 때문에 불가능하다는 것을 확신합니다 (증거가 아니라 거의) : 당신은 가 모든 마다 작동해야하기 때문에 아무런 역할을하지 않기를 원합니다 . 그래서 는 에서 자유롭지 않아야합니다 . 그런 다음 는 줄어 듭니다 . 이제 를 로 줄이려고합니다 . 내부를 다시 줄일 수 있기 yyyA(λz.A)yAAλz.AA
Denis

1
의 "인쇄" 가 다시 명령 이기 때문에이 동작은 그리 놀라운 일 이 아닙니다. 자체 코드 인쇄는 항상 실행 가능합니다. 당신이 요구하는 것은 출력을 실행하면 아무것도 인쇄하지 않도록 quine을 요구하는 것과 유사합니다 (정의상 불가능합니다). λcalculus
Denis

아, 물론입니다. 나는 그것을 보았어야했다. 더 나은 정의를 요청하기 위해 귀하의 답변을 수락할지 또는 질문을 편집할지 확실하지 않습니다. 약간의 생각을하겠습니다. (여전히 끝날 무언가를 요구하는 곳에서 사소한 정의를 내리는 것이 가능할 것 같지만 어떻게 해야할지 모르겠습니다.)
Nathaniel

그런 말을하는 데 있지만, 그것은 정말 사실이다 (내가 당신에게 평균 가정 ) 무료하지합니다 ? 예를 들어 는의 라인을 따라 무언가가 될 수 있습니다 . (의사 코드는 람다 미적분학에서 임의의 표현식에 대해 등식 연산자를 정의 할 수 있는지 확실하지 않기 때문에 의미하는 바를 알 것입니다.)zzAAif z==p then return q, otherwise return q
Nathaniel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.