69 research outputs found
Catala: A Programming Language for the Law
Law at large underpins modern society, codifying and governing many aspects
of citizens' daily lives. Oftentimes, law is subject to interpretation, debate
and challenges throughout various courts and jurisdictions. But in some other
areas, law leaves little room for interpretation, and essentially aims to
rigorously describe a computation, a decision procedure or, simply said, an
algorithm. Unfortunately, prose remains a woefully inadequate tool for the job.
The lack of formalism leaves room for ambiguities; the structure of legal
statutes, with many paragraphs and sub-sections spread across multiple pages,
makes it hard to compute the intended outcome of the algorithm underlying a
given text; and, as with any other piece of poorly-specified critical software,
the use of informal language leaves corner cases unaddressed. We introduce
Catala, a new programming language that we specifically designed to allow a
straightforward and systematic translation of statutory law into an executable
implementation. Catala aims to bring together lawyers and programmers through a
shared medium, which together they can understand, edit and evolve, bridging a
gap that often results in dramatically incorrect implementations of the law. We
have implemented a compiler for Catala, and have proven the correctness of its
core compilation steps using the F* proof assistant. We evaluate Catala on
several legal texts that are algorithms in disguise, notably section 121 of the
US federal income tax and the byzantine French family benefits; in doing so, we
uncover a bug in the official implementation. We observe as a consequence of
the formalization process that using Catala enables rich interactions between
lawyers and programmers, leading to a greater understanding of the original
legislative intent, while producing a correct-by-construction executable
specification reusable by the greater software ecosystem
Unboxed data constructors -- or, how cpp decides a halting problem
We propose a new language feature for ML-family languages, the ability to
selectively *unbox* certain data constructors, so that their runtime
representation gets compiled away to just the identity on their argument.
Unboxing must be statically rejected when it could introduce *confusions*,
that is, distinct values with the same representation.
We discuss the use-case of big numbers, where unboxing allows to write code
that is both efficient and safe, replacing either a safe but slow version or a
fast but unsafe version.
We explain the static analysis necessary to reject incorrect unboxing
requests.
We present our prototype implementation of this feature for the OCaml
programming language, discuss several design choices and the interaction with
advanced features such as Guarded Algebraic Datatypes.
Our static analysis requires expanding type definitions in type expressions,
which is not necessarily normalizing in presence of recursive type definitions.
In other words, we must decide normalization of terms in the first-order
lambda-calculus with recursion. We provide an algorithm to detect
non-termination on-the-fly during reduction, with proofs of correctness and
completeness.
Our termination-monitoring algorithm turns out to be closely related to the
normalization strategy for macro expansion in the `cpp` preprocessor.Comment: Author version, to appear at POPL 202
Joaquín Sánchez-Covisa la revista “Orientación Económica” y el pensamiento liberal venezolano contemporáneo
Joaquín Sánchez-Covisa (1915-1974) fue un hispano-venezolano que publicó la revista “Orientación Económica” (1961-1974). En esta publicación, se analizó la situación económica, social y política de Venezuela durante la década de los cincuenta, sesenta y principios de los setenta del siglo XX. Entre sus más destacados colaboradores figuran el propio Sánchez-Covisa, Pedro Tinoco, Enrique Sánchez y Enrique Auvert. Estos se preocupan por el escaso crecimiento económico de principios de la democracia y por la grave situación social del país. Cuestionan la óptica estatista de Betancourt, Leoni, Caldera y Pérez. Si bien la renta petrolera y la industrialización por sustitución de importaciones posibilitaron un acelerado crecimiento económico, a mediados de los setenta era evidente la necesidad de aplicar otro modelo. Ya para los ochenta con la crisis de la deuda externa latinoamericana, las políticas de apertura de Gorbachov, las medidas económicas liberales de Reagan y Thatcher y nuestra propia crisis económica y social, intentar otro esquema de desarrollo era impostergable. Había que abrir la economía de protegida a competitiva y exportadora. Aumentar la productividad y el componente tecnológico para producir riqueza que contrarrestara el deterioro. Urgía la investigación aplicada a nuestras necesidades productivas, mayor cultura gerencial, educación para capacitar a empresarios y trabajadores. Un cambio de mentalidad con una mística por el emprendimiento y el trabajo. Hay que transformar nuestras instituciones: hacerlas más representativas, descentralizadas que incentiven la participación. Uno de los protagonistas de este derrotero es el empresario quien a partir de los recursos productivos crea bienes y servicios para satisfacer las necesidades de la comunidad. Los autores arriba mencionados, son duros críticos contra el excesivo estatismo y favorecen los regímenes democráticos contra los sistemas colectivistas
- …