- Catala ist eine domänenspezifische Sprache zur Ableitung von faithful-by-construction-Algorithmen aus Gesetzestexten und eine Programmiersprache, die auf Literate Programming für Sozial- und Finanzgesetzgebung zugeschnitten ist
- Nachdem Materialien zu den umzusetzenden sozial- und finanzrechtlichen Mechanismen wie Gesetze, Verordnungen und Rechtsprechung zusammengetragen wurden, wird die Implementierung erstellt, indem die Bedeutung jeder Zeile artikelweise als Code annotiert wird
- Der Catala-Compiler kann aus fertiggestelltem und getestetem Code eine von Anwälten lesbare PDF-Version der Implementierung erzeugen; die Sprache wurde in Zusammenarbeit mit Rechtsexperten entwickelt, damit diese die Korrektheit prüfen und bestätigen können
- Zentrale Konzepte sind definition-under-conditions und Default Logic auf Basis von Sarah Lawskys A Logic for Statutes; die logische Struktur des Rechts wird durch die logische Struktur der Sprache nachgebildet
- Als Entwicklungswerkzeuge bietet Catala Syntax-Highlighting für mehrere Texteditoren, eine VSCode-Erweiterung, einen eigenen LSP-Server, Code-Navigation, Autovervollständigung, eine UX für Testsuites sowie den Formatter
catala-format - Zum Lernen und Nachschlagen stehen das Catala book, das Catala tutorial, ein französisch- und englischsprachiges Grammatik-Cheat Sheet sowie die Compiler-Dokumentation der aktuellen
master-Version zur Verfügung - Der Compiler und der Code im Repository werden, sofern in Unterverzeichnissen keine separate Lizenz angegeben ist, unter der Apache License version 2 veröffentlicht
- Catala ist ein Forschungsprojekt von Inria; der Compiler ist noch instabil und es fehlen noch einige Funktionen
1 Kommentare
Meinungen auf Hacker News
Dieses Projekt scheint implizit anzunehmen, dass es gut ist, Gesetzestexte formal zu spezifizieren und ein System zu haben, das Gesetze weitgehend maschinell interpretierbar macht.
Darüber hinaus läuft es darauf hinaus, das bestehende System menschlicher Interpretinnen und Interpreten mit Ermessensspielraum und Fehlertoleranzen als ein zu überwindendes Problem zu betrachten. Ich bin dieser Annahme nicht völlig abgeneigt, aber es ist auch nicht klar, ob sie stimmt, und die Autoren scheinen dafür keine stützenden Argumente zu liefern.
Aus der Perspektive von jemandem, der den Prozess kennt, Gesetzestexte in Code zu überführen, kann ich nachvollziehen, was dieses Projekt leisten will, selbst wenn der Nutzen nur darin besteht, Softwareentwicklern Klarheit zu verschaffen.
Ich sehe hier auch einen engen Bezug zur Rechtsstaatlichkeit. Laut https://www.britannica.com/topic/rule-of-law soll Recht öffentlich und klar sein, eine allgemeine Form und universelle Anwendbarkeit haben, feststehende Anforderungen enthalten, an denen sich Menschen vor ihrem Handeln orientieren können, und rechtliche Pflichten sollen nicht rückwirkend geschaffen werden. Ich frage mich, worin der Vorteil unklarer Gesetze liegen soll.
Als ich Jura studierte, interessierte ich mich als Programmierer ziemlich für dieses Gebiet und entdeckte in der Frankophonie eine große Community, die an solchen legalistischen Arbeiten tätig war. Auch ein Professor an meiner Universität, der sich dafür interessierte, schien eher in diese Richtung beeinflusst zu sein.
Ich habe seit Jahren versucht, einen befreundeten Anwalt davon zu überzeugen, dass es genau so etwas geben sollte, und offenbar hat es das vermutlich schon die ganze Zeit gegeben.
Ich finde das wirklich großartig. Alle Gesetze sollten in einer solchen Sprache geschrieben und mit Syntax-Highlighting sowie konsistenten Formatierungsregeln veröffentlicht werden. Danach sollte das Erlernen dieser Rechtssprache in den Lehrplan der Schulen aufgenommen werden. Das würde die Fähigkeit der Menschen, Gesetze zu lesen und ihrem eigenen Verständnis zu vertrauen, erheblich verbessern und wäre auch gesellschaftlich ein großer Gewinn.
In der Realität sind Gesetze bereits in relativ normaler Sprache geschrieben, und die Wörter bedeuten fast immer das, was sie auch im allgemeinen Englisch bedeuten. Das Problem ist, dass die Rechtsbegriffe, die diese Wörter beschreiben, selbst komplex sind und oft mit Verweisen auf andere Gesetze, Vorschriften, Rechtsprechung usw. verflochten sind.
Gleichzeitig gibt es auch Fälle, in denen Recht kodifiziert wurde, etwa den Uniform Commercial Code. Das ist also ein Beispiel dafür, Fallrecht konsistent neu zu schreiben und die Patches zusammenzuführen und aufzuräumen.
Es wäre interessant, auch Testfälle mit „einzuweben“. Die Arbeitsfläche, an der logische Aussagen aneinanderstoßen, ist genau die Stelle, an der Bugs hineingeraten.
Besonders rund um zeitliche Ereignisse ist das so; das führt zu formalen Modellen, und damit auch zu mehr Bugs. Wenn es etwa eine Regel zu einem Schlüssel gibt, braucht man normalerweise mindestens drei Tests¹: größer, gleich, kleiner. Wenn es keine Typen usw. gibt, braucht man auch negative Werte, null sowie Eingaben an den Grenzen von Maximal- und Minimalwerten.
Man könnte zum Beispiel Timeline-basierte Tests haben wie: „Wenn eine Regelung nach drei Monaten verabschiedet wird, die Parteien B nicht mehr ausüben konnten, aber dennoch ‚17 Tonnen‘ Abfall abgeladen wurden …“. Ein integrierter Model Checker wäre eine große Hilfe. Formal verifizierte Gesetzgebung, oder zumindest eine DevOps-artige Pipeline für den Prozess, Sprache in Code zu kodieren, wäre denkbar.
¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning
Viele Gesetze enthalten viele mehrdeutige Formulierungen. Die jüngste EU-Regelung dazu, ob russische Fahrzeuge zugelassen werden sollen oder nicht, ist ein gutes Beispiel. Dennoch könnte es eine gute Idee sein, beim Versuch, Recht in einer Programmiersprache zu „digitalisieren“, alle möglichen Mehrdeutigkeiten oder unscharfen Definitionen aufzudecken.
Das ähnelt dem Versuch, Reviewer mit Unit-, Integrations- und End-to-End-Tests davon zu überzeugen, dass der Code funktioniert. Man hätte also End-to-End-Tests für das Rechtssystem.
Noch einen Schritt weiter könnte man Testsammlungen schreiben und automatisch den möglichen Bereich von Gesetzen generieren, der diese Tests erfüllt.
Ich würde gern mehr von einem Standardformat für Testsammlungen sehen, das die Absicht eines Gesetzes festhält
In dem Bundesstaat, in dem ich früher lebte, wurde einmal mit guten Absichten ein sehr einfaches Verbot von Kinderpornografie vorgeschlagen – zu einfach. Sinngemäß etwa: „Wer mit einem Mobiltelefon explizite Bilder von Minderjährigen verschickt, macht sich der Verbreitung von Kinderpornografie schuldig.“ Es war zwar in juristischer Sprache formuliert, aber nicht viel detaillierter als das. Ich rief den Initiator des Gesetzentwurfs an und fragte, ob meine hypothetische Tochter nach dem neuen Gesetz zur Schwerverbrecherin würde, wenn sie ihrem Freund ein Nacktfoto von sich schickt. Die Reaktion war: „Oh je, so war das nicht gemeint!“ Am Ende zog er den Entwurf zurück, um ihn neu zu schreiben
Man könnte sich vorstellen, das wie Programmcode zu behandeln und Tests anzuhängen wie: „Dieses Gesetz gilt nicht, wenn Minderjährige Bilder von sich selbst verschicken.“ Das würde Gesetzgeber zwingen, ihre Absicht klarer zu machen; und wenn sie sagen: „Wir werden das Online-Kinderschutzgesetz nicht nutzen, um transfreundliche Inhalte zu verbieten“, könnte man antworten: „Gut, dann nehmen wir das als Testfall auf.“ Das entscheidende Hindernis ist, dass Politiker es nicht mögen, so festgenagelt zu werden
Außerdem würde es einfacher, Gesetze zu schreiben, die die Absicht abbilden, und künftige Gerichte könnten es nutzen, um die Absicht des Gesetzes zu bewerten. Selbst wenn der Wortlaut auch den Fall erfasst, dass ein 15-Jähriger ein Selfie verschickt, könnte ein Test, der ausdrücklich festhält, dass dies nicht beabsichtigt war, zu einem Freispruch führen. Aus hundert Gründen wird das unmöglich sein, aber träumen darf man ja
Also nicht absichtlich vage Gesetze formulieren, die möglichst weit greifen, und die Leute es dann vor Gericht ausfechten lassen
Gesetze müssen nicht auf einem Computer ausführbar sein. Es geht um Absicht und deren Auslegung; daher ist die Testsammlung selbst im Grunde Teil des Gesetzes, und man kann sie einfach in das Gesetz aufnehmen
Persönlich wäre ich schon zufrieden, wenn in irgendeinem Land jedem Gesetz eine gesetzgeberische Begründung beigefügt würde. Wenn möglich, gern auch zentrale Leistungsindikatoren, anhand derer man sieht, ob es funktioniert. Später könnte man erneut bewerten, ob das Gesetz tatsächlich wirkt, ob es kontraproduktiv ist oder ob die wichtigsten Anwendungsfälle andere sind als die Gründe, aus denen es ursprünglich eingeführt wurde
[1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
In Greg Bears Buch Moving Mars (1993) kommt etwas Ähnliches kurz unter dem Namen Legal Logic vor. Menschliche Marsbewohner nutzen es mit Hilfe von KI, um die Gesetze ihrer neu unabhängig gewordenen Gesellschaft zu schaffen
Greg Bear war ein berühmter Science-Fiction-Autor, der vor weniger als einem Jahr gestorben ist; auch hier wurde damals über seinen Nachruf diskutiert. Er war einer der Autoren, die meine Jugend stark geprägt haben, und ich erinnere mich, dass gerade dieses Element in Moving Mars meine Fantasie angeregt hat. Ich möchte gern lesen, was Catala zu bieten hat
[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
Es gibt ein Paper, das diese Sprache beschreibt: https://hal.inria.fr/hal-03159939. Außerdem gibt es eine kurze Videozusammenfassung: https://youtu.be/OiaFTFSAa1I
Programmierer schlagen gern vor, im Recht so etwas wie eine „Programmiersprache“ zu verwenden
Dabei übersehen sie aber, dass Mehrdeutigkeit in gewisser Hinsicht ein grundlegend wichtiger Teil des Rechts ist. Denn die Welt selbst ist in mancher Hinsicht grundlegend mehrdeutig und in anderer Hinsicht klar abgrenzbar. Natürlich ist nicht jede Art von Mehrdeutigkeit wünschenswert
Wenn aber „Code is Law“ wird, dann wird die Ausnutzung von Schlupflöchern meiner Ansicht nach noch schlimmer. Viele Gesetze sollten sich sogar stärker auf die zu schützenden Werte konzentrieren als auf Implementierungsdetails; und das ist zwangsläufig weniger präzise und mehrdeutiger
Ob das ein Problem der Gesetze oder der Durchsetzung ist, will ich nicht diskutieren, aber jedenfalls ist unsere Gesellschaft auf Mehrdeutigkeit und ungleichmäßiger Durchsetzung aufgebaut
value.fair_marketim Abschnitt concepts ansehen [0]. Anwälte können sich darüber streiten, was es bedeutet, aber konkurrierende Definitionen lassen sich ebenfalls als Programme definierenIch stimme zu, dass sich die Aufmerksamkeit beim Recht auf Ergebnisse richten sollte, nicht auf Implementierungsdetails. Dafür braucht man eine Möglichkeit, Bewertungsfunktionen zu erstellen, die die Ergebnisse neuer Gesetze messen; Systeme wie Catala könnten dabei helfen, erwartete Ergebnisse zu modellieren und zwischen konkurrierenden Gesetzesentwürfen zu wählen. Wenn das Ziel etwa lautet: „Wir wollen Umweltverschmutzung reduzieren“, könnte die Politik entweder „verschmutzende Industrien verbieten“ oder „externe Kosten von Umweltverschmutzung besteuern“ sein. Beides führt zu komplexen Ergebnissen, daher wären automatische Analyse und empirische Messung besser
[0] https://github.com/CatalaLang/catala#concepts
Ich bin mir nicht sicher, ob es hier wirklich ein großes ungelöstes Problem gibt, das Computern beim tatsächlichen Schlussfolgern über Gesetzestexte helfen würde. Der komplizierte Teil ist die Abwägung der Billigkeit, und dafür braucht es weiterhin Menschen und Anwälte.
Ich frage mich, ob Gesetzgeber, Anwälte und Richter sich so etwas wünschen, oder ob nur Programmierer darauf hoffen.
Ich habe nicht viel Vertrauen in unser Rechtssystem. Keine Ahnung, warum du fragst.
Als jemand, der Katalanisch spricht, finde ich die Namenskollision mit der im Artikel genannten Sprache sehr unglücklich.
Die Namenswahl ist wirklich unglücklich. Das ist ungefähr so, als würde man eine Programmiersprache „français“, „Deutsch“ oder „English“ nennen.
Weiter unten im README steht: „Diese Sprache wurde nach Pierre Catala benannt.“ Ich würde eher vorschlagen, sie in PierreLang umzubenennen.
Als Katalanisch-Muttersprachler war ich beim Namen ziemlich überrascht, aber wenn es ein häufiger Nachname ist, ergibt es Sinn.