Matematika itu berhantu
(overreacted.io)- Lean adalah bahasa pemrograman yang dirancang untuk memformalkan matematika, sehingga memungkinkan matematikawan memperlakukan teorema matematika seperti kode
- Pengguna menulis teorema, bukti, aksioma dalam bentuk kode, dan proses pembuktian dilakukan melalui kumpulan perintah bernama tactic
- Meskipun bukti belum benar-benar diselesaikan, kita dapat menutupnya sementara dengan
sorry; ini adalah bukti semu yang mirip dengananydi TypeScript - Jika menambahkan aksioma yang salah (misalnya
2 = 3), maka muncul risiko kontradiksi logis dan kemungkinan membuktikan setiap klaim - Karena Lean hanya menghasilkan kesimpulan atas dasar aksioma yang dipilih dan sistem pembuktian yang logis, menjaga validitas matematika menjadi sangat penting
Lean: Matematika seperti kode
- Lean adalah bahasa pemrograman yang dibuat khusus untuk menulis matematika yang terformal
- Melalui Lean, para matematikawan dapat mengekspresikan matematika dalam bentuk kode dan mengatur teorema serta bukti mereka agar dapat berkolaborasi dan berbagi
- Ini menggambarkan masa depan di mana pengetahuan matematika manusia dalam jumlah besar akan bisa diverifikasi dan dikomposisi secara mekanis dalam bentuk kode
Langkah pertama dalam membuktikan dengan Lean
- Bentuk
theorem two_eq_two : 2 = 2 := by sorrymemungkinkan deklarasi teorema sederhana di Lean - Saat bukti belum selesai,
sorrydapat dimasukkan, tetapi ini hanya solusi sementara, bukan bukti yang sebenarnyasorrylolos pemeriksaan verifikasi bukti Lean, namun tidak dapat dipercaya secara logis
- Untuk bukti yang lengkap, digunakan tactic seperti
rfl(reflexivity) untuk membuktikan persamaan yang jelas seperti2 = 2 - Bagian yang sudah terbukti dapat digunakan kembali di teorema lain menggunakan
exact, sehingga menekankan modularitas
Aksioma dan kontradiksi: ketika matematika dianggap berhantu
- Jika menambahkan aksioma seperti
axiom math_is_haunted : 2 = 3, Lean akan menganggapnya benar - Aksioma ini dapat dipakai dalam proses pembuktian berikutnya, hingga memungkinkan pembuktian simpulan yang tidak masuk akal secara matematika, misalnya
2 + 2 = 6 - Dengan tactic
rewrite,2bisa diganti menjadi3dan proses pembuktian persamaan dapat diselesaikan denganrfl - Bila kontradiksi dipicu oleh aksioma yang tidak tepat, di Lean juga terjadi keadaan setiap proposisi dapat dibuktikan (keruntuhan logis)
- Pada awal abad ke-20, kontradiksi dalam sistem aksioma seperti Paradoks Russell memicu refleksi mendasar dalam matematika
- Dengan demikian, Lean menunjukkan bahwa pemilihan aksioma sangat menentukan dalam menjaga kewajaran sistem logika
Lean sebagai proof checker
- Jika aksioma dipilih dengan tepat dan Lean secara logis benar, maka akan menghasilkan kesimpulan dengan keandalan teoritis
- Dari persamaan sederhana hingga teorema yang sangat kompleks (misalnya Fermat's Last Theorem), semuanya diverifikasi dengan prinsip yang sama
- Teorema besar dibangun sebagai akumulasi bukti berulang dari teorema dan substruktur, sehingga keseluruhan strukturnya terbentuk secara bertingkat
- Sebagai contoh, proyek skala besar untuk memformalkan Fermat's Last Theorem di Lean sedang berjalan, dan akhirnya diharapkan terselesaikan sistem bukti formal tanpa
sorry
Kenikmatan mempelajari Lean
- Pembuktian dengan Lean adalah perpaduan kreatif antara pemrograman dan matematika
- Mulai dari cara membuktikan proposisi sederhana, hingga bertahap membangun matematika yang lebih kompleks dan mendalam secara ketat, itulah kenikmatan utamanya
- Materi tutorial resmi dan komunitas (seperti Natural Numbers Game, Mathematics in Lean, dan lainnya) sangat cocok untuk pemula
- Dengan Lean, Anda memformalkan logika secara langsung dan bisa menemukan kembali keindahan ide serta argumen yang cerdik
- Pada akhirnya, artikel menyimpulkan bahwa tanpa alasan apa pun, bagi jenis orang tertentu, Lean menghadirkan kesenangan yang khas
1 komentar
Komentar Hacker News
rfldan semacamnya) terlalu menyeluruh, dan bahkan lewat tutorial pun sulit memahami makna tepatnya; misalnya dalam C kita bisa menelusuri perubahan state sampai level bit, tetapi Lean terasa agak kabur; dan sintaks tactic rewrite (rw) juga terasa tidak alamirewritetidak jalan karena alasan yang sulit dijelaskan (mungkin masalah definisi struktur perantara); sebaliknya, Metamath dan database set.mm membuat kita membuktikan sepenuhnya dengan penalaran konkret tanpa tactic sama sekali (hanya memakai aturan inferensi sepertiax-mp), tetapi itu pun tidak mudah karena Anda harus menghafal banyak utility lemma yang layak pakairflataurewrite; mungkin Lean punya semacam prelude yang mengotomatiskan inirw [x]sehingga sangat sulit dibaca; memang editor bisa menunjukkan state tiap baris, tetapi harus terus klik dan itu merusak alur; kalau Python juga tanpa indentasi dan kita harus klik hanya untuk memahami struktur bloknya, rasanya akan sama; mungkin sudut pandang saya dipengaruhi keterbatasan perintah di awal game, tetapi saya penasaran apakah dalam lingkungan Lean penuh, alur ini terasa lebih baikintroberarti masuk ke quantifier,constructorberarti membagi goal, dan seterusnya; pada akhirnya tactics adalah makro/DSL yang membentuk pohon bukti (term tree), dan ketika saya melihat kode bukti rasanya seperti manipulasi pohon (memecah bagian, mengisi urutan, dan sebagainya); meski begitu, kebutuhan untuk klik tetap ada jika kita ingin tahu assertion tepatnya di tengah kode bukti; bukti yang idenya bagus bisa dibaca dengan jelas seperti alur logika dalam makalah, jadi orang yang ingin menyampaikan niatnya biasanya akan menulis nama yang mudah dibaca, alur yang jelas, mengekstrak lemma kecil, lalu menaruh hipotesis lebih dulu dan menyelesaikannya dengan kode bukti yang singkat; sebaliknya, bagian yang secara mekanis merepotkan tetapi jelas bagi matematikawan sering diperlakukan dengan “golfing” (menulis sesingkat mungkin); gaya golf sering memendekkan kode tetapi hanya menyentuh bagian yang sudah intuitif bagi manusia; singkatnya, struktur pembacaan di Lean memang implisit, tetapi ada cara untuk membuatnya lebih jelas, dan semakin mahir dengan tactic, semakin mudah memahami struktur tanpa klik; bahkan hanya dengan memindai nama lemma, Anda bisa menangkap alur besarnya, dan urutannya mudah direkonstruksiKomunitas Lean banyak berkumpul di Zulip, dan Anda bisa melihat berbagai thread referensi di channel Machine-Learning-for-Theorem-Proving
sorryyang masih kosong di latihan-latihannya sendiri (jawaban saya ada di sini)sorry) atau penambahan aksioma ekstra, misalnya untuk memeriksa bahwa “proof sama sekali tidak memakaisorrydengan cara apa pun” dan “hanya bergantung pada kekuatan pembuktian dari himpunan aksioma yang tetap”#print axioms some_theoremyang disebut di bagian akhir artikel mungkin contoh yang relevan; dengan itu kita bisa tahu apakah bukti tersebut secara langsung atau tidak langsung bergantung padasorryatau aksioma yang belum ditinjauprint axioms, dan juga melihat apakah kompilasi berjalan tanpa warning atau error; utilitas SafeVerify juga menangkap beberapa trik yang ditemukan sistem RL