5 Punkte von GN⁺ 2023-09-18 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2023-09-18
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.

    • Die Motivation dieses Projekts ist wahrscheinlich viel praktischer als so philosophisch, und es scheint zu unterschätzen, wie häufig Gesetze in Code umgewandelt werden, der in IT-Systemen von Bundesstaaten läuft.
      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.
    • Das wirkt ziemlich selbstverständlich und ist meiner Ansicht nach auch bereits das Ziel des Rechts. Letztlich gelangt man über die Rechtsprechung ohnehin zu sehr präzisem Recht, aber der Weg dorthin verursacht hohe Rechtskosten. Zumindest scheint das nichts zu sein, was auf der Catala-Homepage eigens begründet werden müsste.
      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.
    • Manche Gesetze, etwa zur Berechnung von Steuerklassen, mögen dafür geeignet sein, aber die meisten Gesetze sollten meiner Meinung nach nicht auf diese Weise codifiziert werden.
    • Das passt ziemlich gut zur französischen Rechtstradition. Man denke an Montesquieus Aussage, der Richter sei „nur der Mund des Gesetzes“.
      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.

    • Das scheint ein ziemlich großes Missverständnis darüber zu sein, wie echtes Recht funktioniert, vermutlich noch verstärkt durch Anwaltsdramen, die knifflige Wortspielereien betonen.
      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.
    • Grundsätzlich stimme ich zu, aber Recht hängt normalerweise so stark von Auslegung und Rechtsprechung ab, dass es schwer ist, es so auszudrücken und zu verstehen, wie man es sich erhofft.
    • Links könnten der Schlüssel sein. Wenn man Präzedenzfälle, Rechtfertigungen und Zitate bis zur ursprünglichen Äußerung von Hammurabi zurückverfolgen könnte, wäre das ziemlich lehrreich.
    • Das große Problem ist, dass man die gesamte Fallrechtsprechung verliert, die das Recht ausgelegt hat. Das ist ungefähr so, als würde man zwei Jahrhunderte an Bugreports und Patches wegwerfen.
      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

    • Es wird nicht kompilieren, natürlich nur ein Scherz.
      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.
    • Sehr gut. Ich schaue mir oft Unit-Tests an, um zu verstehen, wie Legacy-Code verwendet werden soll. Wenn Gesetze zusammen mit konkreten Beispielen als Teil der Rechtsdokumente geliefert würden, könnten wir sowohl testen, ob die Regeln logisch konsistent sind, als auch ob unser Verständnis stimmt.
      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.
    • Wenn man es sich vorstellt, wäre das testgetriebene Entwicklung auf Recht angewendet.
      Noch einen Schritt weiter könnte man Testsammlungen schreiben und automatisch den möglichen Bereich von Gesetzen generieren, der diese Tests erfüllt.
    • Unit-Tests wären schön.
  • 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

    • Damit so ein Ansatz wirksam ist, müsste die tatsächliche gesetzgeberische Absicht korrekt kodiert sein; dieser Fall wäre damit also möglicherweise nicht gelöst, und die Gesetzgeber müssten in gutem Glauben handeln
      Also nicht absichtlich vage Gesetze formulieren, die möglichst weit greifen, und die Leute es dann vor Gericht ausfechten lassen
    • 99 % der Arbeit besteht darin, Grenzfälle zu finden, und im Recht ist es sehr üblich, solche Grenzfälle ausdrücklich festzuhalten. Der Gesetzgeber wäre vermutlich zurückgegangen und hätte eine Klausel ergänzt wie: „Das Versenden eigener Bilder durch Minderjährige gilt nicht als Verstoß gegen diese Bestimmung“
      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
    • Theoretisch gefällt mir das bis zu einem gewissen Grad, aber ich halte es buchstäblich für 100 % unmöglich, eine „Testsammlung“ zu bauen, die besser ist als das tatsächliche Gerichtssystem
    • Tests für Gesetze wären gut, aber vermutlich müssten sie durch denselben Mechanismus „ausgewertet“ werden, der sie auch anwendet: also durch Gerichte
      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
    • Dass ein Abgeordneter wach genug war, den Entwurf zurückzuziehen, ist großartig. Einige Bundesstaaten wie Minnesota scheinen Sexting durch Minderjährige tatsächlich aktiv strafrechtlich zu verfolgen
      [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

    • Zustimmung. Ich halte es nicht für eine schlechte Idee, aber die Vorstellung perfekt definierter und perfekt durchsetzbarer Gesetze ist beängstigend. Wenn alle heute existierenden Gesetze perfekt durchgesetzt und perfekt überwacht werden könnten, wäre unser Leben vollkommen elend
      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
    • Ich sehe keinen Grund, warum solche Projekte und Mehrdeutigkeit miteinander kollidieren müssten. Man kann sich value.fair_market im Abschnitt concepts ansehen [0]. Anwälte können sich darüber streiten, was es bedeutet, aber konkurrierende Definitionen lassen sich ebenfalls als Programme definieren
      Ich 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.

    • Stimmt. Allerdings kann Klarheit helfen, wenn man aus Steuertabellen Algorithmen erstellt, und manchmal wirken Formulierungen auch mehrdeutig. Vermutlich braucht es auch sehr viele Beispiele. Mit anderen Worten: Man braucht Unit Tests.
    • Einen Vorteil dieser Sprache sehe ich: Sie könnte es deutlich einfacher machen, Programme zur Berechnung von Steuern und Gehältern zu schreiben. Was sie darüber hinaus bieten kann, weiß ich nicht.
      Ich frage mich, ob Gesetzgeber, Anwälte und Richter sich so etwas wünschen, oder ob nur Programmierer darauf hoffen.
    • Ich glaube, du meintest „Menschen, Anwälte und Bestechungsgelder“.
      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.

    • Ich frage mich, warum das unglücklich ist. Und ich mag deinen Benutzernamen. Viele dürften allein anhand dieses Namens vermutet haben, dass du Katalanisch sprichst.
  • 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.

    • Dort steht: „Diese Sprache wurde nach dem Rechtsprofessor Pierre Catala benannt, der mit der juristischen Falldatenbank Juris-Data die französische Legal-Tech-Branche mitbegründete.“
      Als Katalanisch-Muttersprachler war ich beim Namen ziemlich überrascht, aber wenn es ein häufiger Nachname ist, ergibt es Sinn.