Bagaimana cara 'taktik' bekerja di asisten bukti?
Saya menduga jawaban ini akan sedikit mengoceh.
Pertama, tidak cukup untuk bertanya "bagaimana taktik bekerja dalam asisten bukti" karena mereka bekerja secara berbeda dalam asisten bukti yang berbeda. Ada dua kelas asisten utama yang digunakan saat ini: yang berasal dari LCF asli, seperti cahaya Isabelle, HOL dan HOL, dan asisten bukti berbasis teori tipe seperti Coq dan Matita. Dalam dua kelas asisten pembuktian yang berbeda, taktik ini bekerja dengan cara yang berbeda, suatu cerminan bahwa apa yang terjadi di bawah kap mesin misalnya Isabelle sangat berbeda dengan apa yang terjadi di bawah kap mesin misalnya Matita.
Tanyakan kepada diri Anda: apa yang terjadi ketika kami mencoba membuktikan proposisi P di Matita? Kami memperkenalkan X metavariable dengan tipe P. Kami kemudian memainkan permainan, jadi untuk berbicara, di mana kami memperbaiki X, menambahkan lebih banyak dan lebih banyak struktur ke istilah yang tidak lengkap, sampai kami mendapatkan istilah lambda lengkap (yaitu tidak mengandung lagi metavariabel). Setelah kami memiliki istilah lambda yang lengkap, kami mengetikkan periksa sehubungan dengan P, memastikan itu menghuni jenis yang diperlukan. Kita kemudian melihat bahwa dalam Coq dan Matita, sebuah taktik hanyalah fungsi dari istilah bukti yang tidak lengkap hingga istilah bukti yang tidak lengkap, yang diharapkan menambah sedikit struktur pada istilah setelah aplikasi (pengamatan ini telah memotivasi cukup banyak karya terbaru oleh misalnya Jojgov , Pientka, dan lainnya).
Misalnya, taktik "intro" Matita memperkenalkan abstraksi lambda atas istilah yang ada, "kasus" memperkenalkan ekspresi kecocokan dalam istilah tersebut, dan "menerapkan" memperkenalkan aplikasi dari satu istilah ke istilah lainnya. Taktik dasar ini dapat dirangkai menjadi satu, menggunakan fungsi tingkat tinggi, untuk membuat yang lebih kompleks. Gagasan dasarnya selalu sama: taktik selalu bertujuan untuk menambahkan sedikit struktur ke istilah bukti yang tidak lengkap.
Perhatikan bahwa, pelaksana bertujuan untuk memberikan kembali istilah yang mengetikan lagi setelah setiap aplikasi taktik. Sebenarnya, tidak ada persyaratan bagi mereka untuk melakukannya, karena semua yang penting untuk asisten bukti berdasarkan teori tipe adalah bahwa, ketika pengguna datang ke Qed bukti, kita memiliki istilah bukti yang menghuni proposisi P. Bagaimana kita sampai pada istilah bukti ini sebagian besar tidak relevan. Namun, baik Coq dan Matita bertujuan untuk memberikan pengguna kembali istilah bukti (mungkin tidak lengkap) yang diketik setelah setiap aplikasi taktik. Namun invarian ini dapat (dan seringkali memang) gagal, terutama sehubungan dengan dua pemeriksaan sintaksis yang harus dilaksanakan oleh asisten bukti berbasis CIC.
Secara khusus, kita dapat melakukan apa yang tampak sebagai bukti yang valid, menerapkan serangkaian taktik hingga tidak ada tujuan terbuka yang tersisa. Kami kemudian datang ke Qed bukti yang seharusnya, hanya untuk menemukan bahwa pemeriksa penghentian Matita, atau pemeriksa positivitasnya yang ketat, mengeluh, karena istilah pembuktian yang dihasilkan oleh taktik telah membatalkan salah satu dari pemeriksaan sintaksis ini (yaitu metavariabel dalam posisi argumen untuk panggilan rekursif dipakai dengan istilah yang secara sintaksis tidak lebih kecil dari argumen aslinya). Ini adalah refleksi bahwa teori jenis CIC, dalam beberapa hal, tidak "cukup kuat", dan tidak mencerminkan persyaratan sintaksis positif atau ukuran dalam jenisnya (pengamatan yang memotivasi tipe ukuran Habel, dan beberapa karya terbaru tentang jenis positif) ).
Di sisi lain, asisten bukti gaya LCF sangat berbeda. Di sini, kernel terdiri dari modul (biasanya diimplementasikan dalam varian ML), berisi tipe abstrak "thm", dan fungsi yang mengimplementasikan aturan inferensi logika asisten pembuktian, memetakan "thm" ke "thm", dan seterusnya sebagainya Kami mengandalkan disiplin pengetikan ML untuk memastikan bahwa satu-satunya cara membangun nilai tipe "thm" adalah melalui aturan inferensi ini (taktik dasar). Kernel Isabelle ada di sini .
Bukti kemudian terdiri dari serangkaian penerapan taktik dasar ini (atau lebih rumit, taktik yang lebih besar, yang sekali lagi dibuat dengan merangkai taktik yang lebih sederhana menggunakan fungsi tingkat tinggi --- di Isabelle, fungsi tingkat tinggi, yang disebut taktis, dapat terlihat di sini ). Tidak seperti asisten bukti berdasarkan teori tipe, tidak ada kebutuhan dalam asisten gaya LCF untuk menjaga saksi istilah bukti eksplisit berbaring di sekitar. Kebenaran bukti dijamin oleh konstruksi, dan kepercayaan kami pada disiplin pengetikan ML (banyak asisten, misalnya Isabelle, melakukan, bagaimanapun, menghasilkan istilah bukti untuk bukti mereka).