Saya ingin memberikan bukti untuk bagian dari program Haskell yang saya tulis sebagai bagian dari tesis saya. Namun sejauh ini, saya gagal menemukan referensi yang bagus.
Buku pengantar Graham Hutton, Programming in Haskell ( Google Books ) —yang saya baca sambil mempelajari Haskell — menyentuh beberapa teknik untuk alasan tentang program seperti
- penalaran yang sama
- menggunakan pola yang tidak tumpang tindih
- daftar induksi
dalam bab 13 tetapi tidak terlalu mendalam.
Adakah buku atau artikel yang bisa Anda rekomendasikan yang memberikan gambaran yang lebih rinci tentang teknik pembuktian formal untuk Haskell, atau kode fungsional lainnya?
Anda bisa mulai dengan
Anda dapat melewati (atau membaca sekilas) bagian-bagian teori bahasa pemrograman dan hanya belajar bagaimana menangani bukti formal mulai dari Kata Pengantar hingga IndPrinciples. Buku ini ditulis dengan sangat baik dan mencerahkan.
Maka Anda mungkin ingin melanjutkan
Catatan peringatan: VFA masih dalam rilis beta!
sumber
Theorem app_assoc : ∀ l1 l2 l3 : natlist, (l1 ++ l2) ++ l3 = l1 ++ (l2 ++ l3)
dari bab Daftar . Apakah contoh ini terlihat seperti hal yang Anda minati? Mereka mulai dengan pemrograman fungsional dalam Coq, tetapi kemudian beralih ke penalaran tentang sifat-sifat program fungsional. Bab-bab dari Pendahuluan hingga IndPrinciples membahas keduanya, dan saya akan mengatakan pemrograman dan penalaran terjalin di sana.Ternyata sumber yang sangat baik dari teknik bukti dan contoh untuk membuktikan hal-hal tentang bahasa fungsional murni adalah asisten bukti yang biasanya termasuk sebagai bagian dari bahasa spesifikasi mereka bahasa fungsional murni di mana dimungkinkan untuk bernalar secara adil.
Seseorang mungkin ingin membaca buku seperti Programing Bersertifikat dengan Tipe Ketergantungan untuk pengantar mendalam tentang jenis penalaran ini dalam asisten bukti spesifik, yaitu Coq.
sumber
Saya menyarankan untuk menggunakan logika program. Mereka menangani efek dengan jauh lebih baik daripada sistem mengetik.
Ada banyak logika program untuk bahasa fungsional. Ini menjadi menarik dengan efek. Lihat misalnya Penalaran Logis untuk Fungsi Tingkat Tinggi dengan Negara Bagian .
Pekerjaan oleh Arthur Charguéraud mengintegrasikan pendekatan logika program dengan asisten bukti, lihat misalnya halaman ikhtisar ini .
sumber