이론적 CS는 언제 직관적 인 증거에 관심을 갖습니까?


23

내가 이해하는 것 (매우 작은 것이므로 오류가있는 부분을 수정 해주세요!)에서 프로그래밍 언어 이론은 종종 "직관적 인"증거와 관련이 있습니다. 내 해석으로는 논리와 확률에 대한 계산 결과를 심각하게 받아 들여야합니다 . 가설의 결과를 구성 하는 알고리즘 이 없으면 증거가 존재할 수 없습니다 . 예를 들어 또는 인 일부 객체 를 비 구조적으로 표시 하기 때문에 제외 된 중간의 원리를 공리로 거부 할 수 있습니다 .¬ XX¬X

위의 철학은 우리가 아닌 것보다 직관적으로 유효한 증거를 선호하도록 이끌 수 있습니다. 그러나 나는 이론적 CS의 다른 영역에서 논문에서 직관 논리를 실제로 사용하는 것에 대해 걱정하지 않았다. 우리는 고전적인 논리를 사용하여 결과를 증명하게되어 기쁩니다. 예를 들어, 제외 된 중간 원리를 사용하여 알고리즘이 올바른지 상상할 수 있습니다. 다시 말해, 우리는 계산 결과가 제한된 우주에 관심을 갖고 진지하게 받아들입니다. 그러나 이러한 결과에 대한 증거는 아닙니다.

1. 이론적 CS의 연구자들은 직관적으로 유효한 증거를 작성하는 것에 관심을 가지고 있습니까? TCS 결과, 특히 알고리즘 결과가 직관적 인 논리를 유지하는 경우 (또는 더 흥미롭지 않은 경우)를 이해하려는 이론적 컴퓨터 과학의 하위 필드를 쉽게 상상할 수 있습니다. 그러나 나는 아직 어떤 것도 보지 못했습니다.

2. 그들이해야 할 철학적 주장이 있습니까? 컴퓨터 과학 결과는 가능하면 직관적으로 입증되어야한다고 주장 할 수 있으며 PEM과 같은 어떤 결과가 필요한지 알아야합니다 . 누구든지 그런 주장을하려고 했습니까? 아니면이 질문이 그다지 중요하지 않다는 의견이 있을까요?

3. 부수적 인 질문으로, 이것이 실제로 중요한 사례의 예를 알고 싶습니다. 고전적 논리에는 있지만 중요한 직관 논리에는없는 TCS 결과가 있습니까? 또는 직관적 논리를 지키지 않는 것으로 의심됩니다.

질문의 부드러움에 대한 사과! 전문가의 의견을 경청 한 후에 다시 말하거나 해석해야 할 수도 있습니다.


3
이 질문의 한 측면은 '죽음으로'연구되었습니다. 직관 증명과 프로그램 간의 연결 이름은 Curry-Howard 대응 입니다. 간단히 말해서, 프로그램 = 직관적 증거, 유형 = 명제, 이중 부정 == 점프.
Martin Berger

중요한 TCS 결과는 직관적 논리를 유지하는 것이 아니라 고전적 논리를 유지하는 것으로 알려져 있습니다. 모든 프로그램은 무한한 시간 동안 종료되거나 실행됩니다. :)
cody

1
@MartinBerger-그렇습니다. 그러나 내 질문을 다른 방식으로 설명하기 위해 실제로 우리가 작성한 증거 가 직관 주의자인지 아니면 그러한 증거를 추상적 으로 연구하는 데 관심이 있습니까?
usul

1
@cody, 일명 Markov 's Principle . + usul, 나는 당신이 생각하는 것이 직관 논리가 아니라 건설적인 수학 이라고 생각합니다 . 직관적 인 논리만으로는 할 수 없으며 직관 론에 대한 강조는 건설적인 수학과 구별하지 않는 것 같습니다.
Kaveh

@usul 예, Curry-Howard 서신에 따르면 직관적 인 증명은 '좋은'프로그래밍 언어의 프로그램 (예 : 펑키 한 제어 구문이 아님) 인 반면, 진정한 고전적인 증명은 좀 더 복잡한 언어의 프로그램이기 때문입니다.
Martin Berger

답변:


6

내가 의견에서 말했듯이, 직관 론 논리는 요점이 아닙니다. 더 중요한 점은 건설적인 증거를 갖는 것입니다. Martin-Löf의 유형 이론은 직관 론보다 프로그래밍 언어 이론과 훨씬 더 관련이 있다고 생각하며 Martin-Löf의 연구가 건설 수학에 대한 일반적인 관심의 부활의 주된 이유라고 주장하는 전문가들이 있습니다.

건설 성의 계산 가능성 해석은 가능한 한 가지 관점이지만, 유일한 관점은 아닙니다. 우리는 건설적인 증거와 고전적인 증거를 비교할 때 여기서주의해야합니다. 둘 다 동일한 기호를 사용할 수 있지만 해당 기호의 의미는 다릅니다.

고전적인 증거는 직관적 인 증거로 번역 될 수 있다는 점을 항상 기억하는 것이 좋습니다. 다시 말해, 고전적인 논리는 직관 논리의 하위 시스템입니다. 따라서 어떤 의미에서 고전적 증거를 실현 (예 : 계산 가능한 함수 사용) 할 수 있습니다. 다른 한편으로, 우리는 건설적인 수학을 고전적인 환경에서 일부 수학적 시스템으로 생각할 수 있습니다.

결국, 고전주의이든 건설적이든 형식주의는 우리가 진술을 표현하는 도구입니다. 고전적인 정리를 취하고이 관점없이 건설적으로 증명하려는 것은 IMHO에게는 의미가 없습니다. 고전적으로 말할 때 나는 건설적으로 말하는 것과 다른 것을 의미합니다 . " " 의 진정한 의미가 무엇이어야하는지 논쟁 할 수 있지만, 우리가 처음에 표현하고자하는 것을 논의하지 않는다면 흥미롭지 않다고 생각합니다. 우리는 그들 중 하나가 (적어도) 보유하고 있고 어떤 것을 알고 있습니까? 아니면 단순히 그중 하나가 보유하고 있음을 의미합니까?A B ABAB

우리는 같은 성명을 증명하려는 경우 자,이 관점에서, 하고 우리가에서 매핑이 관련 할 일부에 만족 표현하는 더 좋은 방법은 건설적인 방법이 될 수 있습니다. 반면에, 우리가 의 존재에만 관심이 있고 그것들을 찾는 방법에 관심이 없다면 고전적인 방식이 더 의미가있을 것입니다. 명령문을 건설적으로 증명하면 에서 를 찾기위한 알고리즘을 암시 적으로 작성하는 것 입니다. "알고리즘 는 모두에 대해 다음과 같은 속성을가집니다.x y φ ( x , y ) y y x A x φ ( x , A ( x ) ) Ax y φ(x,y)xyφ(x,y)yyxAx , "여기서 는 명시 적으로 주어진 알고리즘입니다. 왜 이것을 표현하는 건설적인 방법을 선호 할 수 있는지 확실하지 않은 경우 프로그래밍 언어를 유추로 생각하십시오 : 프로그램을 작성할 수 있습니다 x86 어셈블리 언어의 Kruskal의 MST 알고리즘의 경우 많은 부수적 인 문제에 관심이 있거나 Python으로 프로그램을 작성할 수 있습니다.φ(x,A(x))A

이제 왜 직관 론을 사용하지 않는가? 몇 가지 이유가 있습니다. 예를 들어, 우리 대부분은 그러한 마음가짐에 대해 훈련받지 않았습니다. 또한 진술에 대한 고전적인 증거를 찾는 것이 그에 대한 건설적인 증거를 찾는 것보다 훨씬 쉽습니다. 또는 건설적인 설정에서 숨겨져 액세스 할 수없는 하위 수준의 세부 정보가 필요할 수도 있습니다 ( linear logic 참조 ). 또는 우리는 건설적인 증거와 함께 제공되는 추가 자료를 얻는 데 관심이 없을 수도 있습니다. 그리고 증명에서 프로그램을 추출하는 도구가 있지만 이러한 도구는 일반적으로 매우 상세한 증명이 필요하며 일반 이론가에게 충분히 친숙하지 않습니다. 요컨대, 너무 적은 고통으로 너무 적은 혜택.

이론 A에서 많은 건설적인 증거를 보지 못하는 한 가지 이유는 다음과 같습니다. 이론 A의 이론은 종종 문이며 매우 강력한 이론 ( 에서 증명 가능함 )과 메타에 의해 입증되지 않았습니다. -정리 모든 것들도 건설적으로 증명할 수있다 ( 의 건설적인 대응 부분에서 ). 실제로, 많은 이론 A 결과는 보다 훨씬 약한 이론에서 입증 될 수 있습니다 . P A P A P AΠ20PAPAPA

그의 계산 이론 이론 서문에서 Douglas S. Bridges 는 우리가 결과를 건설적으로 증명해야한다고 주장했음을 기억합니다 . 그는 IIRC가 본질적으로 다음과 같은 예를 제시합니다.

대규모 소프트웨어 회사에서 일하고 관리자가 문제를 해결하기위한 프로그램을 요청한다고 가정합니다. 두 개의 프로그램으로 돌아와서 관리자에게이 두 가지 중 하나를 올바르게 해결해도되지만 어느 것을 알 수 없습니까?

끝으로, 우리는 고전적이고 직관적 인 논리에 대해 동일한 기호를 사용하지만 이러한 기호는 다른 의미를 가지며 사용할 기호는 표현하려는 대상에 따라 다릅니다.

마지막 질문으로, Robertson-Seymour 정리 는 우리가 그것이 고전적이라는 것을 알고 있지만 그에 대한 건설적인 증거가 없다는 정리의 예 라고 생각 합니다. 참조


"이론 A"란 무엇이며 왜 그 내부의 증명에 관심을 가져야합니까?
Stella Biderman


7

사람들이 너무 자주 기술 세부 사항을 잃어 버리고 문제의 본질을 파악하지 못하기 때문에 직관적 인 논리가 계산의 자연스러운 논리 인 WHY에 대해 생각할 가치가 있습니다.

아주 간단하게, 고전적인 논리는 완벽한 정보의 논리입니다. 시스템 내의 모든 진술은 명백하거나 진실한 것으로 알려져 있거나 알 수있는 것으로 간주됩니다.

반면, 직관적 인 논리는 알 수없고 알 수없는 진실 가치를 가진 진술을위한 여지가 있습니다. 이것은 일반적으로 종료의 결정 불가능 성으로 인해 일부 진술의 진실 가치가 무엇인지, 또는 진실 가치가 특정 진술에 할당 될 수 있는지 여부를 항상 확신하지는 않기 때문에 계산에 필수적입니다. .

이 외에도, 심지어는 종료가 항상 보장 강력하게 정상화 환경에서 고전 논리는 이중 부정 제거하기 때문에, 여전히 문제가 있음을 밝혀 궁극적으로 직접 계산하지 않고 "얇은 공기에서"가치를 끌어낼 수있게됩니다.¬¬PP

제 생각에는 이러한 "의미 적"이유는 마샬링 할 수있는 다른 기술적 이유보다 계산에 직관적 인 논리를 사용하는 데 훨씬 더 중요한 동기입니다.


3

MD5 및 SHA와 같은 실제 암호화 해시 기능에는 키가 없습니다. 따라서 이론적 암호 기법에서 보안에 대한 추론에 기법을 적용하는 것은 상당히 어렵습니다. 간단한 이유 : 키가없는 해시 함수의 경우 해시 함수에서 충돌을 출력하는 매우 작은 프로그램 / 대수가 존재합니다. 즉, 그러한 충돌이있는 프로그램은 존재해야합니다! -하드 코딩되었습니다.

Phil Rogaway의 논문 Formalizing Human Ignorance : Collision-Resistant Hashing with the Keys 는이 문제를 다루고 있습니다. 여기에서 키 해시 함수 (Merkle-Damgård 구성 및 해시-서명 패러다임과 같은)에 대한 매우 표준적인 정리가 키가없는 해시 함수에 적용되는 "직관 론자 친화적 인"정리 문으로 적응되고 재 증명 될 수 있음을 보여줍니다.


0

다음은 포괄적 인 온라인 책 Logic for Computer Science , 300pp의 직관적 인 논리에 대한 좋은 장입니다 . [1] 초 9.5, p210, p220에 대한 요약 :

직관 론적 논리는 비 구조적 존재 증거를 배제한 수학의 구성주의 운동 또는 배제 된 중간의 법칙에 근거한 논리에서 비롯되었다. 최근 직관적 인 수학과 프로그래밍 사이의 연결은 (프로그래밍 의미에서) 제안과 유형이 동등하다는 관찰에서 나왔습니다. 자연 공제를 기반으로하는이 공식 시스템의 알고리즘 개발은 논리적 표기법으로 사양을 작성한 다음이를 유형으로 고려하여 비어 있지 않음을 증명합니다. 기본 논리는 건설적인 증거이므로 수행 할 수 있으면

또 다른 가까운 관점은 TCSist Andrej Bauer가 "수학 및 컴퓨터, 컴퓨터 수학"[2]에 대해 글을 쓴다. 기본적으로 "직관적 인 수학은 물리학에 좋다"고 제안한다. 프레젠테이션은 주로 물리학에 관한 것이지만, 물리학과 밀접하게 결합 된 CS 를 고려하는 사람들에게는 이데올로기가 일반적으로 TCS에 적용됩니다.

계산 해석. 이것은 컴퓨터 과학에서 일반적으로 제시되는 직관적 인 논리의 해석입니다. 우리는 모든 데이터 세트를 적절한 데이터 구조로 표현한 것으로 간주합니다. 컴퓨터 과학자에게는 합리적인 관점입니다. 그런 다음 진실을 목격하는 프로그램 (계산 증거)이 존재하면 진술이 사실로 간주됩니다.

[1] 컴퓨터 과학, 리브스 및 클라크 논리

[2] 물리학 바우어를 위한 직관적 인 수학

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.