catala/doc/reading_guide.tex
2020-04-07 19:12:22 +02:00

28 lines
5.2 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\providecommand{\kw}[1]{\textbf{\textcolor{OliveGreen}{#1}}}
\providecommand{\inlinekw}[1]{\kw{\texttt{#1}}}
\providecommand{\cm}[1]{\textit{\texttt{\textcolor{PineGreen}{#1}}}}
\paragraph{Objectif} Le but est dannoter le texte de loi avec un langage informatique correspondant (quon appellera « code »). Le langage informatique doit traduire exactement le contenu des articles, sans rien ajouter. Pour une plus grande clarté, le code sera placé dans le texte de loi, aux endroits pertinents. Cela permettra de vérifier localement, ligne à ligne, si le code correspond bien au texte de loi. Ce code sera mis en valeur par une \inlinekw{police différente et une coloration particulière}.
Ce guide a pour objet de définir les termes utilisés dans le code. Chaque terme défini a été choisi pour permettre une compréhension égale des juristes et informaticiens. Par conséquent, chaque terme a une signification précise en droit et en informatique. La signification retenue ici nest pas exactement celle du juriste ou de linformaticien, mais renvoie à des notions que lun et lautre comprennent. Cest pourquoi cette étape de définition -- ou de syntaxe -- doit être lue attentivement.
\paragraph{Métadonnées} Les métadonnées sont la description de tous les faits présents dans la réalité que va mentionner le morceau de texte de loi. Cette partie du code est nécessaire d'un point de vue informatique afin de donner de la \inlinekw{structure} aux informations manipulées, mais elle est accessoire lorsque l'on veut juste vérifier la cohérence avec le texte de loi.
Les \inlinekw{données} sont les faits présents dans la réalité, dans un contexte donné. Ce sont tous les éléments que le programme va manipuler. Par exemple, dans la proposition suivante « tout enfant jusquà la fin de lobligation scolaire », les données sont (1) l'enfant et (2) la fin de lobligation scolaire. Une donnée peut également dépendre d'un paramètre, par exemple un âge limite que dépend \inlinekw{de} l'enfant.
Une donnée est annotée par un \inlinekw{contenu}, qui décrit ce que représente cette donnée : un entier pour un nombre dannées, un montant pour un revenu, etc. Cette annotation de contenu est nécessaire en informatique, car cest ce qui permet deffectuer les calculs numériques. Les \inlinekw{conditions} sont un type particulier de données sans contenu, qui correspondent à des concepts juridiques.
% Parfois, une donnée peut avoir un contenu qui prend plusieurs formes. Par exemple, lentité en charge dun enfant est soit un couple soit une personne seule. On exprime cette disjonction de cas en utilisant \inlinekw{choix}, puis en introduisant chacun des cas avec \inlinekw{-}\inlinekw{-}. Lors que lon veut ensuite utiliser une donnée dont le contenu est un choix, il faut alors examiner chacun des cas avec \inlinekw{selon} $\ldots$ \inlinekw{sous forme}.
Autre cas particulier du contenu dune donnée : si celle-ci fait référence à plusieurs choses. Par exemple, la donnée \texttt{enfants} fait référence à tous les enfants dun ménage. On exprimera cette multiplicité à laide de \inlinekw{collection} et si lon veut utiliser cette collection de données, on le fera avec \inlinekw{existe} $\ldots$ \inlinekw{dans} $\ldots$ \inlinekw{tel que} et \inlinekw{pour tout} $\ldots$ \inlinekw{dans} $\ldots$ \inlinekw{on a}.
\paragraph{Champ dapplication} Le champ dapplication dun article de loi sinscrit dans un contexte particulier. Dans le code, il est nécessaire de préciser le champ dapplication de chaque article de loi. Ce champ dapplication sera introduit par \inlinekw{champ dapplication}. Il est également nécéssaire de préciser quelles données seront utilisées dans un champ d'application ; cela est fait à la fin de la section métadonnées.
Le texte de loi sera donc saucissonné par des blocs de code, tous introduits par leur champ d'application. À l'intérieur du code, des messages n'ayant pas valeur informatique mais laissés à titre de commentaires seront introduits par \cm{\#} et \cm{écrits dans cette police}.
\paragraph{Règles} Le but du programme est de traduire en langage informatique les règles exprimées dans le texte de loi. Les règles sont donc les éléments du texte législatif qui permettent daboutir à des conséquences. Toute règle ne sapplique que si une condition précise est valable. Cette condition est introduite par \inlinekw{sous condition}, et sa conséquence par \inlinekw{conséquence}.
Basiquement, une \inlinekw{règle} permet dexprimer des relations logiques entre concepts du texte de loi. Elle permet notamment de préciser quand des \inlinekw{conditions} sont remplies. La \inlinekw{définition} permet de définir une donnée présente dans le champ d'application en fonction dune autre donnée, par exemple pour exprimer une règle de calcul.
Les \inlinekw{assertions} sont, en langage informatique, une condition de cohérence. Le code doit vérifier que les assertions sont toujours vraies lorsquil sexécute. Cela permet dassurer une cohérence densemble à tout le programme. Les assertions peuvent être très variées et imposer plusieurs types de vérifications.