5 points par GN⁺ 2023-09-18 | 1 commentaires | Partager sur WhatsApp
  • Catala est un langage spécifique à un domaine destiné à dériver des algorithmes faithful-by-construction à partir de textes législatifs, et un langage de programmation adapté à la programmation lettrée des législations sociales et fiscales
  • L’implémentation consiste à rassembler les textes relatifs aux mécanismes sociaux et fiscaux à implémenter, comme les lois, décrets d’application et jurisprudences, puis à annoter en code le sens de chaque ligne, article par article
  • Le compilateur Catala peut générer une version PDF de l’implémentation lisible par des juristes à partir d’un code finalisé et testé ; le langage a été conçu en collaboration avec des experts du droit afin qu’ils puissent le relire et en certifier l’exactitude
  • Les concepts clés sont le definition-under-conditions et la logique par défaut, fondés sur A Logic for Statutes de la professeure Sarah Lawsky ; la structure logique du langage imite la structure logique du droit
  • Comme outils de développement, il propose la coloration syntaxique pour plusieurs éditeurs de texte, une extension VSCode, un serveur LSP dédié, la navigation dans le code, l’autocomplétion, une UX pour la suite de tests, et le formateur catala-format
  • Pour l’apprentissage et la référence, on peut consulter le Catala book, le Catala tutorial, les cheat sheets de grammaire en français et en anglais, ainsi que la documentation du compilateur pour la version master la plus récente
  • Le compilateur et le code du dépôt sont distribués sous Apache license version 2, sauf indication d’une licence différente dans certains sous-répertoires
  • Catala est un projet de recherche de l’Inria, et le compilateur est encore instable avec certaines fonctionnalités manquantes

1 commentaires

 
GN⁺ 2023-09-18
Commentaires Hacker News
  • Ce projet semble supposer implicitement que spécifier formellement les textes de loi et disposer d’un système capable d’interpréter les lois de façon largement mécanique est une bonne chose.
    Plus loin encore, il revient à considérer que le système actuel d’interprètes humains, avec sa part de discrétion et de marge d’erreur, est un problème à dépasser ; je ne suis pas totalement opposé à cette hypothèse, mais il n’est pas évident qu’elle soit juste, et les auteurs ne semblent pas non plus avoir avancé d’arguments pour l’étayer.

    • La motivation de ce projet a de fortes chances d’être beaucoup plus pratique que philosophique, et il me semble que vous sous-estimez à quel point la loi se transforme souvent en code exécuté dans les systèmes informatiques des États.
      Pour quelqu’un qui connaît le processus de transformation d’un texte législatif en code, on comprend ce que ce projet cherche à faire, même si sa valeur se limite à apporter de la clarté aux développeurs logiciels.
    • Cela me paraît assez évident, et c’est aussi ce vers quoi le droit tend déjà. De toute façon, on finit par atteindre un droit très précis au travers de la jurisprudence, mais cela implique des coûts juridiques élevés. Ce n’est pas quelque chose qu’il me semble nécessaire de démontrer sur la page d’accueil de Catala.
      Je pense que c’est aussi étroitement lié à l’État de droit. D’après https://www.britannica.com/topic/rule-of-law, la loi doit être publique et claire, avoir une forme générale et une applicabilité universelle, contenir des exigences déterminées que les personnes peuvent consulter avant d’agir, et les obligations juridiques ne doivent pas être créées rétroactivement. Je me demande quel est l’avantage d’une loi ambiguë.
    • Certaines lois, comme le calcul des tranches d’imposition, peuvent s’y prêter, mais je ne pense pas que la plupart des lois devraient être codifiées de cette manière.
    • Cela correspond assez bien à la tradition juridique française. Il suffit de penser à Montesquieu disant que « le juge n’est que la bouche de la loi ».
      Quand j’étudiais le droit, en tant que programmeur, ce domaine m’intéressait beaucoup, et j’ai découvert une grande communauté francophone qui travaillait dans cette veine légaliste. Un professeur de mon université qui s’y intéressait semblait lui aussi pencher vers cette influence.
  • Pendant des années, j’ai essayé de convaincre un ami avocat qu’il serait formidable d’avoir exactement quelque chose comme ça ; il s’avère que cela existait probablement depuis toujours.
    Je trouve ça vraiment génial. Toutes les lois devraient être écrites dans ce langage et publiées avec coloration syntaxique et règles de formatage cohérentes. Ensuite, l’apprentissage de ce langage juridique devrait être intégré aux programmes scolaires. La capacité des gens à lire la loi et à avoir confiance dans leur compréhension s’en trouverait grandement améliorée, avec un bénéfice social considérable.

    • Cela me semble être une assez grosse méprise sur la façon dont le droit fonctionne réellement, renforcée par les séries judiciaires qui mettent l’accent sur les jeux de formulation obscurs.
      Dans la réalité, les lois sont déjà rédigées dans une langue relativement ordinaire, et les mots ont presque toujours le même sens qu’en anglais courant. Le problème est que les concepts juridiques décrits par ces mots sont eux-mêmes complexes, et qu’ils s’entremêlent souvent avec des renvois à d’autres lois, règlements, jurisprudences, etc.
    • Je suis d’accord sur le principe, mais le droit dépend généralement tellement de l’interprétation et de la jurisprudence qu’il est difficile de l’exprimer et de le comprendre de la manière attendue.
    • Les liens pourraient être l’élément essentiel. Pouvoir remonter la jurisprudence, les justifications et les citations jusqu’aux énoncés originels de Hammurabi serait assez instructif.
    • Le gros problème, c’est qu’on perd tout le droit jurisprudentiel qui a interprété la loi. C’est un peu comme jeter deux siècles de rapports de bugs et de correctifs.
      En même temps, il existe aussi des cas où la loi a été codifiée, comme l’Uniform Commercial Code. Autrement dit, des cas où la jurisprudence a été réécrite de manière cohérente, et où les correctifs ont été fusionnés et nettoyés.
  • Il serait intéressant d’y « tisser » aussi des cas de test. La surface de contact entre les énoncés logiques est précisément l’endroit où les bugs s’introduisent.
    C’est particulièrement vrai autour des événements temporels, ce qui mène à des modèles formels et à encore plus de bugs. En général, s’il existe une règle portant sur une clé, il faut au minimum trois tests¹ : un cas plus grand, un cas égal, un cas plus petit. S’il n’y a pas de types, etc., il faut aussi des entrées négatives, null, et aux bornes max/min.
    Par exemple, on pourrait avoir des tests fondés sur une chronologie du type : « quand le règlement est adopté trois mois plus tard, que les parties ne peuvent plus exercer B, mais que malgré tout “17 tonnes” de déchets ont été déversées… ». L’intégration d’un model checker serait d’une grande aide. On pourrait même imaginer une législation formellement vérifiée, ou au moins un pipeline de type DevOps pour le processus d’encodage du langage en code.
    ¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning

    • Ça ne compilerait pas, évidemment je plaisante.
      Beaucoup de lois contiennent de nombreuses formulations ambiguës. La récente réglementation de l’UE sur l’autorisation ou non des véhicules russes en est un bon exemple. Cela dit, lorsqu’on essaie de « numériser » la loi dans un langage de programmation, cela pourrait être une bonne idée pour repérer toutes les ambiguïtés possibles ou les définitions floues.
    • Très bien. Je consulte souvent les tests unitaires pour comprendre comment utiliser du code legacy. Si une loi était fournie avec des exemples concrets faisant partie du document juridique, on pourrait tester à la fois la cohérence logique des règles et l’exactitude de notre compréhension.
      C’est similaire au fait de prouver par des tests unitaires, d’intégration ou end-to-end qu’un code fonctionne afin d’en convaincre les relecteurs. On aurait ainsi des tests end-to-end pour le système juridique.
    • Imaginez : appliquer le développement piloté par les tests au droit.
      On pourrait aller plus loin et écrire un ensemble de tests, puis générer automatiquement l’éventail des lois possibles qui satisfont ces tests.
    • Ce serait bien d’avoir des tests unitaires
  • J’aimerais voir davantage un format standard de suite de tests explicitant l’intention de la loi
    Dans l’État où je vivais auparavant, une loi très simple interdisant la pédopornographie avait été proposée avec de bonnes intentions, mais elle était trop simple. En gros, elle disait quelque chose comme « quiconque envoie avec un téléphone portable des photos explicites d’un mineur est coupable de transmission de pédopornographie » ; c’était rédigé en termes juridiques, mais guère plus détaillé que cela. J’ai appelé l’auteur du projet de loi pour lui demander si, dans l’hypothèse où ma fille fictive envoyait une photo d’elle nue à son petit ami, elle deviendrait une criminelle au titre de la nouvelle loi ; sa réaction a été « oh, mince, ce n’était pas ce que je voulais dire ! », et il a finalement retiré le texte pour le réécrire
    On peut imaginer traiter cela comme du code informatique et y associer des tests du type « cette loi ne s’applique pas lorsqu’un mineur envoie une photo de lui-même ». Cela obligerait le législateur à clarifier son intention, et s’il dit « nous n’utiliserons pas la loi sur la sécurité des enfants en ligne pour interdire les contenus pro-trans », on pourrait répondre : « très bien, mettons cela dans un cas de test ». Le principal obstacle, c’est que les responsables politiques n’aiment pas être ainsi cloués au pilori
    Cela rendrait aussi plus facile la rédaction de lois reflétant l’intention, et pourrait aider les tribunaux futurs à l’évaluer. Même si, littéralement, le texte s’applique au cas d’une personne de 15 ans envoyant un selfie, si le test indique que ce n’était pas l’intention, elle pourrait être acquittée. Ce serait impossible pour des centaines de raisons, mais on peut toujours rêver

    • Pour que cette approche soit efficace, il faudrait que la véritable intention législative soit correctement encodée ; cet exemple n’aurait donc peut-être pas été résolu, et il faudrait que les législateurs agissent de bonne foi
      Autrement dit, il ne faudrait pas qu’ils rédigent volontairement des lois ambiguës pour qu’elles ratissent large, puis laissent les gens se battre devant les tribunaux
    • 99 % du travail consiste à identifier les cas limites, et en droit, la chose la plus courante est justement de les inscrire explicitement. Ce législateur est sans doute retourné ajouter une disposition du type « le fait pour un mineur d’envoyer sa propre photo ne constitue pas une violation du présent article »
      La loi n’a pas besoin d’être exécutable par un ordinateur. Elle porte sur l’intention et son interprétation ; la suite de tests elle-même fait donc, en pratique, partie de la loi, et il suffit de l’inclure dans la loi
    • En théorie, l’idée me plaît dans une certaine mesure, mais je pense qu’il est littéralement 100 % impossible de créer une « suite de tests » meilleure que le système judiciaire réel
    • Des tests pour les lois, ce serait bien, mais il faudrait probablement les « évaluer » par le même mécanisme que celui qui les applique : les tribunaux
      Personnellement, je serais déjà satisfait si n’importe quel pays joignait à ses lois un objectif législatif. Et, si possible, aussi quelques indicateurs clés de performance permettant de voir si elles fonctionnent. Cela permettrait ensuite de réévaluer si la loi fonctionne réellement, si elle produit des effets pervers, ou si ses principaux cas d’application sont différents des raisons qui ont motivé son adoption
    • C’est remarquable que le parlementaire ait été assez lucide pour retirer le projet de loi. Certains États, comme le Minnesota, semblent effectivement poursuivre activement les mineurs pour sexting
      [1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
  • Un passage assez similaire apparaît brièvement sous le nom de Legal Logic dans le livre Moving Mars (1993) de Greg Bear. Des Martiens humains l’utilisent, avec l’aide d’une IA, lorsqu’ils élaborent les lois de leur société nouvellement indépendante
    Greg Bear était un célèbre auteur de science-fiction, décédé il y a moins d’un an, et sa nécrologie avait alors été discutée ici. Il fait partie des auteurs qui ont eu une grande influence sur mon adolescence ; je me souviens en particulier que cet élément de Moving Mars avait stimulé mon imagination, et j’ai envie de lire ce que Catala propose
    [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

  • Il existe un article décrivant ce langage : https://hal.inria.fr/hal-03159939. Il y a aussi un court résumé vidéo : https://youtu.be/OiaFTFSAa1I

  • Les programmeurs aiment proposer d’utiliser quelque chose comme un « langage de programmation » pour le droit
    Mais cela passe à côté du fait que l’ambiguïté est, à certains égards, une partie fondamentalement importante du droit. Parce que le monde lui-même est, à certains égards, fondamentalement ambigu, et à d’autres clairement découpé. Bien sûr, toutes les formes d’ambiguïté ne sont pas souhaitables
    Mais si « le code fait loi », je pense que l’exploitation des failles empirera. En outre, beaucoup de lois devraient se concentrer davantage sur les valeurs à respecter que sur les détails d’implémentation, ce qui est par nature moins précis et plus ambigu

    • D’accord. Je ne pense pas que ce soit une mauvaise idée, mais l’idée de lois parfaitement définies et parfaitement applicables fait peur. Si toutes les lois existantes aujourd’hui pouvaient être parfaitement appliquées et parfaitement surveillées, nos vies deviendraient totalement misérables
      Je ne vais pas débattre pour savoir si c’est un problème de droit ou d’application, mais quoi qu’il en soit, notre société repose sur l’ambiguïté et une application inégale
    • Je ne vois pas pourquoi ce type de projet et l’ambiguïté devraient entrer en conflit. Il suffit de regarder value.fair_market dans la section concepts [0]. Les avocats peuvent se disputer sur sa signification, mais des définitions concurrentes peuvent elles aussi être définies sous forme de programme
      Je suis d’accord sur le fait que l’attention portée au droit devrait se concentrer sur les résultats plutôt que sur les détails d’implémentation. Pour cela, il faut une façon de créer des fonctions d’évaluation mesurant les effets des nouvelles lois, et des systèmes comme Catala peuvent aider à modéliser les résultats attendus et à choisir entre des projets de loi concurrents. Par exemple, si le résultat recherché est « nous voulons réduire la pollution », la politique peut être « interdire les industries polluantes » ou « taxer les externalités de pollution » ; les deux produisent des effets complexes, donc une analyse automatisée et des mesures empiriques seraient préférables
      [0] https://github.com/CatalaLang/catala#concepts
  • Je ne suis pas sûr qu’il y ait vraiment un problème majeur à résoudre pour permettre aux ordinateurs de raisonner effectivement sur le libellé des lois. La partie compliquée, c’est la mise en balance de l’équité, et cela nécessite toujours des humains et des avocats.

    • Exact. Cela dit, si l’on crée un algorithme à partir d’un barème fiscal, la clarté peut aider, et parfois le texte peut aussi sembler ambigu. Il faudrait probablement aussi beaucoup d’exemples. En quelque sorte, il faut des tests unitaires.
    • Je vois un avantage à ce langage. Il pourrait rendre beaucoup plus facile l’écriture de programmes qui calculent les impôts et les salaires. Je ne sais pas ce qu’il pourrait apporter d’autre.
      Je me demande si des législateurs, des avocats ou des juges l’attendent, ou si seuls les programmeurs l’attendent.
    • Je pense que tu voulais dire « des humains, des avocats et des pots-de-vin ».
      Je n’ai pas beaucoup confiance dans notre système juridique. Je ne sais pas pourquoi tu poses la question.
  • En tant que locuteur du catalan, je trouve très regrettable le conflit de nom avec la langue mentionnée dans l’article.

    • Je me demande en quoi c’est regrettable. Et j’aime bien ton nom d’utilisateur. Rien qu’en le voyant, beaucoup de gens ont dû deviner que tu parlais catalan.
  • Le choix du nom est vraiment malheureux. C’est un peu comme appeler un langage de programmation « français », « Deutsch » ou « English ».
    En bas du readme, il est écrit que « ce langage porte le nom de Pierre Catala ». Je suggérerais plutôt de le renommer PierreLang.

    • Il est écrit que « ce langage porte le nom du professeur de droit Pierre Catala, qui a été un pionnier de la legaltech française en créant Juris-Data, une base de données informatique de jurisprudence ».
      En tant que locuteur natif du catalan, le nom m’a assez surpris, mais si c’est un nom de famille courant, cela se tient.