Gần đây tôi đã cố gắng thực hiện Cedille-Core của Aaron , một ngôn ngữ lập trình tối giản có khả năng chứng minh các định lý toán học về các thuật ngữ của riêng nó. Tôi cũng đã chứng minh cảm ứng cho các kiểu dữ liệu được mã hóa on trên nó, điều này cho thấy rõ hơn tại sao các phần mở rộng của anh ta lại cần thiết.
Ít hơn, tôi vẫn không biết những phần mở rộng đó đến từ đâu. Tại sao họ là những gì họ đang có? Điều gì biện minh cho họ? Tôi biết, ví dụ, một số phần mở rộng, chẳng hạn như đệ quy, hủy hoại ngôn ngữ như một hệ thống để chứng minh. Nếu tôi quyết định mở rộng CoC với các nguyên thủy khác, tôi sẽ biện minh như thế nào? Tôi hiểu một bằng chứng bình thường hóa là cần thiết, nhưng điều đó không chứng minh những nguyên thủy đó "có ý nghĩa".
Nói tóm lại, những gì cụ thể đủ điều kiện một ngôn ngữ (và hệ thống loại của nó) là một hệ thống có khả năng chứng minh các định lý về các thuật ngữ riêng của nó?