Catala est un langage spécifique à un domaine permettant de dériver des algorithmes fidèles par construction à partir de textes législatifs. Pour en savoir plus rapidement sur le langage et ses fonctionnalités, vous pouvez accéder directement au didacticiel officiel de Catala. Vous pouvez rejoindre la communauté Catala sur Zulip !
Catala est un langage de programmation adapté à la programmation législative socio-fiscale. En annotant chaque ligne du texte législatif avec sa signification en termes de code, on peut déduire une mise en œuvre de mécanismes socio-fiscaux complexes qui bénéficie d'un haut niveau d'assurance quant à la fidélité au code.
Concrètement, vous devez d'abord rassembler toutes les lois, décrets, affaires antérieures, etc. qui contiennent des informations sur le mécanisme socio-fiscal que vous souhaitez mettre en œuvre. Ensuite, vous pouvez procéder à l'annotation du texte article par article, dans votre éditeur de texte préféré :
Une fois votre code terminé et testé, vous pouvez utiliser le compilateur Catala pour produire une version PDF lisible par les avocats de votre implémentation. Le langage Catala a été spécialement conçu en collaboration avec des professionnels du droit pour garantir que le code puisse être révisé et certifié correct par les experts du domaine, qui sont dans ce cas des avocats et non des programmeurs.
La langue catala est particulière car sa structure logique imite la structure logique de la loi. En effet, le concept central de « définition sous conditions » qui s'appuie sur une logique par défaut a été formalisé par le professeur Sarah Lawsky dans son article A Logic for Statutes. Le langage Catala est le seul langage de programmation à notre connaissance qui intègre la logique par défaut comme fonctionnalité de premier ordre, c'est pourquoi il est le seul langage parfaitement adapté à une programmation législative compétente.
Pour commencer, le meilleur endroit est le tutoriel de la langue. Une version française est également disponible mais peut être désynchronisée avec les dernières fonctionnalités linguistiques.
Remarque : version de pointe
Si vous êtes intéressé par la dernière version de développement, des artefacts prédéfinis, notamment des binaires et de la documentation sur l'API, sont disponibles sur https://catalalang.github.io/catala.
Catala est disponible sous forme de package OPAM ! Si opam est installé sur votre machine, exécutez simplement :
opam install catala
Pour obtenir la dernière version de Catala, vous pouvez également faire
opam pin add catala --dev-repo
Cependant, si vous souhaitez obtenir les dernières évolutions du compilateur, vous souhaiterez probablement le compiler à partir des sources de ce référentiel ou utiliser nix. Pour cela, consultez le readme dédié.
Remarque : l'indicateur --locked
peut être ajouté aux commandes ci-dessus pour imiter plus fidèlement les configurations de développement connues. A l'inverse, opam lock
doit être appelé pour régénérer le fichier catala.opam.locked
lors de modifications du fichier opam principal.
Utilisez catala --help
si vous l'avez installé pour obtenir plus d'informations sur les options de ligne de commande disponibles. La page de manuel est également disponible en ligne. Pour obtenir la version de développement de l'aide, exécutez make help_catala
après make build
. Le binaire catala
correspond au compilateur Catala.
Le Makefile
de niveau supérieur contient de nombreuses cibles utiles à exécuter. Pour les afficher, utilisez
make help
Bien que le compilateur dispose de backends intégrés pour Catala (Python, Ocaml, etc.), il est également possible d'ajouter un backend personnalisé au compilateur Catala sans avoir à modifier son code source. Cette solution plugin s'appuie sur des liens dynamiques : voir le README dédié.
Utilisez clerk --help
si vous l'avez installé pour obtenir plus d'informations sur les options de ligne de commande disponibles. Pour obtenir la version de développement de l'aide, exécutez make help_clerk
après make build
. Le binaire clerk
correspond au système de build Catala, chargé entre autres des tests.
Pour obtenir plus d'informations sur Clerk, consultez le fichier Lisez-moi dédié.
Catleg est un utilitaire de ligne de commande offrant une intégration utile avec LégiFrance, le référentiel officiel de la documentation juridique française. Voir le référentiel décidé pour plus d'informations.
La coloration syntaxique est disponible pour plusieurs éditeurs de texte. Les scripts peuvent être trouvés ici.
Une extension VSCode pour Catala est disponible sur la place de marché. Il regroupe un surligneur de syntaxe et un serveur LSP dédié qui prend en charge la navigation dans le code, la saisie semi-automatique ainsi qu'une UX pour les suites de tests. Voir le référentiel dédié pour plus de détails.
Un outil de formatage de code, catala-format
est disponible parallèlement au serveur LSP. S'il est installé, le formatage du code est directement disponible dans VSCode. Cet outil est basé sur une grammaire tree-sitter
pour Catala. Voir le référentiel dédié pour plus de détails.
Une référence complète et pratique de la syntaxe Catala peut être trouvée dans l'aide-mémoire (pour les versions française et anglaise de la syntaxe).
Pour auditer la preuve formelle de la certification partielle du compilateur Catala, voir le readme dédié.
La documentation est accessible en ligne, à la fois pour la dernière version et la version la plus récente.
Il est autrement généré à partir du code source du compilateur en utilisant dune
et odoc
. Courir
make doc
pour générer la documentation, puis ouvrez le fichier doc/odoc.html
dans n'importe quel navigateur.
Pour explorer les différents programmes écrits en Catala, consultez le readme dédié.
Pour savoir comment utiliser le code généré par le compilateur Catala dans votre langage de programmation préféré, rendez-vous sur le readme de la bibliothèque de droit français. Les exemples prédéfinis correspondants sont également disponibles.
Pour savoir comment vous pouvez contribuer au projet, consultez le readme dédié.
Pour savoir comment exécuter ou améliorer la suite de tests de référence Catala, consultez le fichier readme dédié.
Le compilateur et tout le code contenu dans ce référentiel sont publiés sous licence Apache (version 2) sauf si une autre licence est explicitée pour un sous-répertoire.
Catala est un projet de recherche d'Inria, l'Institut national de recherche en informatique. Le compilateur est encore instable et manque de certaines de ses fonctionnalités.
Le langage porte le nom de Pierre Catala, professeur de droit qui a été le pionnier de la legaltech française en créant une base de données informatique de jurisprudence, Juris-Data. Le groupe de recherche qu'il a dirigé à la fin des années 1960, le Centre d'études et de traitement de l'information juridique (CETIJ), a également influencé la création par le conseiller d'État Lucien Mehl du Centre de recherches et de développement en informatique juridique (CENIJ). ), qui deviendra finalement l'entité gestionnaire du site Internet LegiFrance, agissant comme service public de documentation législative.