Chứng minh sự không liên quan trong Coq?


18

Có cách nào để chứng minh định lý sau trong Coq không?

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

EDIT : Một nỗ lực để đưa ra một lời giải thích ngắn gọn cho "sự không liên quan bằng chứng là gì" (sửa cho tôi một người nào đó nếu tôi sai hoặc không chính xác)

Ý tưởng cơ bản là trong thế giới mệnh đề (hoặc Propsắp xếp trong Coq), điều bạn (và bạn nên) thực sự quan tâm là khả năng chứng minh của một mệnh đề, không phải là bằng chứng của nó, có thể có nhiều (hoặc không có). Trong trường hợp bạn có nhiều bằng chứng, theo quan điểm chứng minh, chúng bằng nhau theo nghĩa là chúng chứng minh cùng một đề xuất . Vì vậy, sự phân biệt của họ chỉ là không liên quan. Điều này khác với quan điểm tính toán nơi bạn thực sự quan tâm đến sự khác biệt của hai thuật ngữ, ví dụ, về cơ bản, bạn không muốn hai cư dân cùng boolloại (hoặc Settheo cách nói của Coq), cụ thể truefalsebằng nhau. Nhưng nếu bạn đặt chúng vào Prop, chúng được đối xử bình đẳng.


Hấp dẫn. Tôi chắc chắn bạn sẽ nhận được câu trả lời trong vòng vài phút trong danh sách gửi thư Coq. (Hãy chắc chắn để gửi phản hồi ở đây, nếu bạn làm.)
Dave Clarke

2
Đối với những người trong chúng ta tò mò câu hỏi của bạn là gì, nhưng không quen thuộc với Coq, bạn có thể thêm một hoặc hai câu giải thích định nghĩa đó trong tiếng Anh không? (Và có lẽ "bằng chứng không liên quan" là gì?)
Joshua Grochow

@Joshua, tôi không đủ để giải thích chi tiết, bởi vì nó cũng mới đối với tôi, đó cũng là lý do tại sao nó làm tôi bối rối trong một thời gian khá dài. Nhưng dù sao, đây là nỗ lực của tôi (xem trong phần câu hỏi).
ngày

6
@Joshua, IIRC, trong toán học xây dựng, bằng chứng về hàm ý như là một hàm / quy trình / thuật toán / xây dựng chuyển đổi một bằng chứng của thành một bằng chứng của và việc xây dựng là bằng chứng không liên quan nếu bằng chứng kết quả của không phụ thuộc vào đó bằng chứng được đưa ra cho . ABABBA
Kaveh

Câu trả lời:


28

Bằng chứng không liên quan nói chung không được ngụ ý bởi lý thuyết đằng sau Coq. Ngay cả bằng chứng không liên quan đến bình đẳng cũng không được ngụ ý; nó tương đương với tiên đề K Streicher của . Cả hai có thể được thêm vào như tiên đề .

Có những sự phát triển trong đó hữu ích để lý luận về các đối tượng bằng chứng, và bằng chứng không liên quan làm cho điều này trở nên không thể. Có thể cho rằng những sự phát triển này nên có tất cả các đối tượng mà cấu trúc của nó có vấn đề được đúc lại Set, nhưng với lý thuyết Coq cơ bản thì khả năng là có.

Có một cặp con quan trọng của sự không liên quan bằng chứng luôn luôn giữ. Tiên đề K của Strerich luôn giữ các miền có thể quyết định, tức là bằng chứng bình đẳng trên các tập hợp có thể quyết định là duy nhất. Bằng chứng chung là trong Eqdep_decmô-đun trong thư viện tiêu chuẩn Coq. Đây là định lý của bạn như một hệ quả (bằng chứng của tôi ở đây không nhất thiết là thanh lịch nhất):

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.

Đối với trường hợp đặc biệt này, đây là một bằng chứng trực tiếp (lấy cảm hứng từ bằng chứng chung trong Eqdep_dec.v). Đầu tiên, xác định chúng tôi xác định một bằng chứng chính tắc về true=b(như thường lệ trong Coq, việc có hằng số đầu tiên dễ dàng hơn). Sau đó chúng tôi cho thấy rằng bất kỳ bằng chứng nào true=bphải có 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.

Nếu bạn thêm logic cổ điển vào Coq, bạn sẽ nhận được bằng chứng không liên quan. Nói một cách trực quan, logic cổ điển mang đến cho bạn một lời tiên quyết cho các đề xuất và điều đó đủ tốt cho tiên đề K. Có một bằng chứng trong mô-đun thư viện tiêu chuẩn Coq Classical_Prop.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.