Làm thế nào để 'chiến thuật' làm việc trong các trợ lý bằng chứng?
Tôi nghi ngờ câu trả lời này sẽ là một chút lan man.
Đầu tiên, không đủ để hỏi "chiến thuật hoạt động như thế nào trong trợ lý chứng minh" bởi vì chúng hoạt động khác nhau trong các trợ lý chứng minh khác nhau. Có hai loại trợ lý chính được sử dụng ngày nay: những người có nguồn gốc từ LCF ban đầu, như ánh sáng của Isabelle, HOL và HOL, và các trợ lý chứng minh dựa trên lý thuyết loại như Coq và Matita. Trong hai lớp trợ lý chứng minh khác nhau này, các chiến thuật hoạt động theo những cách khác nhau, một sự phản ánh rằng những gì đang diễn ra dưới nắp ca-pô, ví dụ như Isabelle hoàn toàn khác với những gì đang diễn ra dưới nắp ca-pô, ví dụ như Matita.
Hãy tự hỏi: điều gì đang xảy ra khi chúng ta cố gắng chứng minh một mệnh đề P trong Matita? Chúng tôi giới thiệu một biến thể X với loại P. Sau đó chúng tôi chơi một trò chơi, có thể nói, trong đó chúng tôi tinh chỉnh X, thêm ngày càng nhiều cấu trúc vào thuật ngữ không hoàn chỉnh, cho đến khi chúng tôi có được một thuật ngữ lambda hoàn chỉnh (nghĩa là không chứa nhiều biến thái nữa). Khi chúng tôi sở hữu một thuật ngữ lambda hoàn chỉnh, chúng tôi gõ kiểm tra nó liên quan đến P, đảm bảo nó có loại yêu cầu. Sau đó chúng ta thấy rằng trong Coq và Matita, một chiến thuật chỉ là một chức năng từ các điều khoản chứng minh không đầy đủ đến các điều khoản chứng minh không đầy đủ, hy vọng sẽ thêm một chút cấu trúc cho thuật ngữ sau khi áp dụng (quan sát này đã thúc đẩy khá nhiều công việc gần đây của Jojgov , Pientka, và những người khác).
Ví dụ: "giới thiệu" chiến thuật Matita giới thiệu một sự trừu tượng hóa lambda đối với thuật ngữ hiện có, "trường hợp" giới thiệu một biểu thức khớp trong thuật ngữ và "áp dụng" giới thiệu một ứng dụng của một thuật ngữ khác. Các chiến thuật cơ bản này có thể được xâu chuỗi lại với nhau, sử dụng các hàm bậc cao hơn, để tạo ra các chiến thuật phức tạp hơn. Ý tưởng cơ bản luôn giống nhau mặc dù: một chiến thuật luôn hướng đến việc thêm một chút cấu trúc vào một thuật ngữ chứng minh không đầy đủ.
Lưu ý rằng, những người triển khai nhằm mục đích trả lại một thuật ngữ đánh máy lại sau mỗi ứng dụng chiến thuật. Nói một cách chính xác, không có yêu cầu nào để họ làm như vậy, vì tất cả những gì quan trọng đối với các trợ lý chứng minh dựa trên lý thuyết loại là, khi người dùng đến với Qed bằng chứng, chúng tôi có một thuật ngữ chứng minh có liên quan đến mệnh đề P. đến thời hạn bằng chứng này phần lớn không liên quan. Tuy nhiên, cả Coq và Matita đều nhằm mục đích cung cấp cho người dùng một thuật ngữ bằng chứng (có thể không đầy đủ) đánh máy sau mỗi ứng dụng chiến thuật. Tuy nhiên, bất biến này có thể (và thường không) thất bại, đặc biệt là liên quan đến hai kiểm tra cú pháp mà các trợ lý chứng minh dựa trên CIC phải thực hiện.
Cụ thể, chúng tôi có thể thực hiện những gì dường như là một bằng chứng hợp lệ, áp dụng một loạt các chiến thuật cho đến khi không còn mục tiêu mở nào. Sau đó, chúng tôi đến với Qed bằng chứng được cho là, chỉ để phát hiện ra rằng trình kiểm tra chấm dứt của Matita, hoặc trình kiểm tra tính tích cực nghiêm ngặt của nó, phàn nàn, vì thuật ngữ bằng chứng được tạo ra bởi các chiến thuật đã vô hiệu hóa một trong những kiểm tra cú pháp này (nghĩa là có thể thay đổi được ở vị trí đối số một cuộc gọi đệ quy đã được khởi tạo với một thuật ngữ không nhỏ hơn về mặt cú pháp so với đối số ban đầu). Đây là một sự phản ánh rằng lý thuyết loại CIC, theo một cách nào đó, không "đủ mạnh" và không phản ánh các yêu cầu cú pháp tích cực hoặc kích thước trong các loại của nó (một quan sát thúc đẩy các loại kích thước của Abel và một số công việc gần đây về các loại tích cực ).
Mặt khác, các trợ lý chứng minh theo phong cách LCF khá khác biệt. Ở đây, kernel bao gồm một mô-đun (thường được triển khai trong một biến thể của ML), chứa một loại trừu tượng "thm" và các hàm thực hiện các quy tắc suy luận của logic trợ lý chứng minh, ánh xạ "thm" thành "thm", và vì vậy ra Chúng tôi dựa vào kỷ luật đánh máy của ML để đảm bảo rằng cách duy nhất để xây dựng giá trị của loại "thm" là thông qua các quy tắc suy luận này (chiến thuật cơ bản). Hạt nhân của Isabelle ở đây .
Bằng chứng sau đó bao gồm một loạt các ứng dụng của các chiến thuật cơ bản này (hoặc phức tạp hơn, chiến thuật lớn hơn, một lần nữa được thực hiện bằng cách kết hợp các chiến thuật đơn giản hơn bằng cách sử dụng các hàm bậc cao hơn --- trong Isabelle, các hàm bậc cao hơn, được gọi là chiến thuật, có thể được nhìn thấy ở đây ). Không giống như các trợ lý chứng minh dựa trên lý thuyết loại, không cần một trợ lý kiểu LCF để giữ một nhân chứng bằng chứng rõ ràng nằm xung quanh. Tính chính xác của bằng chứng được đảm bảo bằng cách xây dựng và sự tin tưởng của chúng tôi vào kỷ luật đánh máy của ML (tuy nhiên, nhiều trợ lý, ví dụ như Isabelle, làm, tạo ra các điều khoản bằng chứng cho bằng chứng của họ).