- Catala adalah bahasa spesifik domain untuk menurunkan algoritme faithful-by-construction dari teks legislasi, dan merupakan bahasa pemrograman yang disesuaikan untuk literate programming pada legislasi sosial dan fiskal
- Implementasi ditulis dengan terlebih dahulu mengumpulkan materi tentang mekanisme sosial dan fiskal yang menjadi target implementasi, seperti undang-undang, peraturan pelaksana, dan preseden hukum, lalu memberi anotasi pada makna setiap baris di tiap pasal sebagai komentar dalam kode
- Kompiler Catala dapat menghasilkan versi PDF implementasi yang dapat dibaca pengacara dari kode yang sudah selesai dan diuji, dan bahasa ini dirancang melalui kolaborasi dengan pakar hukum agar dapat ditinjau serta disertifikasi keakuratannya oleh ahli hukum
- Konsep intinya didasarkan pada definition-under-conditions dan default logic dari karya Profesor Sarah Lawsky, A Logic for Statutes, dengan struktur logika bahasa yang meniru struktur logika hukum
- Sebagai alat pengembangan, tersedia penyorotan sintaks untuk berbagai editor teks, ekstensi VSCode, server LSP khusus, navigasi kode, pelengkapan otomatis, UX test suite, dan formatter
catala-format - Pembelajaran dan referensi dapat diakses melalui Catala book, tutorial Catala, cheat sheet tata bahasa Prancis dan Inggris, serta dokumentasi kompiler untuk versi
masterterbaru - Kompiler dan kode dalam repositori didistribusikan di bawah Apache license version 2, kecuali jika ada lisensi terpisah yang dinyatakan pada subdirektori tertentu
- Catala adalah proyek riset dari Inria, dan kompiler ini masih belum stabil serta masih kekurangan beberapa fitur
1 komentar
Komentar Hacker News
Proyek ini tampaknya secara implisit berasumsi bahwa menspesifikasikan pasal hukum secara formal dan memiliki sistem yang dapat menafsirkan undang-undang secara sebagian besar mekanis adalah hal yang baik.
Lebih jauh lagi, ini berarti sistem penafsir manusia yang ada, dengan ruang diskresi dan margin kesalahannya, dipandang sebagai masalah yang harus diatasi. Saya tidak sepenuhnya menentang asumsi itu, tetapi juga belum jelas apakah itu benar, dan tampaknya para penulis juga tidak menyajikan argumen yang mendukungnya.
Dari sudut pandang orang yang memahami proses mengubah undang-undang menjadi kode, saya bisa memahami apa yang ingin dilakukan proyek ini, meskipun nilainya hanya sebatas memberi kejelasan bagi pengembang perangkat lunak.
Saya rasa ini juga erat kaitannya dengan supremasi hukum. Menurut https://www.britannica.com/topic/rule-of-law, hukum harus terbuka dan jelas, memiliki bentuk yang umum serta dapat diterapkan secara universal, memuat ketentuan yang pasti yang dapat dirujuk orang sebelum bertindak, dan kewajiban hukum tidak boleh dibuat berlaku surut. Saya penasaran apa manfaat dari hukum yang ambigu.
Saat belajar untuk gelar hukum, sebagai programmer saya cukup tertarik pada bidang ini, dan menemukan komunitas besar di dunia berbahasa Prancis yang melakukan kerja legalistis semacam ini. Profesor di universitas saya yang tertarik pada bidang ini juga tampaknya condong ke lingkaran pengaruh tersebut.
Selama beberapa tahun saya berusaha meyakinkan teman saya yang pengacara bahwa akan bagus jika ada sesuatu yang persis seperti ini, dan ternyata mungkin memang sudah lama ada.
Menurut saya ini benar-benar keren. Semua hukum seharusnya ditulis dalam bahasa seperti ini, lalu dipublikasikan dengan penyorotan sintaks dan aturan format yang konsisten. Setelah itu, kurikulum sekolah seharusnya memasukkan pembelajaran bahasa hukum ini. Dengan begitu, kemampuan orang untuk membaca hukum dan merasa yakin pada pemahamannya akan meningkat besar, dan itu akan menjadi keuntungan besar bagi masyarakat.
Dalam kenyataannya, hukum sudah ditulis dengan bahasa yang relatif biasa, dan kata-katanya hampir selalu memiliki makna yang sama seperti dalam bahasa Inggris umum. Masalahnya adalah konsep hukum yang dijelaskan oleh kata-kata itu sendiri memang kompleks, dan sering kali terjalin dengan rujukan ke hukum, peraturan, preseden, dan sebagainya yang lain.
Pada saat yang sama, ada juga kasus ketika hukum dikodifikasi, seperti Uniform Commercial Code. Dengan kata lain, itu adalah contoh penulisan ulang hukum preseden secara konsisten, lalu menggabungkan dan merapikan patch-nya.
Akan menarik jika test case juga “dijalin” bersama. Bidang kerja tempat kalimat-kalimat logis saling bersentuhan adalah titik tempat bug masuk.
Terutama di sekitar peristiwa temporal, dan ini mengarah ke model formal serta lebih banyak bug. Biasanya jika ada aturan tentang suatu kunci, diperlukan setidaknya tiga pengujian¹: kasus lebih besar, kasus sama, dan kasus lebih kecil. Jika tidak ada tipe dan semacamnya, input negatif, null, serta batas nilai maksimum/minimum juga diperlukan.
Misalnya, bisa dibuat pengujian berbasis timeline seperti “ketika peraturan disahkan 3 bulan kemudian, para pihak tidak lagi dapat menggunakan B, tetapi tetap saja ‘17 ton’ limbah dibuang…”. Akan sangat membantu jika model checker terintegrasi. Legislasi yang diverifikasi secara formal, atau setidaknya pipeline seperti DevOps untuk proses mengodekan bahasa ke dalam kode, juga mungkin dibuat.
¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning
Banyak hukum memuat banyak ungkapan bermakna ganda. Regulasi Uni Eropa terbaru tentang apakah kendaraan Rusia boleh diizinkan atau tidak adalah contoh yang bagus. Namun, ketika mencoba “mendigitalkan” hukum menjadi bahasa pemrograman, ini bisa menjadi ide bagus untuk menemukan semua ambiguitas yang mungkin atau definisi yang kabur.
Ini mirip dengan mencoba meyakinkan reviewer bahwa kode berfungsi dengan membuktikannya lewat unit/integration/end-to-end test. Dengan kata lain, sistem hukum juga memiliki end-to-end test.
Selangkah lebih jauh, kita bahkan bisa menulis kumpulan test lalu secara otomatis menghasilkan rentang hukum yang mungkin memenuhi test tersebut.
Saya ingin melihat lebih banyak format kumpulan uji standar yang menyatakan maksud hukum
Di negara bagian tempat saya dulu tinggal, pernah diajukan undang-undang pelarangan pornografi anak yang sangat sederhana dengan niat baik, tetapi terlalu sederhana. Kira-kira bunyinya seperti “siapa pun yang mengirim foto eksplisit anak di bawah umur lewat ponsel bersalah atas pengiriman pornografi anak”, ditulis dalam bahasa hukum, tetapi tidak jauh lebih rinci dari itu. Saya menelepon pengusul RUU itu dan bertanya apakah, jika putri fiktif saya mengirim foto telanjangnya sendiri kepada pacarnya, ia akan menjadi pelaku kejahatan berat menurut undang-undang baru itu; reaksinya “Aduh, bukan itu maksudnya!”, dan akhirnya RUU tersebut ditarik untuk ditulis ulang
Bisa dibayangkan memperlakukannya seperti kode program dan menambahkan pengujian seperti “undang-undang ini tidak berlaku ketika anak di bawah umur mengirim foto dirinya sendiri”. Itu akan memaksa legislator memperjelas maksudnya, dan jika mereka berkata “kami tidak akan memakai undang-undang keselamatan anak online untuk melarang konten pro-trans”, kita bisa menjawab “baik, masukkan itu sebagai test case”. Hambatan utamanya adalah politisi tidak suka dipaku dengan cara seperti itu
Selain itu, akan menjadi lebih mudah menulis undang-undang yang mencerminkan maksud, dan pengadilan di masa depan bisa menggunakannya untuk menilai maksud undang-undang. Sekalipun secara tekstual berlaku untuk kasus anak 15 tahun yang mengirim swafoto, jika pengujiannya menyatakan itu tidak dimaksudkan, ia bisa dibebaskan. Mungkin mustahil karena ratusan alasan, tetapi boleh saja bermimpi
Artinya, bukan dengan sengaja membuat undang-undang kabur agar cakupannya luas, lalu membiarkan orang memperdebatkannya di pengadilan
Hukum tidak perlu bisa dijalankan di komputer. Karena ini soal maksud dan penafsirannya, kumpulan uji itu sendiri pada dasarnya juga bagian dari hukum, jadi cukup masukkan saja ke dalam undang-undangnya
Secara pribadi, saya akan puas jika negara mana pun melampirkan tujuan legislatif pada undang-undang itu sendiri. Kalau bisa, lebih baik lagi jika disertai indikator kinerja utama untuk melihat apakah ia bekerja. Dengan begitu nanti bisa dievaluasi ulang apakah undang-undang itu benar-benar bekerja, menimbulkan efek sebaliknya, atau kasus penerapan utamanya berbeda dari alasan awal ia diperkenalkan
[1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
Di buku Greg Bear Moving Mars (1993), sesuatu yang mirip muncul sekilas dengan nama Legal Logic. Para manusia Mars menggunakannya dengan bantuan AI ketika menyusun hukum untuk masyarakat mereka yang baru merdeka
Greg Bear adalah penulis SF terkenal yang meninggal kurang dari setahun lalu, dan obituarinya juga dibahas di sini saat itu. Ia salah satu penulis yang sangat memengaruhi masa remaja saya, jadi saya ingat khususnya elemen di Moving Mars ini memicu imajinasi saya, dan saya ingin membaca apa yang ditawarkan Catala
[1] https://en.wikipedia.org/wiki/Greg_Bear
[2] https://en.wikipedia.org/wiki/Moving_Mars
[3] https://news.ycombinator.com/item?id=33679668
[4] https://news.ycombinator.com/item?id=33675708
Ada makalah yang menjelaskan bahasa ini: https://hal.inria.fr/hal-03159939. Ada juga ringkasan video singkat: https://youtu.be/OiaFTFSAa1I
Programmer suka mengusulkan agar hukum memakai semacam “bahasa pemrograman”
Namun ini melewatkan fakta bahwa ambiguitas, dalam beberapa hal, adalah bagian yang secara fundamental penting dari hukum. Sebab dunia itu sendiri, dalam beberapa hal, secara fundamental ambigu, dan dalam beberapa hal lain terbagi secara jelas. Tentu saja tidak semua jenis ambiguitas itu diinginkan
Namun jika “kode adalah hukum”, menurut saya cara mengeksploitasi celah akan menjadi lebih buruk. Bahkan banyak undang-undang seharusnya lebih berfokus pada nilai-nilai yang harus dijaga daripada detail implementasi, dan ini secara inheren pasti kurang jelas dan lebih ambigu
Saya tidak akan memperdebatkan apakah ini masalah hukum atau masalah penegakan, tetapi bagaimanapun masyarakat kita dibangun di atas ambiguitas dan penegakan yang tidak merata
value.fair_marketdi bagian concepts [0]. Para pengacara bisa saja berdebat tentang maknanya, tetapi definisi-definisi yang bersaing juga bisa didefinisikan sebagai programSaya setuju bahwa perhatian terhadap hukum seharusnya diarahkan pada hasil, bukan detail implementasi. Untuk itu, kita memerlukan cara membuat fungsi evaluasi yang mengukur hasil undang-undang baru, dan sistem seperti Catala dapat membantu memodelkan hasil yang diharapkan serta memilih di antara RUU yang bersaing. Misalnya jika hasilnya adalah “ingin mengurangi polusi”, kebijakannya bisa berupa “melarang industri pencemar” atau “mengenakan pajak pada eksternalitas polusi”; keduanya menghasilkan konsekuensi kompleks, jadi analisis otomatis dan pengukuran empiris akan lebih baik
[0] https://github.com/CatalaLang/catala#concepts
Saya tidak yakin apakah ada masalah besar yang benar-benar akan terselesaikan dalam hal komputer melakukan penalaran atas kata-kata hukum. Bagian yang rumit adalah menimbang keadilan, dan untuk itu manusia serta pengacara masih tetap diperlukan
Saya penasaran apakah ada legislator, pengacara, atau hakim yang mengharapkan ini, atau hanya para programmer saja
Saya tidak terlalu percaya pada sistem hukum kita. Saya tidak tahu kenapa bertanya
Sebagai penutur Catalan, benturan nama dengan bahasa yang dibahas dalam tulisan ini terasa sangat disayangkan
Pemilihan namanya benar-benar disayangkan. Mirip seperti menamai bahasa pemrograman “français”, “Deutsch”, atau “English”
Di bagian bawah readme tertulis “bahasa ini dinamai dari Pierre Catala”. Saya menyarankan lebih baik diganti menjadi PierreLang
Sebagai penutur asli Catalan, saya cukup terkejut melihat namanya, tetapi kalau itu nama keluarga yang umum, masuk akal