Tại sao Agda và Coq không đồng ý về tính tích cực nghiêm ngặt?


24

Tôi đã vấp phải một sự bất đồng khó hiểu giữa Agda và Coq rõ ràng không liên quan đến sự khác biệt được biết đến nhiều nhất giữa các lý thuyết loại của họ (ví dụ, (im) dự đoán, đệ quy cảm ứng, v.v.).

Cụ thể, định nghĩa sau được Agda chấp nhận:

  data Ty : Set0 -> Set0 where
    c1 : Ty ℕ
    c2 : Ty (Ty ℕ)

trong khi định nghĩa Coq tương đương bị từ chối vì sự xuất hiện của [Ty _] như là một chỉ số của chính nó trong c2 được coi là vi phạm tính tích cực nghiêm ngặt.

  Inductive Ty : Set -> Set :=
    | c1 : Ty nat
    | c2 : Ty (Ty nat).

Trên thực tế, trường hợp này gần như là nguyên văn một ví dụ từ Phần 14.1.2.1 của Coq'Art về việc vi phạm tính tích cực nghiêm ngặt:

  Inductive T : Set -> Set := c : (T (T nat)).

Nhưng tôi không thấy lý do cho sự khác biệt này giữa các lý thuyết loại. Ví dụ kinh điển về việc chứng minh Sai sử dụng sự xuất hiện tiêu cực của một loại trong đối số hàm tạo là rõ ràng đối với tôi, nhưng tôi không thể thấy cách người ta có thể rút ra mâu thuẫn từ kiểu lập chỉ mục này (bất kể đối số của hàm tạo tích cực nghiêm ngặt).

Chọc qua các tài liệu, bài báo Gia đình quy nạp ban đầu của Dybjer đưa ra nhận xét trái chiều về giải pháp của Paulin-Mohring trong bài báo CID có những hạn chế hơi khác nhau, và mơ hồ cho thấy sự khác biệt có thể liên quan đến sự thiếu sót, nhưng không nói rõ hơn. Giấy của Dybuler dường như cho phép điều này, trong khi Paulin-Mohring rõ ràng cấm nó.

Rõ ràng tôi không phải là người đầu tiên nhận thấy sự khác biệt về quan điểm này và một số người tin rằng định nghĩa này không được phép trong cả hai hệ thống ( https://lists.chalmers.se/pipermail/agda/2012/004249.html ), nhưng Tôi không tìm thấy bất kỳ lời giải thích nào về lý do tại sao nó là âm thanh trong một hệ thống mà không phải là hệ thống khác, hoặc chỉ là một sự khác biệt về quan điểm.

Vì vậy, tôi cho rằng tôi có một số câu hỏi:

  1. Đây có phải là một ví dụ về loại đơn điệu, nhưng không tích cực? (Trong Coq; rõ ràng Agda coi đó là tích cực)
  2. Tại sao Agda cho phép điều này trong khi Coq từ chối nó? Nó chỉ đơn giản là một sự khác biệt bình dị trong cách giải thích "hoàn toàn tích cực", có một sự khác biệt tinh tế giữa Coq và Agda khiến nó phát ra âm thanh trong Agda và không rõ ràng trong Coq, hay đó là vấn đề của hương vị được thúc đẩy bởi các sở thích lý thuyết cụ thể?
  3. Có sự khác biệt có ý nghĩa giữa định nghĩa đầu tiên ở trên và định nghĩa đệ quy quy nạp tương đương dưới đây không?

Định nghĩa quy nạp-đệ quy:

  mutual
    data U : Set0 -> Set0 where
      c : (i : Fin 2) -> U (T i)
    T : Fin 2 -> Set0
    T zero = ℕ
    T (suc zero) = U ℕ

Tôi rất vui khi có con trỏ đến văn học có liên quan.

Cảm ơn trước.


1
Theo như tôi biết, Coq chặt chẽ hơn những gì lý thuyết cơ bản cho phép, bởi vì nó dễ thực hiện hơn và đủ hữu ích trong thực tế. Câu trả lời này về một trường hợp khác nhưng có liên quan theo như sự hiểu biết của tôi.
Gilles 'SO- ngừng trở nên xấu xa'

1
Định nghĩa này không được chấp nhận bởi phiên bản dev hiện tại của Agda:Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.
gallais

2
Vâng, bạn nói đúng, một người khác đã chỉ ra điều này cho tôi đêm qua. Tôi đã sử dụng gói 2.3.0.1 của Debian, nhưng 2.3.2.1 từ Cabal từ chối cả định nghĩa trực tiếp và IR. Có vẻ như một lỗi dường như không liên quan đã khiến việc kiểm tra tính tích cực trên các chỉ số nghiêm ngặt hơn: code.google.com/p/agda/issues/detail?id=690 Vì nó đã được thảo luận trong danh sách mà không bị đánh dấu rõ ràng là vấn đề về âm thanh, tôi vẫn tự hỏi nếu loại chính nó là âm thanh.
Colin Gordon

Câu trả lời:


10

Vấn đề dường như là sự nhầm lẫn do sự hợp lưu của hai yếu tố:

  1. Tôi đã sử dụng một phiên bản cũ của Agda (2.3.0.1). Có vẻ như trước 2.3.2, Agda chỉ đơn giản là không kiểm tra tính tích cực nghiêm ngặt của các chỉ số kết quả của hàm tạo (xem lỗi tôi đã liên kết ở nơi khác trong luồng).
  2. Việc đọc kỹ hơn về bài viết Gia đình quy nạp của Dybker cho thấy anh ta có thể đã dự định rằng loại quy nạp được xác định không bị ràng buộc khi gõ các chỉ số của kết quả của hàm tạo . Mục 3.2.1 đưa ra sơ đồ cho các nhà xây dựng quy nạp trong văn xuôi, và rõ ràng tôi đã đọc sai ngôn ngữ mô tả các môi trường ràng buộc của từng phần của sơ đồ.

Việc đọc gần hơn này tất nhiên phù hợp với kiểm tra mà Coq và (các phiên bản gần đây) của Agda thực hiện, cấm mọi sự xuất hiện của T trong các chỉ số riêng của nó.


4

Một lý do có thể cho sự khác biệt, như gợi ý nhận xét của riêng bạn, là sự thiếu sót. Coq trong lịch sử đã có một bộ dự phòng (vẫn có sẵn như là một lá cờ tôi tin!)

Trích dẫn cuốn sách của Adam Chlipala http://adam.chlipala.net/cpdt/html/Universes.html

Các công cụ Coq hỗ trợ một tập hợp cờ-dòng lệnh, điều chỉnh Gallina theo cách cơ bản hơn bằng cách đặt Set thành dự phòng. Một thuật ngữ như forall T: Set, T có loại Set và các định nghĩa quy nạp trong Set có thể có các hàm tạo định lượng trên các đối số của bất kỳ loại nào. Để duy trì tính nhất quán, phải áp dụng hạn chế loại bỏ, tương tự như hạn chế đối với Prop. Hạn chế chỉ áp dụng cho các loại quy nạp lớn, trong đó một số hàm tạo định lượng trên một loại Loại. Trong các trường hợp như vậy, một giá trị trong loại quy nạp này chỉ có thể được khớp với mẫu để mang lại loại kết quả có loại là Set hoặc Prop. Quy tắc này trái ngược với quy tắc cho Prop, trong đó hạn chế áp dụng ngay cả với các loại quy nạp không lớn, và trong đó loại kết quả chỉ có thể có loại Prop. Trong các phiên bản cũ của Coq, Set được đặt theo mặc định. Các phiên bản sau này đặt Set dự đoán để tránh sự không nhất quán với một số tiên đề cổ điển. Đặc biệt, người ta nên coi chừng khi sử dụng Set bắt buộc với các tiên đề lựa chọn. Kết hợp với tính mở rộng giữa hoặc vị ngữ loại trừ, sự không nhất quán có thể dẫn đến. Imprimateative Set có thể hữu ích cho việc mô hình hóa các khái niệm toán học vốn có, nhưng hầu như tất cả các phát triển Coq đều ổn nếu không có nó.


Từ âm thanh của bản sửa lỗi tôi tìm thấy ở trên, có vẻ như Agda đơn giản là không kiểm tra tính tích cực của các chỉ số cho kết quả của hàm tạo. Điều đó không thực sự cho biết liệu loại đề xuất của tôi trong đơn điệu, nhưng cho thấy nó không liên quan đến sự thiếu sót.
Colin Gordon

2
Và vâng, -imprativeative-set khiến Set trở nên hấp dẫn trong Coq.
Colin Gordon
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.