Coq에서 증명 관련성이 없는가?


18

Coq에서 다음 정리를 증명할 수있는 방법이 있습니까?

Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.

편집 : "부적절한 증거가 무엇입니까"에 대한 간단한 설명을 제공하려는 시도

기본 아이디어는 제안 세계 (또는 PropCoq 의 종류)에서 실제로 관심을 가져야 할 것은 제안 의 증거가 아니라 제안 의 가능성 이며 많은 것이 있거나 없을 수도 있다는 것입니다. 입증의 관점에서 여러 증거가있는 경우 , 동일한 제안을 입증 한다는 의미 에서 동일 합니다. 따라서 그들의 구별은 무의미합니다. 당신이 정말로 두 용어의 차이에 대해 신경보기의 계산 관점에서이 다릅니다은 예를 들어, 기본적으로, 당신은 두 주민 싶지 않은 유형 (또는 즉, COQ의 말에) 과 동일하게. 그러나 당신이 그것들을에 넣으면 , 그들은 동등하게 취급됩니다.boolSettruefalseProp


흥미로운. Coq 메일 링리스트에서 몇 분 안에 답변을 받으실 수 있습니다. (그렇다면 응답을 여기에 게시하십시오.)
Dave Clarke

2
당신의 질문에 대해 궁금하지만 Coq에 익숙하지 않은 사람들에게, 그 정리가 영어로 무엇을 의미하는지 설명하는 문장을 하나 또는 두 개 추가 할 수 있습니까? (그리고 아마도 "증거 무관은"에 대해 무엇인가?)
여호수아 Grochow

@Joshua, 나는 그것을 새로 설명하기 때문에 자세하게 설명하기에 충분하지 않습니다. 그러나 어쨌든, 여기 내 시도가 있습니다 (질문 부분 참조).

6
@Joshua, IIRC, 건설 수학에서 와 같은 의미 의 증거 는 의 증거 를 의 증거 로 변환하는 함수 / 프로세스 / 알고리즘 / 구성이며 , 결과 증거인 경우 구성은 관련이 없습니다. 의 는 에 어떤 증거가 제공되는지에 의존하지 않습니다 . ABABBA
Kaveh

답변:


28

일반적으로 증거 부적합은 Coq의 이론에 의해 암시되지 않습니다. 평등에 대한 증거 부적합도 암시되지 않습니다. Streicher의 공리 K 와 같습니다 . 둘 다 공리로 추가 할 수 있습니다 .

증명 대상에 대해 추론하는 것이 유용한 개발이 있으며 증명 부적합으로 인해 거의 불가능합니다. 아마도 이러한 개발은 구조가 중요한 모든 객체를 가지고 있어야 Set하지만, 기본적인 Coq 이론으로는 가능성이있다.

항상 부적합한 증거 부적합의 중요한 하위 사례가 있습니다. Streicher의 공리 K는 결정 가능한 도메인을 항상 유지합니다. 즉, 결정 가능한 세트의 평등 증명은 고유합니다. 일반적인 증거는 Eqdep_decCoq 표준 라이브러리 의 모듈에 있습니다. 여기 당신의 정리는 추론입니다 (여기서 나의 증거는 반드시 가장 우아하지는 않습니다) :

Require Bool.
Require Eqdep_dec.
Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.
Proof.
  intros; apply Eqdep_dec.eq_proofs_unicity; intros.
  destruct (Bool.bool_dec x y); tauto.
Qed.

이 특별한 경우에 대한 직접 증명이 있습니다 (의 일반 증명에서 영감을 얻음 Eqdep_dec.v). 먼저, 정식 증명을 정의하십시오 true=b(일반적으로 Coq에서는 상수를 먼저 갖는 것이 더 쉽습니다). 그런 다음 모든 증거 true=b가 있어야 함 을 보여줍니다 refl_equal true.

Let nu b (p:true = b) : true = b :=
  match Bool.bool_dec true b with
    | left eqxy => eqxy
    | right neqxy => False_ind _ (neqxy p)
  end.
Lemma bool_pcanonical : forall (b : bool) (p : true = b), p = nu b p.
Proof.
  intros. case p. destruct b.
  unfold nu; simpl. reflexivity.
  discriminate p.
Qed.

Coq에 클래식 로직을 추가하면 증거 관련성이 없습니다. 직관적으로 말하면, 고전적인 논리는 당신에게 제안에 대한 결정을 내리는 오라클을 제공하며 이는 공리 K에 충분합니다 Classical_Prop. Coq 표준 라이브러리 모듈에는 증거가 있습니다 .

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