HeadlinesBriefing favicon HeadlinesBriefing.com

Apa yang TLA+ bisa dan tidak bisa periksa

Hacker News •
×

Minggu lalu, Boris Cherny, penemu Claude Code, menyebutkan bahwa Opus mampu menggunakan TLA+ untuk menemukan race condition dalam kode. Sekarang semua orang berbicara tentang verifikasi formal. Sebagai pendidik lama dan pendukung TLA+, ini menarik. Tapi euforia baru ini membuat saya khawatir. Metode formal tidak akan menyelesaikan pengembangan perangkat lunak agen untuk selamanya.

Desain yang benar tidak secara otomatis diterjemahkan menjadi kode yang benar. Untuk memverifikasi properti, kita memerlukan properti untuk diverifikasi. TLA+ membagi sistem menjadi perilaku, masing-masing merupakan urutan keadaan. Di setiap keadaan kita dapat mengekspresikan ekspresi boolean dengan tiga operator temporal: `[]P` (selalu P), `P'` (P di keadaan berikutnya), dan `<>P` (akhirnya P).

`[]P` berarti P benar di setiap keadaan dari setiap perilaku, disebut invariant. `[](x' >= x)` adalah properti aksi. Ini adalah properti keamanan: sesuatu yang buruk tidak pernah terjadi. Properti kelincahan menggunakan `<>`: `[]<>P` berarti P benar di setidaknya satu keadaan masa depan dari setiap keadaan; `<>[]P` berarti P menjadi benar dan tetap benar selamanya; `[](P => <>Q)` berarti P akhirnya menyebabkan Q.