Catala - Hukuki metinlerden sadık algoritmalar türeten bir DSL
(github.com/CatalaLang)- Catala, yasama metinlerinden faithful-by-construction algoritmalar türetmek için geliştirilmiş alan-özel bir dil ve sosyal ile mali mevzuat için literate programming'e göre tasarlanmış bir programlama dilidir
- Yasalar, uygulama yönetmelikleri, içtihatlar gibi uygulanacak sosyal ve mali mekanizmalara ilişkin kaynaklar toplandıktan sonra, uygulama her satırın anlamı madde madde kodla açıklama olarak işlenerek yazılır
- Catala derleyicisi, tamamlanmış ve test edilmiş koddan avukatların okuyabileceği PDF sürümünü üretebilir; dil, hukuk uzmanlarının inceleyip doğruluğunu onaylayabilmesi için hukuk uzmanlarıyla işbirliği içinde tasarlanmıştır
- Temel kavramlar, Prof. Sarah Lawsky'nin A Logic for Statutes çalışmasına dayanan definition-under-conditions ve default logic'tir; hukukun mantıksal yapısı, dilin mantıksal yapısı tarafından taklit edilir
- Geliştirme araçları olarak çeşitli metin düzenleyiciler için sözdizimi vurgulama, VSCode eklentisi, özel LSP sunucusu, kod gezinme, otomatik tamamlama, test paketi UX'i ve
catala-formatbiçimlendiricisi sunar - Öğrenme ve başvuru için Catala book, Catala tutorial, Fransızca ve İngilizce dilbilgisi cheat sheet ve en güncel
mastersürümünün derleyici belgeleri kullanılabilir - Derleyici ve depo içindeki kod, alt dizinlerde ayrı bir lisans belirtilmediği sürece Apache license version 2 ile dağıtılır
- Catala, Inria'nın bir araştırma projesidir; derleyicisi hâlâ kararsızdır ve bazı özellikleri eksiktir
1 yorum
Hacker News yorumları
Bu proje, yasa maddelerini biçimsel olarak belirtmenin ve mevzuatın büyük ölçüde mekanik biçimde yorumlanabildiği bir sistemin iyi bir şey olduğunu örtük olarak varsayıyor gibi görünüyor.
Daha da ileri gidersek, takdir payı ve hata marjı olan mevcut insan yorumlayıcılar sistemini aşılması gereken bir sorun olarak görüyor demektir; bu varsayıma tamamen karşı değilim ama doğru olduğu da açık değil, yazarların bunu destekleyen argümanlar sunduğunu da sanmıyorum.
Mevzuatı koda dönüştürme sürecini bilen biri olarak, sağladığı değer yazılım geliştiricilere netlik kazandırmakla sınırlı olsa bile bu projenin yapmaya çalıştığı şeyi anlayabiliyorum.
Bunun hukukun üstünlüğü ile de yakından ilgili olduğunu düşünüyorum. https://www.britannica.com/topic/rule-of-law adresine göre hukuk kamuya açık ve açık olmalı, genel bir biçime ve evrensel uygulanabilirliğe sahip olmalı, insanların harekete geçmeden önce başvurabileceği kesin koşullar içermeli ve hukuki yükümlülükler geriye dönük olarak oluşturulmamalı. Muğlak hukukun avantajının ne olduğunu merak ediyorum.
Hukuk diploması okurken bir programcı olarak bu alana epey ilgi duymuştum ve Fransızca konuşulan dünyada bu tür hukukçu/pozitivist çalışmalar yapan büyük bir topluluk keşfetmiştim. Üniversitemde bu alana ilgi duyan profesör de o etki alanına yakın duruyor gibiydi.
Birkaç yıldır avukat bir arkadaşımı tam olarak böyle bir şeyin olmasının iyi olacağına ikna etmeye çalışıyordum; meğer muhtemelen zaten hep varmış.
Gerçekten harika olduğunu düşünüyorum. Tüm yasalar böyle bir dille yazılmalı ve sözdizimi vurgulama ile tutarlı biçimlendirme kurallarıyla yayımlanmalı. Ardından okul müfredatına bu hukuk dilini öğrenme konusu eklenmeli. Böylece insanların yasayı okuyup kendi anlayışlarından emin olma becerisi büyük ölçüde gelişir ve bu toplum açısından da büyük bir kazanç olur.
Gerçek hayattaki yasalar zaten nispeten sıradan bir dille yazılır ve kelimeler de neredeyse her zaman genel İngilizcedeki anlamlarıyla kullanılır. Sorun, bu kelimelerin açıkladığı hukuk kavramlarının kendisinin karmaşık olması ve çoğu zaman başka yasalar, düzenlemeler, içtihatlar vb. ile yapılan atıfların iç içe geçmesidir.
Öte yandan Uniform Commercial Code gibi hukukun kanunlaştırıldığı durumlar da var. Yani içtihat hukukunun tutarlı biçimde yeniden yazılıp yamaların birleştirilerek düzenlendiği bir örnek.
Test vakalarının da birlikte “dokunarak” eklenmesi ilginç olurdu. Mantıksal cümlelerin birbirine değdiği çalışma yüzeyi, hataların tam da girdiği yerdir.
Bu özellikle zamansal olayların çevresinde böyledir; burası biçimsel modele uzanır ve daha fazla hata da doğurur. Genelde bir anahtarla ilgili kural varsa en az üç test gerekir¹: daha büyük durum, eşit durum, daha küçük durum. Tipler vb. yoksa negatif değer, null, maksimum/minimum sınır girdileri de gerekir.
Örneğin “düzenleme 3 ay sonra kabul edildiğinde, tarafların B’yi kullanması engellenmiş olsa da yine de ‘17 ton’ atık boşaltıldığında…” gibi zaman çizelgesi tabanlı testler konabilir. Bir model denetleyici entegre edilirse çok faydalı olur. Biçimsel olarak doğrulanmış yasama, en azından dili koda kodlama sürecinde DevOps benzeri bir pipeline da kurulabilir.
¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning
Birçok yasa bol miktarda çift anlamlı ifade içerir. Rus araçlarına izin verilip verilmeyeceğine ilişkin son AB düzenlemesi iyi bir örnek. Yine de hukuku bir programlama diliyle “dijitalleştirmeye” çalışırken olası çift anlamlılıkları veya muğlak tanımları bulmak için iyi bir fikir olabilir.
Bu, kodun çalıştığına reviewer’ı ikna etmek için birim/entegrasyon/uçtan uca testlerle kanıtlamaya çalışmaya benzer. Hukuk sisteminde de uçtan uca testler bulundurmak gibi olur.
Bir adım daha ileri gidip test paketleri yazabilir ve bu testleri karşılayan olası hukuk kapsamını otomatik olarak üretebiliriz.
Yasanın niyetini açıkça belirten standart test paketi formatını daha fazla görmek isterim
Eskiden yaşadığım eyalette iyi niyetle çok basit bir çocuk pornografisi yasağı önerilmişti, ama fazlasıyla basitti. Kabaca “telefonuyla bir reşit olmayanın müstehcen fotoğrafını gönderen kişi çocuk pornografisi iletme suçunu işlemiş olur” gibi bir şeydi; hukuki terimlerle yazılmıştı ama bundan çok daha ayrıntılı değildi. Tasarıyı sunan kişiyi arayıp, varsayımsal kızım kendi çıplak fotoğrafını erkek arkadaşına gönderirse yeni yasaya göre ağır suçlu olmayacak mı diye sordum; “Ah, kahretsin, kastettiğimiz bu değildi!” gibi tepki verdi ve sonunda yeniden yazmak üzere tasarıyı geri çekti
Bunu program kodu gibi ele alıp “bu yasa, reşit olmayan birinin kendi fotoğrafını göndermesi durumunda uygulanmaz” gibi testler eklediğimizi hayal edebiliriz. Yasa koyucuları niyetlerini netleştirmeye zorlar; “çevrimiçi çocuk güvenliği yasasını trans yanlısı içerikleri yasaklamak için kullanmayacağız” diyorlarsa, “tamam, bunu test case olarak ekleyelim” denebilir. Siyasetçilerin bu kadar net biçimde bağlanmaktan hoşlanmaması belirleyici engel
Ayrıca niyeti yansıtan yasa yazmak kolaylaşır ve gelecekteki mahkemeler yasanın niyetini değerlendirirken bunu kullanabilir. Lafzen 15 yaşındaki birinin selfie göndermesine uygulanıyor olsa bile, test bunun amaçlanmadığını açıkça belirtiyorsa beraat edebilir. Yüzlerce nedenle imkânsız olurdu, ama hayal edebiliriz
Yani bilerek geniş kapsamlı olsun diye muğlak yasalar yapıp insanların bunu mahkemede tartışmasına bırakmak şeklinde olmamalı
Yasanın bilgisayarda çalıştırılabilir olması gerekmez. Niyet ve onun yorumu ile ilgilidir; bu yüzden test paketi de fiilen yasanın bir parçasıdır ve doğrudan yasanın içine konabilir
Şahsen, herhangi bir ülkede yasaların kendisine yasama amacı eklenirse memnun olurum. Mümkünse çalışıp çalışmadığını gösteren temel performans göstergeleri de eklense iyi olur. Böylece ileride yasanın gerçekten işleyip işlemediği, ters etki yaratıp yaratmadığı, başlıca uygulama örneklerinin baştaki getirilme gerekçesinden farklı olup olmadığı yeniden değerlendirilebilir
[1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
Greg Bear’ın Moving Mars (1993) kitabında Legal Logic adıyla buna benzer bir şey kısaca geçer. İnsan Marslılar, yeni bağımsız toplumlarının yasalarını oluştururken yapay zekanın yardımıyla bunu kullanır
Greg Bear, bir yıldan kısa süre önce hayatını kaybeden ünlü bir bilimkurgu yazarıydı; o dönemde burada da ölüm ilanı tartışılmıştı. Ergenlik yıllarımda beni çok etkileyen yazarlardan biriydi; özellikle Moving Mars’taki bu unsurun hayal gücümü harekete geçirdiğini hatırlıyorum ve Catala’nın ne sunduğunu okumak istiyorum
[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
Bu dili açıklayan bir makale var: https://hal.inria.fr/hal-03159939. Kısa bir video özeti de var: https://youtu.be/OiaFTFSAa1I
Programcılar hukuka “programlama dili” gibi bir şey kullanmayı önermeyi sever
Ama bu, muğlaklığın bazı açılardan hukukun temelden önemli bir parçası olduğunu gözden kaçırıyor. Çünkü dünyanın kendisi de bazı açılardan temelde muğlaktır, bazı açılardan ise net biçimde ayrılır. Elbette her tür muğlaklık arzu edilir değildir
Ancak “kod yasadır” hâline gelirse açıkları istismar etme biçiminin daha da kötüleşeceğini düşünüyorum. Hatta birçok yasa, ayrıntılı uygulama biçiminden çok korunması gereken değerlere odaklanmalıdır; bu da doğası gereği daha az kesin ve daha muğlak olmak zorundadır
Bunun hukukun mu yoksa uygulamanın mı sorunu olduğunu tartışmayacağım; ama her hâlükârda toplumumuz muğlaklık ve eşitsiz uygulama üzerine kurulu
value.fair_markete bakın [0]. Avukatlar bunun anlamı üzerinde tartışabilir, ama rekabet eden tanımlar da program olarak tanımlanabilirHukuka dair ilginin uygulama ayrıntılarından çok sonuçlara odaklanması gerektiğine katılıyorum. Bunun için yeni yasaların sonuçlarını ölçecek değerlendirme fonksiyonları oluşturmanın bir yolu gerekir; Catala gibi sistemler beklenen sonuçları modellemeye ve rakip yasa tasarıları arasında seçim yapmaya yardımcı olabilir. Örneğin sonuç “kirliliği azaltmak istiyorum” ise politika “kirleten sektörleri yasaklamak” da olabilir, “kirlilik dışsallıklarını vergilendirmek” de; ikisi de karmaşık sonuçlar doğuracağından otomatik analiz ve ampirik ölçüm daha iyi olur
[0] https://github.com/CatalaLang/catala#concepts
Bilgisayarların hukuk metinleri üzerinde gerçekten akıl yürütmesi konusunda çözeceği büyük bir sorun olup olmadığından pek emin değilim. Karmaşık kısım hakkaniyetin tartılması ve bunun için hâlâ insanlara ve avukatlara ihtiyaç var
Yasama organlarından, avukatlardan veya hâkimlerden bunu bekleyen var mı, yoksa sadece programcılar mı bekliyor, merak ediyorum
Hukuk sistemimize pek güvenmiyorum. Neden sorduğunu bilmiyorum
Katalanca konuşan biri olarak, yazıda bahsedilen dille olan isim çakışması bana çok talihsiz geliyor
İsim seçimi gerçekten çok talihsiz. Bir programlama diline “français”, “Deutsch” ya da “English” adını vermeye benziyor
readme’nin aşağılarında “Bu dil adını Pierre Catala’dan almıştır” deniyor. Bunun yerine PierreLang olarak değiştirilmesini öneririm
Katalancayı ana dili olarak konuşan biri olarak adı görünce epey şaşırdım, ama yaygın bir soyadıysa mantıklı