Trong các ngôn ngữ như Agda
, Idris
, hoặc Haskell
với phần mở rộng loại hình, có một =
loại loại giống như các`Điều` phản ánh trong Calculus of Constructions?
data a :~: b where
Refl :: a :~: a
a :~: b
nghĩa là a
và b
đều giống nhau.
Loại như vậy có thể được xác định trong calculus of constructions hoặc Morte (ngôn ngữ lập trình dựa trên tính toán xây dựng) không?
Mọi loại quy nạp có thể được mã hóa trong CoC, nhưng không có nguyên tắc loại trừ _dependent_ (loại trừ không phụ thuộc). (Cũng lưu ý rằng 'a: ~: b' là một kiểu, nhưng' Refl' là một giá trị.) – chi
Tính toán của các công trình là "đỉnh" của khối lambda. Haskell, Agda và Idris là "dưới đây" CoC. Do đó, nó phải là có thể cho thực tế đơn giản là CoC là biểu cảm hơn. (Ai đó có thể chỉ ra nếu tôi sai trong khoản khấu trừ này?) – Bakuriu
@ Bakuriu Trên thực tế, Agda/Coq vượt quá CoC vì chúng cũng cho phép loại quy nạp với loại bỏ phụ thuộc, mà CoC thiếu. Agda cũng chứng minh tiên đề của Streicher K, ngụ ý rằng hai bằng chứng 'p, q' của cùng một đẳng thức' a = b' phải bằng nhau ('p = q') - không có trong CoC hoặc Coq (hay còn gọi là CiC). – chi