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:
- Đâ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)
- 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ể?
- 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.
Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.