계산 가능한 bijective 기능 만 구현할 수있는 프로그래밍 언어?


10

f 가 계산 가능한 형용사 함수 인 경우에만 함수 구현 (또는 표현) 할 수있는 프로그래밍 언어 (또는 논리)가 있습니까?f:N→Nf


누군가는 종료 프로그램 만 허용하는 언어를 만드는 것이 불가능하다는 것을 나에게 증명했습니다. 당신이 질문하는 것은 매우 유사하기 때문에, 아니오라고 생각합니다.
— FUZxxl

1
그런 프로그래밍 언어가있을 것 같지 않습니다. 강제로 적용하려고 시도 할 수는 있지만 최소한 복잡하고 고통스럽지 않으면 서 정렬과 같은 간단한 작업을 수행 할 수는 없습니다.
— Luke Mathieson

@FUZxxl 이것은 많은 종료 프로그램을 캡처하지 않습니다. 실제로 f (x) = 1 함수조차도이 언어로 표현할 수 없습니다. 또한 모든 함수가 총 함수이기 때문에 이러한 종류의 함수가 총 함수 프로그래밍으로 캡처되는 느낌이 있습니다.
— Chao Xu

@ FUZxxl, 나는 그것이 옳다고 생각하지 않지만 그러한 언어는 제한적이어야합니다. 예를 들어, 유한 결정 론적 오토마타에 해당하는 언어는 종료되도록 보장되지만 계산할 수있는 범위는 극히 제한됩니다.
— jmite

@FUZxxl, 그러한 진술의 세부 사항이 중요합니다. 모든 프로그램이 종료되는 프로그래밍 언어를 쉽게 디자인 할 수 있습니다. 계산 가능한 모든 기능을 표현할 수있는 언어를 디자인하는 것은 다른 문제입니다.
— Vijay D

답변:


9

그런 언어는 없습니다.

그러나 Boomerang을 살펴보십시오 . 문자열 사이의 형용사를 쓰는 언어입니다. 지도의 클래스가 얼마나 넓은지를 알 수는 없지만 조금 검색하면 찾을 수 있다고 확신합니다.

N→N

f0,f1,f2,…

g:N→Ng(2k)g(2k+1)fk(2k)

  • fk(2k)=2kg(2k)=2k+1g(2k+1)=2k
  • fk(2k)≠2kg(2k)=2kg(2k+1)=2k+1

k∈Ngfkg(2k)≠fk(2k)g


2k2k+1g(k)=fk(k)+1

fk(k)+1

g

초기 진술이 잘못되었습니다. 문헌에는 그러한 언어가 많이 있습니다.
— Nathaniel

반면에 당신의 증거는 합법적입니다. 어쩌면 나는 어떻게 든 혼란스러워합니다. 나는 여기에서 무슨 일이 일어나고 있는지 알아 내기 위해 Axelsen과 Glück의 논문 (내 대답 참조)을주의 깊게 읽어야합니다.
— Nathaniel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.