함수가 dem 등하다는 것을 증명할 수 있습니까?


12

함수가 dem 등하다는 것을 증명하기 위해 정적 또는 종속 유형을 사용할 수 있습니까?

나는 운이없는 답변을 찾기 위해 Google과 StackOverflow / StackExchange의 여러 곳을 검색했습니다. 내가 찾은 가장 가까운 것은 Idris에 대한 다음 대화였습니다. https://groups.google.com/forum/#!topic/idris-lang/yp7vrspChRg

불행히도, 그 논의는 내 머리 위에 조금 있습니다.


3
100 % 확실하지 않기 때문에 이것을 답변으로 게시하지는 않지만 Rice의 정리 로 인해 이것이 불가능하다고 생각합니다 .
gardenhead

4
이것은 흥미로운 질문이며, 직관에 따르면 제한되지 않은 튜링 완료 언어로 가능해야합니다. 그러나 프로그래머는 소프트웨어 개발 수명주기 (자세한 내용은 도움말 센터 참조)에 관한 질문에 중점을 두지 만, 이것은 컴퓨터 과학 질문입니다. 컴퓨터 과학 사이트 가 더 적합 하고 더 나은 답변으로 이어질 수 있습니다 .
amon

2
@gardenhead Rice의 정리에 따르면 프로그램의 행동이 가질 수있는 모든 속성이 주어지면 프로그램에 해당 속성이 있는지 여부를 결정하는 것이 때로는 불가능합니다. "이것은 때때로 불가능하다"와 "이것은 불가능하다"는 큰 차이가있다.
Tanner Swett

2
나의 마지막 의견은 꽤 모호했다. 어쨌든, 라이스 정리는 다음과 같이 말합니다 : 모든 기능을 dem 등원이거나 dem 등원이 아닌 것으로 올바르게 분류하는 알고리즘은 없습니다 . 그러나 일부 기능을 dem 등원인지 아닌지로 분류하는 유용한 알고리즘이 여전히 있습니다.
Tanner Swett

2
OP는 함수가 dem 등성임을 증명하는 알고리즘을 요구했지만 알고리즘이 함수를 무조건으로 분류하지 않는지에 대해 질문했습니다. 가장 큰 차이점은 사람이 증거를 작성할 수 있다는 것입니다. 튜링 완성도 는 실제로 문제가되지 않습니다 .
gallais

답변:


3

특정 기능의 경우입니다. 특히 함수를 아는 경우 ;-)

"임의의 함수가 dem 등원인지 아닌지를 자동으로 결정하는 알고리즘이 있습니까?"라는 질문에 의해 이미 언급 한 이론으로 인해 답은 '아니오'입니다. 그러나 특정 기능 클래스의 경우 이론적으로 함수가 dem 등원인지 아닌지를 쉽게 결정할 수 있습니다. 예를 들어, 함수가 순수하고 (부작용이없는 경우) 주어진 입력에 대해 항상 유한 한 시간 안에 값을 반환한다는 것을 알고 있다면 f(f(x))=f(x)가능한 입력에 대해 시도하여 간단히 pot 등원을 결정할 수 있습니다 x기능에. 이것이 매우 효율적일 것이 아니라 우주가 끝날 때까지 실행될 수 있습니다.

그래서 그것이 당신이 찾고있는 대답이 아니라면 더 좋은 질문을 작성하십시오. 현재 정확히 당신이 실제로 찾고있는 것이 확실하지 않습니다.


답변 해주셔서 감사합니다. "자동 결정"기능은 내가 찾던 것입니다.
bmaddy

2
'특정 기능에 대해' 문 을 확장하려면 : 제한된 양의 입력 만 수락하거나 (모든 입력을 시도하여) 재귀 적으로 정의 된 입력 유형 (자연과 같이)에 대해 등가성은 입증 될 수 있습니다 숫자 또는 링크 된 목록)을 의미합니다. 즉, 기본 사례 및 재귀 사례에 대해 dem 등성이 참임을 증명하면됩니다.
Qqwy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.