17

Tôi nhận thấy cuộc thảo luận về "Axiom K" xuất hiện thường xuyên hơn từ HoTT. Tôi tin rằng nó có liên quan đến kết hợp mẫu. Tôi ngạc nhiên rằng tôi không thể tìm thấy một tài liệu tham khảo trong TAPL, ATTAPL hoặc PFPL.Axiom K là gì?

  • Axiom K là gì?
  • Được sử dụng để đối sánh mẫu kiểu ML như trong SML (hoặc chỉ phù hợp với mẫu phụ thuộc)?
  • Tham chiếu thích hợp cho Axiom K là gì?
+0

Kết hợp mẫu phụ thuộc thông thường yêu cầu K, nhưng Agda cũng cho phép bạn thực hiện nó mà không cần K, do đó, không phù hợp với mẫu phụ thuộc cũng như tiên đề K ngụ ý đối tượng kia. Axiom K về cơ bản nói rằng 2 bằng chứng của cùng một thuật ngữ là bằng nhau, loại bỏ cấu trúc groupoid cao hơn. –

+0

@ 盛安安 tôi đã bắt đầu hỏi (ở điểm đạn thứ hai), "Có cần thiết" không và tại sao tôi đổi nó thành "Có phải nó được sử dụng" không. Vì vậy, có vẻ như nó thường được sử dụng nhưng bạn có thể tránh nó (với Agda ít nhất). –

+1

@ 盛安安 "loại bỏ cấu trúc nhóm loại cao hơn" - điều này chỉ áp dụng khi nhìn vào các loại thông qua thấu kính của HoTT (hoặc các TT khác có cấu trúc nhóm cao hơn hoặc tôi không có ý nghĩa)? –

Trả lời

18

Axiom K còn được gọi là nguyên tắc độc đáo của bản sắc chứng minh, và nó là một câu châm ngôn về bản chất của các loại sắc về mặt lý thuyết loại phụ thuộc Martin-LOF của. Loại này không tồn tại (và trên thực tế không thể được định nghĩa) trong các lý thuyết kiểu đơn giản hơn như System F, vì vậy đó có lẽ là lý do tại sao bạn chưa gặp nó trong các sách bạn đề cập.

Các loại sắc được viết như Id(A,x,y) hoặc cũng x = y và mã hóa các tài sản mà xy đều bình đẳng (dưới Curry-Howard correspondence). Có một cách cơ bản để cung cấp bằng chứng về loại danh tính và đó là refl : Id(A,x,x), tức là bằng chứng rằng x bằng với chính nó.

Khi điều tra loại nhận dạng trong số thesis, Thomas Streicher đã giới thiệu loại bỏ mới cho loại nhận dạng mà ông gọi là K (là chữ cái tiếp theo trong bảng chữ cái sau chữ J, tiêu chuẩn loại bỏ). Nó nói rằng bất kỳ bằng chứng nào p về sự bình đẳng của biểu mẫu x = x là chính nó bằng chứng minh tầm thường refl. Từ đó, sau hai chứng minh pq của bất kỳ phương thức nào là x = y đều bằng nhau, do đó thay thế "tính duy nhất của chứng minh danh tính". Điều đáng chú ý là ông đã chứng minh rằng điều này không không tuân theo các quy tắc tiêu chuẩn của lý thuyết loại. Tôi khuyên bạn nên đọc article on the homotopy type theory blog của Dan Licata nếu bạn muốn hiểu tại sao không, ông giải thích nó tốt hơn nhiều so với tôi có thể.

Để trả lời phần thứ hai của câu hỏi: Kết hợp mẫu kiểu ML không liên quan đến K, vì ML không có loại nhận dạng và do đó không thể xây dựng tiên đề K. Mặt khác, K được yêu cầu cho phù hợp với mẫu phụ thuộc như được giới thiệu bởi Thierry Coquand trong "Mẫu phù hợp với các kiểu phụ thuộc (1992)". Lý do cho điều này là rằng nó là rất dễ dàng để chứng minh K bằng mô hình kết hợp trên constructor refl loại sắc:

K : (p : x = x) -> p = refl 
K refl = refl 

Trong thực tế, Conor McBride thể hiện trong luận án của mình ("lệ thuộc gõ chương trình chức năng và chứng minh của họ (2000) ") rằng K là chỉ điều phù hợp với mô hình phụ thuộc thực sự bổ sung vào lý thuyết loại phụ thuộc.

Sở thích của riêng tôi trong chủ đề này là để hiểu chính xác lý do khớp mẫu phụ thuộc yêu cầu K và cách nó có thể bị hạn chế để không còn nữa. Kết quả là một paper và một triển khai mới của tùy chọn --without-K trong Agda. Ý tưởng cơ bản là thuật toán hợp nhất được sử dụng để phân tích trường hợp trong khớp mẫu phụ thuộc không nên xóa phương trình của biểu mẫu x = x, bởi vì làm như vậy yêu cầu K. Tôi khuyên bạn nên đọc (giới thiệu) giấy nếu bạn muốn biết thêm.

+2

Nếu 'Id {A: Đặt a}: a -> a -> Đặt _' được định nghĩa theo thuật ngữ của hàm tạo duy nhất' refl: forall {x: A}. Id x x', thì vấn đề gì về việc khớp một giá trị kiểu 'Id x x' với' refl'? – Cactus

+3

Lý do là Id không phải là họ của các kiểu dữ liệu được xác định tự cảm, mà là một họ kiểu dữ liệu được định nghĩa tự cảm. Điều này có nghĩa là bạn có thể về nguyên tắc chỉ khớp với một giá trị 'Id x y' nếu' x' và 'y' là các biến riêng biệt. Điều này sẽ khá khó chịu vì vậy Agda sử dụng sự hợp nhất để cho phép kết hợp trên 'refl' trong nhiều tình huống hơn: nó hợp nhất các chỉ số' x; x' của kiểu dữ liệu với các chỉ số 'x ', x'' của hàm tạo. Sau một bước, kết quả là 'x = x', nhưng đây chính xác là nơi chúng ta cần K một lần nữa để loại bỏ phương trình này (đọc bài báo của tôi cho phiên bản dài hơn). – Jesper

Các vấn đề liên quan