Nhận xét là về một cách sử dụng cụ thể của Coq, cụ thể là chính thức hóa lý thuyết ngôn ngữ lập trình.
Trước tiên chúng ta hãy làm rõ sự khác biệt giữa tổng hợp và phân tích :
Trong một cách tiếp cận tổng hợp cho một chủ đề, chúng tôi nói rằng có những thứ mà các thuộc tính và cấu trúc cơ bản của nó được quy định theo cách này hay cách khác. Sau đó chúng tôi nghiên cứu những điều này bằng cách chỉ dựa vào các thuộc tính và cấu trúc được quy định.
Trong một cách tiếp cận phân tích đến một chủ đề, chúng tôi phát hiện ra rằng có những điều nhất định. Để tìm hiểu thêm về chúng, chúng tôi tách chúng ra, chúng tôi nghiên cứu cách chúng được tạo ra và chúng tôi phân tích chúng. Bằng cách này chúng ta khám phá các thuộc tính và cấu trúc của chúng.
Làm thế nào một người sẽ học một ngôn ngữ lập trình theo hai cách này?
Về mặt tổng hợp, chúng tôi sẽ quy định các bộ phận cấu thành của ngôn ngữ (có các thuật ngữ, có các loại), cấu trúc cơ bản của chúng (đây là các cách xây dựng thuật ngữ) và các thuộc tính cơ bản. Chúng tôi không hỏi các điều khoản và loại được làm từ gì, hoặc liệu các điều khoản là cây hoặc chuỗi, hoặc liệu bộ sưu tập các loại được xây dựng theo một cách cụ thể.
Về mặt phân tích, chúng tôi sẽ bắt đầu với một thiết lập toán học cho phép chúng tôi thực hiện nhiều việc, chẳng hạn như sử dụng các định nghĩa quy nạp để xây dựng các đối tượng toán học. Chúng tôi sẽ xây dựng các thuật ngữ và loại như các bộ hoặc loại được xác định theo quy nạp cụ thể. Sau đó, chúng tôi sẽ nghiên cứu cấu trúc của chúng, làm thế nào chúng ta có thể biến đổi chúng, v.v.
Cần phải rõ ràng rằng Coq thuộc loại phân tích. Khi bạn triển khai ngôn ngữ lập trình trong Coq, bạn xác định các loại thuật ngữ và loại quy nạp. Sau đó, bạn phân tích chúng bằng cách sử dụng quy nạp, xác định ngữ nghĩa hoạt động như một hàm đệ quy theo cú pháp của thuật ngữ, v.v.
Mặt khác, Twelf thuộc loại tổng hợp. Chúng tôi yêu cầu rằng có một loại thuật ngữ và một loại loại, nhưng chúng tôi không nói với Twelf rằng đây là những loại quy nạp (không có cách nào để nói điều đó trong Twelf). Chúng tôi xác định ngữ nghĩa hoạt động bằng cách cung cấp các quy tắc chuyển đổi cơ bản. Không có đề cập đến các hàm được định nghĩa đệ quy (không có cách nào để xác định các hàm trong Twelf), chúng tôi chỉ dựa vào các định đề mà chúng tôi đã viết ra.
Bạn nên so sánh tình huống trên với hình học phẳng. Cách tiếp cận hình học của Hilbert là tổng hợp (nhưng ý tưởng của ông bắt nguồn từ Euclid), Descartes 'mang tính phân tích. Hình học giải tích được gọi như vậy bởi vì một dòng không phải là một khái niệm nguyên thủy: nó có cấu trúc bên trong, cụ thể là một tập hợp các điểm.