C'est une question très intéressante.
Le droit se situe quelque part entre le langage de tous les jours avec ses règles arbitraires, en constante évolution et souvent souples, et le langage de programmation avec ses règles très spécifiques et définies.
Le jargon juridique définit effectivement ses termes et ainsi, de nombreux mots (mais pas tous!) Utilisés dans la loi ont effectivement une signification précise.
Cependant, l' interprétation est celle où votre approche consistant à présenter un cas à un système logique et à obtenir un résultat échouera. La loi est une définition générique qui doit être adaptée au cas spécifique en question. Il s'agit souvent d'un processus simple et direct, mais rien ne garantit qu'il en soit ainsi, ni aucun moyen non trivial de définir la limite.
La légitime défense est un bon exemple. Dans la plupart des systèmes juridiques, vous pouvez légalement blesser une autre personne à condition que vous agissiez en état de légitime défense. Cependant, la formulation est explicitement contextuelle. Par exemple, le droit pénal britannique écrit:
Une personne peut avoir recours à la force raisonnable dans les circonstances pour prévenir un crime [...]
La jurisprudence définit ce qui est "raisonnable" dans des cas spécifiques , mais aucune définition générale ne figure dans les livres. Il existe également une jurisprudence qui clarifie ce que signifie exactement "prévention du crime". Comme par définition, aucun crime n’a encore été commis, et encore moins un tribunal ayant décidé que l’action était, en fait, un crime, une conviction raisonnable est suffisante dans ce cas particulier, mais cela n’est pas écrit dans la loi!
Pour créer un décideur numérique sur la loi, vous devez l’alimenter non seulement de la loi elle-même, mais aussi de toute la jurisprudence, de beaucoup de compréhension du langage naturel et de beaucoup de règles sur la manière d’ appliquer toutes ces connaissances, car parfois la jurisprudence est solide, parfois vous pouvez la plier (surtout si elle est ancienne, car les interprétations changent avec le temps).
Enfin, la loi change et s’adapte non seulement au livre, mais aussi à ses interprétations. Il existe de nombreux exemples célèbres de hautes instances judiciaires qui ont annulé leur propre décision, vieille de 20 ans. Très souvent, de telles contestations de la jurisprudence antérieure se produisent précisément parce qu'un juge a décidé de s'opposer à ces lois établies et il préfère prendre le risque d'être rejeté par une juridiction supérieure plutôt que de rendre une décision à laquelle il ne souscrit pas. Je me demande comment vous modéliseriez cette capacité dans un système NP-complet?
Pour calculer la complexité d'un système, nous devons comprendre les entrées et les sorties. La loi, cependant, est un système ouvert. Littéralement, tout dans son environnement peut l’influencer, en particulier les changements survenus dans la société et la culture. La plupart des pays ont des lois sur les livres qui sont rarement appliquées parce que la société a changé, mais le processus législatif est à la traîne. Les lois contre l'homosexualité en sont un exemple actuel. Ou encore la peine de mort, qui dans la plupart des pays n'avait pas été appliquée depuis des années, voire des décennies, avant d'être retirée du livre de loi. Et non pas parce qu'il n'y avait aucun cas d'application possible, mais simplement parce que les juges ne l'avaient pas appliqué malgré le choix.
Ces facteurs environnementaux rendent une estimation de la complexité presque impossible, car nous ne pouvons les énumérer dans une liste finie que si nous utilisons tous les quanteurs (par exemple, "tous les types de ..." ou "tous les ...").