800px-T64 and pencil.jpg Это незавершённая статья.
Вы можете помочь проекту, исправив и дополнив её.

Catala — специализированный язык программирования, предназначенный для программной реализации смысла юридических текстов в коде. Он является языком литературного программирования, предназначенного для решения задач в сфере практической реализации социального и фискального законодательства. Catala разработан в INRIA, ключевые компоненты его компилятора формально верифицированы с использованием языка F*.

По замыслу разработчиков, аннотируя каждую строку законодательного текста ее значением с точки зрения законодательства, можно получить реализацию сложных социально-фискальных механизмов, которая даст высокий уровень уверенности в соблюдении законодательства при выполнении аннотированного кода языка.

Catala позволяет выражать общую логику случаев/исключений, характерную для нормативно-правовых документов статутного права.

Пример использованияПравить

Catala аннотирует законодательные тексты с помощью их перевода в код. Вот краткий пример реализации одного из положений Налогового кодекса США, взятый с сайта разработчиков:

Section 132 - (c) Qualified employee discount defined - (1) Qualified employee discount 
The term “qualified employee discount” means any employee discount with respect to qualified property or services to the extent such discount does not exceed—
(A) in the case of property, the gross profit percentage of the price at which the property is being offered by the employer to customers

./section_132.catala_en

42 scope QualifiedEmployeeDiscount :

43 definition qualified_employee_discount

44 under condition is_property consequence

45 equals

46 if employee_discount >=

47 customer_price * gross_profit_percentage

48 then customer_price * gross_profit_percentage

49 else employee_discount

ЛитератураПравить

Catala: a programming language for the law. Denis Merigoux,Nicolas Chataing, Jonathan Protzenko. Proceedings of the ACM on Programming Languages Volume 5 Issue ICFP Article No.: 77 pp 1–29

СсылкиПравить