증거를 무너 뜨리는 방법


59

증명을 확인하기위한 일반적인 지침은 무엇입니까? 나는 이것이 나와 같은 대학원생에게 중요하다고 생각합니다. 나는 우리가 무언가를 증명하기 위해 무엇을해야하는지 이미 알고 있지만, 그것을 보내기 전에 항상 모든 것을 점검해야합니다. 당신의 고문에게도.

시행 착오를 통해 몇 가지 전략을 개발했으며 조언자로부터 많은 조언을 받았습니다. 그러나 이것은 항상 매우 지루한 작업입니다. 일반적으로 무언가를 끝내면 다음 문제로 넘어 가고 싶지만 모든 것이 완벽해질 때까지 현재 문제를 고수해야합니다. 여기에 내 자신의 트릭 목록의 예를 제시합니다.

  1. 세부 사항을 작성하십시오. "일반적인 것을 잃지 않고 ...", "...
  2. 숫자를 입력하십시오. " 또는 n = 1000을 설정할 때 발생하는 상황"과 같은 극단적 인 경우를 시도하십시오 .n=1n=1000
  3. 깨끗한 노트를 유지하십시오. 매일 그것에 글을 쓰고 거친 메모와 비교하십시오. 나는 라텍스로도 쓰려고 노력하는데, 이런 식으로 많은 실수를 발견했습니다.

증명을 확인하기 위해 적용하는 일반적인 전략은 무엇입니까?

이 질문의 목적은 커뮤니티 위키를 만드는 것입니다.


질문이 주관적인 것처럼 보이면 개선해주십시오.
마르코스 빌라 그라

이 커뮤니티 위키를 어떻게 만드나요?
Marcos Villagra 2016 년

1
이봐, 쿨! 이 질문에 대한 답변에 관심이 있습니다. 또한 귀하의 # 3에 감사드립니다. (내가 그것에 대해 생각할 때, 나는 의도적으로 문제를 해결하려고 할 때 실제로 모든 곳에 흩어져있는 종이 더미를 가지고 있습니다. 그런 다음 무작위로 재배치됩니다. Yuck.) 나는이 문제에서 전에 실수에 빠져서 낭비했습니다. 좋은 시간 덩어리.
Daniel Apon

@ 다니엘 : 나는 같은 문제가 있었다! 그래서 증명을 마친 후 즉시 라텍스 버전을 작성합니다. 내가 모든 것을 모든 곳에서 지키는 유일한 지저분한 사람이 아니라는 것을 아는 것이 좋다 :-)
Marcos Villagra

1
운영자의주의를 끌기 위해 플래그를 지정합니다.
Suresh Venkat

답변:


39

소프트웨어 엔지니어는 " 코드 냄새 " 라고하는 개념을 가지고 있습니다 . 이는 코드에서 더 깊은 문제를 나타낼 수있는 증상입니다. 소프트웨어 엔지니어는인지 할 냄새 목록 (예 : 너무 길거나 너무 많은 매개 변수)을 수집합니다. 반드시 문제가 있음을 의미하지는 않지만 작가가 이중 점검을 원할 수도 있음을 나타냅니다.

나는 또한 "악취 방지" 도 고려해야한다고 제안한다 . 이것은 증명을 확인하는 알고리즘을 제공하지는 않지만 증명의 가능한 문제를 인식하기위한 언어와 은유를 제공합니다. 증거의 몇 가지 예는 다음과 같습니다.

  1. 부사 "명백하게", "명백하게"등
  2. 결과 자체에 대한 참조 대신 이전 결과의 증거에 대한 참조
  3. 많은 기술적 인 전제 조건이있는 결과의 Flippant 사용.

더 미묘한 냄새도 있습니다. 예를 들어, 증명에서 이항 정리를 사용하여 식을 확장 한 다음 나중에 이항 정리를 사용하여 닫힌 형태로 돌아 가면 닫힌 형태를 직접 조작하여 동일한 결과를 얻을 수 있습니다.

내 제안은 그러한 냄새의 (정신적 또는 서면) 목록을 수집하고 작업을 읽을 때 냄새를 확인하는 것입니다. 이 접근 방식의 좋은 부작용은 더 나은 독자가 될 것입니다.

참고 :이 답변에 대한 희망은 M. Alaggan의 답변에 언급 된 Lamport의 How to Proof Proof에서 제공하는 엄격한 답변에 직관적 인면을 제공하는 것이 었습니다.


4
나는 항상 내 학생들에게 이것을 말하고 그들은 내가 미쳤다고 생각합니다. 물론 나는 실제로 버그의 냄새를 맡을 수 있다고 주장한다. 이것은 문제의 일부일 수있다.)
Suresh Venkat

7
@Suresh :이 학생은 당신이 다른 이유로 미쳤다고 생각합니다. ;-)
John Moeller

4
코드 냄새 메모에서, 항상 다른 사람들의 증거로 면밀히 조사하려고하는 것은 불평등 체인을 포함합니다. 종종 기본 오류는 좀 더 어려운 파생물 중 하나에 들어갑니다.
John Moeller

23

Leslie Lamport의 아주 좋은 논문이 있습니다 ( 증명을 작성하는 방법 ). 실제로 다음과 같은 방식으로 자세한 증거를 작성하는 스타일에 대한 제안입니다.

(1) 오류를 직접 감지 할 수 있습니다

(2) 어떤 가정에 대한 가정과 정리가 어느 부분에 사용되었는지를 명확하게하여 더 약한 가정을 사용하려는 경우 어떤 일이 발생하는지 쉽게 알 수 있습니다.

일부도 있습니다 사회 경험 일반적으로 긍정적 인 경험 (그리고 다른 자원도)를 보여줍니다 MO에이 기술에 영감 해설.

업데이트 : 새로운 버전 이 있습니다 21 세기 증거를 작성하는 방법 .


5
이러한 증명은 PL 연구 논문에서 작성하는 것과 매우 유사합니다. 논리의 사슬은 매우 명백합니다. PL 스타일 교정을 읽고 이해하는 방법을 배운 후에 "정상적인"수학 교정을 이해하기가 어렵다는 것을 알게되었습니다. 그러한 증거는 종종 독자가 저자와 같은 방식으로 생각할 것을 요구하며, 당신이 다른 증명 스타일에 익숙해 졌을 때, 이것은 단지 사실이 아닙니다 (적어도 나에게는 아닙니다!)
Christopher Monsanto

2
@Christopher Monsanto : PL은 프로그래밍 언어의 약자입니까? 당신이 그런 예를 언급 할 수 있다면 고맙겠습니다. (한 종이) :)
M. Alaggan

5
저는 Lamport가 제안한 것이 Paul Lockhart의 "수학자의 애도"( maa.org/devlin/LockhartsLament.pdf ) 와 호환되지 않는다는 느낌을 항상 받았습니다 .
Marcos Villagra


14

물리학 자들이 비슷한 문제를 다루는 방식에 대해 오래 전에 인기있는 기사를 읽은 것을 기억하는 것 같습니다. 다음 버전이 얼마나 정확한지 누가 알겠습니까? 정정을 환영합니다. 그러나 나는 기본 전략이 매우 주목할 만하다는 것을 알았습니다.

그들은 블랙홀을 어떻게 믿었는지 설명했습니다. 블랙홀은 처음에는 웜홀과 같은 물리학의 다른 이상한 물체와 같이 순수하게 수학적 구조였습니다. 그들의 전략은 눈에 띄었다. 테스트 할 물체에 다른 물체를 수학적으로 던질 것이다. 웜홀은 정상적인 물리적 물체, 소행성이 존재하는 경우에도 웜홀이 무너지는 것을 발견했기 때문에 테스트에 실패했습니다. 그러나 블랙홀은이 테스트를 통과했습니다. 블랙홀은 소행성이 던져져도 살아남을 것입니다. 그래서 그들은 별을 던지려고 노력했습니다. 같은 결과입니다. 마지막으로, 그들은 블랙홀에 또 다른 블랙홀을 던졌고 생존했습니다. 그 결과, 그들은 실제 우주에서 실제로 그들을 찾기 시작할 블랙홀의 존재에 대해 확신을 갖게되었습니다.

따라서 위의 전략의 관련성과 적용은 증거에 물건을 던지기 시작하는 것입니다. 위생 검사에서 살아남 습니까? 필요한 가정을 제거하면 예상대로 축소됩니까? 범위를 벗어난 사례에 적용될 때처럼 축소됩니까? 합리적인 일반화 및 전문화에 견딜 수 있습니까? Polya의 해결 방법 에서 휴리스틱 목록을 살펴보십시오 . 이러한 휴리스틱을 사용하여 증거를 변경하고 그것이 제대로 작동하는지 확인하십시오.


대부분의 답변은 증거가 허위 인 상황에서 허위가되어 있음을 확인하여 증거를 확인하는 데 중점을 둡니다. 정리가 참이었던 곳에서 정리가 참인지 확인하지 않기 때문에 작동하지 않습니다! 예를 들어, 모든 홀수를 3으로 나눌 수 있다고 "증명"했다고 가정합니다. 나는 짝수로 확장하면 내 증거가 실패하는지 확인합니다 .4는 3으로 나눌 수 없기 때문에 그렇게합니다. Hooray, 내 증거는 정확해야한다!
David Richerby 2014

12

가장 안전한 방법 중 하나는 여러 개의 독립적 인 증거를 제시하는 것입니다. 그런 다음 증거에 대한 세부 사항에 실수가 있어도 주요 결과가 정확하다고 확신 할 수 있습니다.


9

내가 찾은 유용한 기술 중 하나는 증거 전략이 증명할 수있는 다른 결과에 대해 생각하는 것입니다. 큰 공개 문제 또는 공개되지 않은 문제를 증명하기 위해 증거 전략을 쉽게 조정할 수 있지만 증명 전략의 복잡성에 비해 너무 복잡한 솔루션을 가지고 있다면 의심 할만한 큰 이유입니다. 증거.


5
PNP

6

항상 COQ 또는 ISABELLE 과 같은 증명 검사기로 증명을 다시 확인 합니다. 이러한 프로그래밍 언어로 증명을 증명할 수 있으면 증명이 올바른지 확인할 수 있습니다. 람다 용어처럼 간단합니다.).


나는 Coq을 사용한 적이 없지만 시도해야합니다. 사실, 나는 수학으로 하한을 증명하려고 노력하고 있지만 올바른 길을 찾지 못했습니다. 특별한 패키지 나 무언가가 필요할 수도 있습니다.
Marcos Villagra

1
어쩌면 그것은 오래되었지만
Gopi

동의하지만 모든 프로그래밍 언어가 작동합니다. 대부분이 작업을 반대로 수행합니다. 문제 영역을 프로그래밍 언어 (보통 Ruby)로 공식화 한 다음이를 증명 용 템플릿으로 사용하십시오.
Chad Brewbaker
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.