5 puntos por GN⁺ 2023-09-18 | 1 comentarios | Compartir por WhatsApp
  • Catala es un lenguaje específico de dominio para derivar algoritmos faithful-by-construction a partir de textos legislativos, y un lenguaje de programación orientado a la programación literaria de legislación social y fiscal
  • La implementación se escribe reuniendo materiales sobre los mecanismos sociales y fiscales que se van a implementar, como leyes, decretos de aplicación y jurisprudencia, y luego anotando en código el significado de cada línea de cada artículo
  • El compilador de Catala puede generar una versión PDF de la implementación, legible para abogados, a partir de código completado y probado; el lenguaje fue diseñado en colaboración con expertos legales para que estos puedan revisarlo y certificar su precisión
  • Los conceptos clave son definition-under-conditions y la lógica por defecto, basados en A Logic for Statutes de la profesora Sarah Lawsky; la estructura lógica del lenguaje imita la estructura lógica del derecho
  • Como herramientas de desarrollo, ofrece resaltado de sintaxis para varios editores de texto, una extensión de VSCode, un servidor LSP dedicado, navegación de código, autocompletado, UX para la suite de pruebas y el formateador catala-format
  • Para aprendizaje y referencia, se puede acceder al Catala book, al Catala tutorial, a la cheat sheet de gramática en francés e inglés, y a la documentación del compilador de la versión más reciente de master
  • El compilador y el código del repositorio se distribuyen bajo Apache license version 2, salvo que se indique una licencia distinta en subdirectorios específicos
  • Catala es un proyecto de investigación de Inria, y el compilador aún es inestable y carece de algunas funciones

1 comentarios

 
GN⁺ 2023-09-18
Opiniones de Hacker News
  • Este proyecto parece asumir implícitamente que es bueno especificar formalmente los textos legales y contar con un sistema capaz de interpretar las leyes de manera mayormente mecánica.
    Yendo más allá, implica ver el sistema actual de intérpretes humanos, con discrecionalidad y márgenes de error, como un problema que debe superarse. No me opongo por completo a esa suposición, pero tampoco está claro que sea correcta, y no parece que los autores hayan presentado argumentos que la respalden.

    • La motivación de este proyecto parece mucho más práctica que filosófica, y creo que estás subestimando la frecuencia con la que la ley termina convertida en código que se ejecuta en sistemas informáticos de gobiernos estatales.
      Desde la perspectiva de alguien que conoce el proceso de convertir legislación en código, puedo entender lo que intenta hacer este proyecto, incluso si su valor se limitara a dar mayor claridad a los desarrolladores de software.
    • Esto me parece bastante obvio, y creo que además es algo a lo que el derecho ya aspira. De todos modos se llega a leyes muy precisas mediante la jurisprudencia, pero llegar hasta ahí implica costos legales altos. Al menos no parece algo que haga falta argumentar en la página de Catala.
      Creo que esto también está estrechamente relacionado con el Estado de derecho. Según https://www.britannica.com/topic/rule-of-law, la ley debe ser pública y clara, tener forma general y aplicabilidad universal, contener requisitos definidos que las personas puedan consultar antes de actuar, y las obligaciones legales no deberían crearse retroactivamente. Me pregunto cuál sería la ventaja de una ley ambigua.
    • Algunas leyes, como el cálculo de tramos impositivos, podrían estar bien, pero creo que la mayoría de las leyes no deberían codificarse de esta manera.
    • Esto encaja bastante bien con la tradición jurídica francesa. Basta recordar a Montesquieu diciendo que “el juez no es más que la boca de la ley”.
      Cuando estudiaba Derecho, como programador me interesaba bastante este campo, y encontré una gran comunidad francófona dedicada a este tipo de trabajo legalista. El profesor de mi universidad que estaba interesado en esto también parecía inclinarse hacia esa esfera de influencia.
  • Durante años estuve tratando de convencer a un amigo abogado de que sería bueno tener exactamente algo así, y resulta que probablemente ya existía desde hace tiempo.
    Me parece realmente genial. Todas las leyes deberían escribirse en un lenguaje como este y publicarse con resaltado de sintaxis y reglas de formato consistentes. Después, los planes de estudio escolares deberían incluir el aprendizaje de este lenguaje legal. Eso mejoraría mucho la capacidad de la gente para leer la ley y confiar en su propia comprensión, y sería un gran beneficio para la sociedad.

    • Esto parece un malentendido bastante grande sobre cómo funciona realmente la ley, reforzado quizá por los dramas de abogados que enfatizan juegos de palabras crípticos.
      En la realidad, las leyes ya están escritas en un lenguaje relativamente común, y las palabras casi siempre significan lo mismo que en el inglés cotidiano. El problema es que los conceptos jurídicos que esas palabras describen son complejos, y a menudo se entrelazan referencias a otras leyes, reglamentos, jurisprudencia, etc.
    • En principio estoy de acuerdo, pero la ley suele depender demasiado de la interpretación y la jurisprudencia como para expresarla y entenderla de la forma que esperas.
    • Los enlaces podrían ser la clave. Si se pudiera rastrear jurisprudencia, fundamentos de justificación y citas hasta la expresión primigenia de Hammurabi, sería bastante educativo.
    • El gran problema es que se perdería toda la jurisprudencia que ha interpretado la ley. Es parecido a tirar dos siglos de reportes de bugs y parches.
      Al mismo tiempo, también hay casos en los que la ley está codificada, como el Uniform Commercial Code. Es decir, casos en los que la jurisprudencia se reescribió de forma coherente y se consolidaron los parches.
  • Sería interesante también “entrelazar” casos de prueba. La superficie de trabajo donde se tocan las oraciones lógicas es precisamente donde entran los bugs.
    Especialmente alrededor de eventos temporales, y eso lleva a modelos formales y también a más bugs. Normalmente, si hay una regla sobre una clave, se necesitan al menos tres pruebas¹: un caso mayor, un caso igual y un caso menor. Si no hay tipos, etc., también hacen falta entradas negativas, null y límites de máximos/mínimos.
    Por ejemplo, se podrían tener pruebas basadas en líneas de tiempo como “cuando la regulación se aprueba tres meses después, y las partes ya no pudieron ejercer B, pero aun así se vertieron ‘17 toneladas’ de residuos…”. Si se integrara un verificador de modelos, ayudaría mucho. Legislación verificada formalmente o, al menos, un pipeline tipo DevOps para el proceso de codificar el lenguaje en código.
    ¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning

    • No compilaría; es broma, claro.
      Muchas leyes contienen muchas expresiones ambiguas. Un buen ejemplo es la reciente normativa de la UE sobre si permitir o no vehículos rusos. Aun así, cuando se intenta “digitalizar” la ley como lenguaje de programación, podría ser una buena idea para encontrar todas las ambigüedades o definiciones vagas posibles.
    • Muy bueno. A menudo miro pruebas unitarias para entender cómo se supone que debe usarse el código legacy. Si las leyes vinieran con ejemplos concretos como parte del documento legal, podríamos probar tanto si las reglas son lógicamente consistentes como si nuestra comprensión es correcta.
      Es parecido a intentar convencer a un revisor de que el código funciona, demostrándolo con pruebas unitarias, de integración y de extremo a extremo. Sería tener pruebas de extremo a extremo para el sistema legal.
    • Imaginándolo, sería aplicar desarrollo guiado por pruebas a la ley.
      Yendo un paso más allá, también se podría escribir un conjunto de pruebas y generar automáticamente el rango de leyes posibles que satisfagan esas pruebas.
    • Sería bueno tener pruebas unitarias
  • Me gustaría ver más un formato estándar de conjunto de pruebas que especifique la intención de la ley
    En el estado donde vivía antes, se propuso con buenas intenciones una ley muy simple contra la pornografía infantil, pero era demasiado simple. Era más o menos algo como: “quien envíe por celular una foto explícita de un menor comete el delito de distribución de pornografía infantil”; estaba escrito en términos legales, pero no con mucho más detalle que eso. Llamé al autor del proyecto de ley y le pregunté si, bajo la nueva ley, mi hija hipotética se convertiría en delincuente grave si le enviaba una foto desnuda de sí misma a su novio; su reacción fue “¡ay, no, eso no era lo que quería decir!”, y al final retiró el proyecto para reescribirlo
    Uno podría imaginar tratar esto como código de programa y agregar pruebas como “esta ley no se aplica cuando un menor envía una foto de sí mismo”. Eso obligaría a los legisladores a aclarar su intención, y si dicen “no vamos a usar la ley de seguridad infantil en línea para prohibir contenido favorable a personas trans”, se podría responder “bien, pongámoslo como caso de prueba”. El obstáculo decisivo es que a los políticos no les gusta quedar atados de esa manera
    También haría más fácil escribir leyes que reflejen la intención, y serviría para que los tribunales futuros evalúen la intención de la ley. Aunque la redacción literal aplicara a un adolescente de 15 años que envía una selfie, si la prueba deja claro que no era la intención, podría resultar absuelto. Será imposible por cientos de razones, pero se puede soñar

    • Para que este enfoque funcione, la intención legislativa real tendría que estar correctamente codificada, así que este caso quizá no se habría resuelto, y los legisladores tendrían que actuar de buena fe
      Es decir, no debería ser una forma de redactar leyes deliberadamente ambiguas para que tengan un alcance amplio y dejar que la gente las pelee en los tribunales
    • El 99% del trabajo está en encontrar casos límite, y en derecho lo más común es escribir explícitamente esos casos límite. Ese legislador probablemente volvió y agregó una cláusula como “que un menor envíe una foto de sí mismo no se considerará una infracción de esta disposición”
      La ley no necesita poder ejecutarse en una computadora. Trata de la intención y su interpretación, así que el conjunto de pruebas en sí mismo sería, en la práctica, parte de la ley; basta con incluirlo dentro de la ley
    • En teoría me gusta hasta cierto punto, pero creo que crear un “conjunto de pruebas” mejor que el sistema judicial real es literalmente 100% imposible
    • Las pruebas legales estarían bien, pero probablemente habría que “evaluarlas” mediante el mismo mecanismo que las aplica. Es decir, los tribunales
      Personalmente, me conformaría con que cualquier país adjuntara a cada ley su exposición de motivos. Si fuera posible, también estaría bien agregar indicadores clave de desempeño para ver si funciona. Más adelante se podría reevaluar si la ley realmente está funcionando, si tiene efectos contraproducentes o si sus principales casos de aplicación difieren de las razones por las que se introdujo originalmente
    • Es excelente que el legislador haya estado lo bastante atento como para retirar el proyecto. Algunos estados, como Minnesota, parecen procesar activamente el sexting de menores
      [1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
  • En el libro Moving Mars (1993), de Greg Bear, aparece brevemente algo parecido con el nombre Legal Logic. Los humanos marcianos lo usan con ayuda de una IA al crear las leyes de una sociedad recién independizada
    Greg Bear fue un famoso autor de ciencia ficción que falleció hace menos de un año, y su obituario también se comentó aquí en aquel momento. Fue uno de los autores que más influyeron en mi adolescencia, así que recuerdo que, en particular, este elemento de Moving Mars estimuló mi imaginación, y me gustaría leer qué ofrece Catala
    [1] https://en.wikipedia.org/wiki/Greg_Bear
    [2] https://en.wikipedia.org/wiki/Moving_Mars
    [3] https://news.ycombinator.com/item?id=33679668
    [4] https://news.ycombinator.com/item?id=33675708

  • Hay un artículo que describe este lenguaje: https://hal.inria.fr/hal-03159939. También hay un resumen breve en video: https://youtu.be/OiaFTFSAa1I

  • A los programadores les gusta proponer que se use algo parecido a un “lenguaje de programación” para las leyes
    Pero eso pasa por alto que la ambigüedad, en cierto sentido, es una parte fundamentalmente importante del derecho. Porque el mundo mismo, en cierto sentido, es fundamentalmente ambiguo, y en otros sentidos se divide con claridad. Por supuesto, no toda clase de ambigüedad es deseable
    Sin embargo, creo que si “el código es la ley”, las formas de explotar vacíos legales empeorarían. Incluso muchas leyes deberían centrarse más en los valores que deben respetarse que en los detalles de implementación, y eso inevitablemente será menos claro y más ambiguo

    • De acuerdo. No creo que sea una mala idea, pero la noción de leyes perfectamente definidas y perfectamente aplicables me parece aterradora. Si todas las leyes que existen hoy pudieran aplicarse y vigilarse perfectamente, nuestras vidas serían completamente miserables
      No voy a debatir si esto es un problema de la ley o de su aplicación, pero en cualquier caso nuestra sociedad está construida sobre la ambigüedad y la aplicación desigual
    • No veo por qué proyectos como este tendrían que entrar en conflicto con la ambigüedad. Basta ver value.fair_market en la sección concepts [0]. Los abogados pueden discutir sobre su significado, pero las definiciones en competencia también pueden definirse como programas
      Estoy de acuerdo en que la atención sobre la ley debería centrarse en los resultados más que en los detalles de implementación. Para eso se necesitaría una forma de crear funciones de evaluación que midan los resultados de las nuevas leyes, y sistemas como Catala pueden ayudar a modelar los resultados esperados y a elegir entre proyectos de ley en competencia. Por ejemplo, si el resultado es “queremos reducir la contaminación”, la política podría ser “prohibir las industrias contaminantes” o “gravar las externalidades de la contaminación”; ambas producirían resultados complejos, así que sería mejor contar con análisis automatizado y mediciones empíricas
      [0] https://github.com/CatalaLang/catala#concepts
  • No estoy seguro de que haya un gran problema por resolver para que las computadoras realmente razonen sobre el texto legal. La parte compleja es sopesar la equidad, y eso sigue requiriendo humanos y abogados.

    • Exacto. Dicho eso, si se crea un algoritmo a partir de una tabla de tasas impositivas, la claridad puede ayudar, y a veces la redacción también parece ambigua. Probablemente también hagan falta muchísimos ejemplos. Es decir, se necesitan pruebas unitarias.
    • Veo una ventaja de este lenguaje: podría hacer mucho más fácil escribir programas que calculen impuestos y salarios. No sé qué más podría ofrecer.
      Me pregunto si hay legisladores, abogados o jueces que estén esperando esto, o si solo lo esperan los programadores.
    • Creo que querías decir “humanos, abogados y sobornos”.
      No confío mucho en nuestro sistema legal. No sé por qué preguntas.
  • Como hablante de catalán, el conflicto de nombres con el idioma del que habla el artículo me parece muy desafortunado.

    • Me da curiosidad por qué te parece desafortunado. Y me gusta tu nombre de usuario. Seguro que mucha gente habría adivinado que hablas catalán solo con verlo.
  • La elección del nombre es realmente desafortunada. Es parecido a ponerle a un lenguaje de programación “français”, “Deutsch” o “English”.
    Más abajo en el readme dice: “este lenguaje lleva el nombre de Pierre Catala”. Sugeriría cambiarlo mejor a PierreLang.

    • Dice: “este lenguaje lleva el nombre del profesor de derecho Pierre Catala, quien fue pionero del legaltech francés al crear Juris-Data, una base de datos informática de casos legales”.
      Como hablante nativo de catalán, el nombre me sorprendió bastante, pero si es un apellido común, tiene sentido.