Me gustaría saber si ha habido algún trabajo que relacione el código legal con la complejidad. En particular, supongamos que tenemos el problema de decisión "Dado este libro de leyes y este conjunto particular de circunstancias, ¿es el acusado culpable?" ¿A qué clase de complejidad pertenece?
Hay resultados que han demostrado que el juego de cartas Magic: the Gathering es NP y Turing completo, ¿no deberían existir resultados similares para el código legal?
complexity-theory
np-complete
decision-problem
Björn Lindqvist
fuente
fuente
Respuestas:
Las leyes pueden incluir lenguaje arbitrario, y el lenguaje arbitrario puede expresar la lógica NP-completa. Entonces, en teoría, sería posible crear un NP completo o incluso una ley indecidible. Sin embargo, en la práctica, la gran mayoría de las leyes penales son simples árboles de decisión.
Tomemos, por ejemplo, la sección 187 (a) del código penal de California ("Asesinato en primer grado").
Esto se puede expresar como un conjunto simple de lógica booleana.
Ahora, por supuesto, hay muchas cosas que trivializo aquí, como "qué es la previsión maliciosa", "qué es un aborto terapéutico" y "cómo se determina la probabilidad de supervivencia de un embarazo". Pero estos también se pueden expresar como árboles de decisión booleanos similares.
Desde el punto de vista de la ingeniería de software, el sistema legal puede ser visto como una forma de Motor de Reglas de Negocio, siendo la ley su conjunto de reglas.
Eso significa que la mayoría de las leyes tienen una complejidad computacional de
c
. Si también tiene en cuenta el proceso de examen de evidencia que se requiere para determinar los valores de todas estas variables booleanas, entonces la complejidad se convierte enn
dónden
está la cantidad de evidencia que debe evaluarse.Sin embargo, a veces las leyes incluyen un lenguaje que no es decidible en absoluto y requiere un oráculo externo. Por ejemplo, cuando menciona conceptos como "duda razonable". ¿Qué es "razonable"? Eso lo decidirá un tribunal.
fuente
victim.survivalChance == 0 OR victim.mom.survivalChance < 0.5
no es una interpretación correcta de la ley; dice la leyvictim.mom.survivalChance == 0 OR victim.mom.survivalChance > 0 AND victim.mom.survivalChance < 0.5
, que se puede simplificar a justovictim.mom.survivalChance < 0.5
.x AND y AND z
perox OR y OR z
.Es indecidible porque un libro de leyes puede incluir lógica arbitraria. Un ejemplo tonto de ley de censura sería "es ilegal publicitar cualquier programa de computadora que no se detenga".
La razón por la que existen los resultados para MTG y son interesantes es porque tiene un conjunto fijo único de reglas (en su mayoría) inequívocas, a diferencia de la ley que siempre está cambiando, terriblemente localizada y sin fin ambigua.
fuente
Esta es una pregunta muy interesante.
La ley se encuentra en algún lugar entre el lenguaje cotidiano con sus reglas arbitrarias, en constante cambio y a menudo suaves, y el lenguaje de programación con sus reglas definidas y muy específicas.
Legalés en realidad define sus términos y, por lo tanto, muchas palabras (¡pero no todas!) Utilizadas en la ley realmente tienen significados precisos.
Sin embargo, la interpretación es donde su enfoque de presentar un caso a un sistema lógico y obtener un resultado fallará. La ley es una definición genérica que debe adaptarse al caso específico en cuestión. A menudo, este es un proceso trivial y directo, pero no hay garantía de que lo sea y no hay una forma no trivial de definir el límite.
Un buen ejemplo es la defensa propia. En la mayoría de los sistemas legales, puede lastimar legalmente a otra persona siempre que actúe en defensa propia. Sin embargo, la redacción es explícitamente sensible al contexto. Por ejemplo, el derecho penal británico escribe:
La jurisprudencia define lo que es "razonable" en casos específicos , pero no hay una definición general en los libros. También hay jurisprudencia que aclara qué significa exactamente "prevención del delito". Dado que, por definición, aún no se ha producido un delito, mucho menos que un tribunal haya decidido que la acción fue, de hecho, un delito, una creencia razonable es suficiente en este caso particular, ¡pero eso no está escrito en la ley!
Para crear un tomador de decisiones digital sobre la ley, tendría que alimentarlo no solo la ley en sí, sino también toda la jurisprudencia, mucha comprensión del lenguaje natural y muchas reglas sobre cómo aplicar todo ese conocimiento, porque a veces la jurisprudencia es sólida, a veces se puede doblar (especialmente si es antigua, ya que las interpretaciones cambian con el tiempo).
Y finalmente, la ley cambia y se adapta, no solo en el libro, sino también en sus interpretaciones. Hay muchos ejemplos famosos de tribunales superiores que anulan su propia decisión de 20 años. Muy a menudo, tales desafíos a la jurisprudencia anterior suceden exactamente porque un juez decidió ir en contra de esas leyes establecidas y preferiría correr el riesgo de ser anulado en el tribunal superior que pasar una decisión que no respalda. Me pregunto cómo modelarías esta habilidad en un sistema NP-complete.
Calcular la complejidad de un sistema requiere que comprendamos las entradas y salidas. La ley, sin embargo, es un sistema abierto. Literalmente, cualquier cosa en su entorno puede influir en él, especialmente los cambios en la sociedad y la cultura. La mayoría de los países tienen leyes en los libros que rara vez se aplican porque la sociedad ha cambiado, pero el proceso de elaboración de leyes va a la zaga. Las leyes contra la homosexualidad son un ejemplo actual. O la sentencia de muerte, que en la mayoría de los países no se había aplicado durante años o décadas antes de que fuera eliminada de los libros de leyes. Y no porque no haya casos en los que podría haberse aplicado, sino simplemente porque los jueces no lo aplicaron a pesar de tener la opción.
Estos factores ambientales hacen que una estimación de complejidad sea casi imposible, porque no podemos enumerarlos en una lista finita a menos que usemos todos los cuantificadores (por ejemplo, "todo tipo de ..." o "todo el ...")
fuente
La completitud de NP, como con otras clases de complejidad, tiene que ver con problemas que toman una entrada de tamaño variable, cuyo tamaño denotamos por n . En particular:
Un problema es NP si es posible determinar si alguna solución propuesta es realmente una solución con polinomio de tiempo de ejecución en n .
Un problema es NP completo si es NP y, además, todos los problemas de NP pueden reducirse mediante un proceso de reducción con polinomio de tiempo de ejecución en n .
En el problema que propones, a saber
No estoy seguro de lo que n debe ser. Parece que las entradas aquí son el "conjunto de circunstancias" y el nombre del acusado. Solo el primero podría tener una longitud variable, pero entonces, ¿qué queremos decir con "conjunto de circunstancias"? ¿Acabamos de alimentar un número arbitrario de hechos arbitrarios como "el acusado tiene medias moradas" y "el juez comió un sándwich hoy" o qué? Además, ¿existen limitaciones en estas circunstancias, o podemos alimentarnos en una "circunstancia" como "el barbero de Sevilla afeita precisamente a los barberos que no se afeitan"?
No creo que esta pregunta esté bien planteada, ni veo ninguna forma obvia de hacerla bien.
fuente
Creo que lo que falta en las excelentes respuestas hasta ahora es que la teoría de la computación asume datos de entrada conocidos, ciertos, mientras que la legislación opera en un campo donde los hechos son generalmente inciertos y confusos. El derecho penal, por ejemplo, se refiere a la "intención" o "estado mental" de un acusado, que nunca se puede conocer con certeza. Los tribunales de divorcio tienen que decidir si un matrimonio se ha "roto irremediablemente". Nunca puede haber un algoritmo para decidir esa pregunta.
fuente
Si bien algunas respuestas dicen que es indecidible, supongo que no es para lo que son las leyes, ya que no son exigibles.
Si está restringido de alguna manera que lo hace siempre decidible, probablemente no tenga mucho sentido hablar sobre la complejidad real. Esto se debe a que las entradas de las leyes como funciones generalmente no son definiciones de eventos en la ley, como en un juego de cartas, sino evidencias de que los eventos son legales o no.
Podría haber arbitrariamente muchas evidencias sobre un solo evento. Para un evento, no hay una longitud de entrada objetiva que permita definir la complejidad. Y para un conjunto dado de evidencias, aunque hay una longitud de entrada, las leyes generalmente no especifican que alguien debe tener una conclusión definitiva. Podrían, y generalmente prefieren tratar de recopilar más evidencias, incluso si la respuesta pudiera deducirse teóricamente de una manera difícil. Y un sospechoso podría admitir algo de una manera desconcertante para aumentar la complejidad artificialmente si uno tiene que trabajar sin evidencias.
Habría más problemas si la criptografía está involucrada. Teóricamente, podrían revertir un algoritmo de cifrado fuerte si pudieran calcular durante mucho tiempo, pero pueden romper la confianza de un algoritmo de firma para que no se pueda usar como evidencia al mismo tiempo.
fuente
Los miembros del jurado en última instancia emiten veredictos basados en la ley aplicable dada por los jueces al jurado a seguir y los hechos según lo determine el jurado usando los factores en las instrucciones del jurado. Especialmente la credibilidad de los testigos ... a quién creer. No reducible a un algoritmo.
fuente