18 votos

¿Cómo funcionan los verificadores de pruebas?

Estoy intentando comprender los conceptos y la teoría que hay detrás de algunos de los verificadores de pruebas más comunes, pero no estoy muy seguro de la naturaleza exacta y la construcción del tipo de sistemas o cálculos de prueba que utilizan. ¿Se basan esencialmente en lógicas de orden superior que utilizan la semántica de Henkin, o hay algo más? Según tengo entendido, extender la semántica de Henkin a la lógica de orden superior no hace que el sistema formal sea menos sólido, aunque no lo tengo demasiado claro.

Aunque principalmente busco una respuesta general con ejemplos útiles, aquí van algunas preguntas concretas:

  • ¿Cuál es exactamente el papel de la teoría de tipos en la creación de lógicas de orden superior? Lo mismo ocurre con la teoría de categorías/teoría de modelos, que creo que es una alternativa.
  • ¿Es la extensión a) de la deducción natural, b) del cálculo secuencial, o c) de algún otro sistema formal la mejor manera de crear lógicas de orden superior?
  • ¿Dónde entra el cálculo lambda tipado en la verificación de pruebas?
  • ¿Existen otros enfoques distintos de la lógica de orden superior para la verificación de pruebas?
  • ¿Cuáles son las limitaciones y deficiencias de los actuales sistemas de verificación de pruebas?

Las páginas de Wikipedia sobre programas de verificación de pruebas como Luz HOL Coq y Metamath dan alguna idea, pero estas páginas contienen información limitada o poco clara, y hay más bien pocos recursos específicos de alto nivel en otros lugares. Hay tantas variaciones en los sistemas/lógicas formales utilizados en la teoría de la prueba que no estoy seguro de cuáles son las ideas básicas de estos sistemas: qué es necesario u óptimo y qué está abierto a la experimentación.

Tal vez una buena forma de responder a esta pregunta, que yo agradecería, sería una breve guía (aunque con algunos detalles técnicos) sobre cómo generar un cálculo de pruebas completo (sistema de verificación de pruebas) desde cero. No obstante, cualquier otra información en forma de explicaciones y ejemplos también estaría muy bien.

22voto

Sekhat Puntos 2555
  • ¿Cuál es exactamente el papel de la teoría de tipos en la creación de lógicas de orden superior? Lo mismo ocurre con la teoría de categorías/teoría de modelos, que creo que es una alternativa.

No piense en la teoría de tipos, la lógica categorial y la teoría de modelos como alternativas unos a otros. Cada paso en la progresión olvida progresivamente más estructura, y si esa estructura es esencia o desorden depende del problema que se intente resolver. A grandes rasgos, los dos polos son la teoría de tipos y la teoría de modelos, que se centran en las pruebas y la demostrabilidad, respectivamente.

Para un teórico del modelo, dos proposiciones son iguales si tienen el mismo valor de comprobabilidad/verdad. Para un teórico del tipo, la igualabilidad significa que tenemos una prueba de la biimplicación, que obviamente no es lo mismo que las proposiciones sean iguales. (De hecho, incluso la noción correcta de equivalencia para las pruebas aún no está resuelta a satisfacción de los teóricos del tipo).

Los lógicos categóricos tienden a moverse entre estos dos polos; por un lado, artilugios como las doctrinas de Lawvere y los topoi son esencialmente teórico-modelos, ya que son modelos de demostrabilidad. Por otro lado, artilugios como las categorías cartesianas cerradas dan modelos de demostraciones, hasta $\beta\eta$ -equivalencia.

  • ¿Es la extensión a) de la deducción natural, b) del cálculo secuencial, o c) de algún otro sistema formal la mejor manera de crear lógicas de orden superior?

Depende de lo que haga. Si se está construyendo una herramienta informática, lo más adecuado es la deducción natural o el cálculo secuencial, porque ambos cálculos se ajustan a la práctica humana y ayudan a restringir la búsqueda de pruebas de forma útil para los ordenadores. Tiene sentido crear un sistema de cálculo secuencial o de deducción natural incluso si la teoría que se quiere utilizar (por ejemplo, la teoría de conjuntos) no se expresa normalmente en estos términos.

Por otra parte, la teoría de modelos ha tenido un éxito espectacular en las aplicaciones a las matemáticas, y esto se debe en parte a que porque no tiene una noción incorporada de sistema de pruebas, por lo que simplemente hay menos maquinaria que deba reinterpretarse antes de poder aplicarla a un problema matemático. (El uso correspondiente de la teoría de tipos está mucho menos desarrollado; los teóricos de la homotopía están en las primeras fases de convertir la teoría de tipos dependiente en matemáticas ordinarias).

  • ¿Dónde entra el cálculo lambda tipado en la verificación de pruebas?

Toda lógica intuicionista bien llevada tiene su correspondiente cálculo lambda tipado. Véase Sorensen and Urcyczyn's Conferencias sobre la correspondencia Curry-Howard para (muchos) más detalles.

  • ¿Existen otros enfoques distintos de la lógica de orden superior para la verificación de pruebas?

Sí y no. Si te interesan las matemáticas reales y serias, entonces no hay alternativa a HOL o a su equivalente moral (como la teoría de tipos dependientes o la teoría de conjuntos) porque las matemáticas tratan intrínsecamente con conceptos de orden superior.

Sin embargo, grandes partes de cualquier desarrollo no implican argumentos lógica o conceptualmente complejos: son sólo gestión de símbolos, que a menudo implican teorías decidibles. Esto suele ser automatizable, si los problemas en cuestión no se plantean en un lenguaje de orden superior. (A veces, como en el caso de la conjetura de Kepler, hay una forma artificial de plantear el problema en una teoría simple. Ésta es esencialmente la razón por la que la prueba de Hales depende tanto de los ordenadores: redujo muy cuidadosamente la conjetura de Kepler a una colección de enunciados comprobables por máquina sobre campos cerrados reales).

  • ¿Cuáles son las limitaciones y deficiencias de los actuales sistemas de verificación de pruebas?

La principal dificultad de estas herramientas es encontrar el equilibrio adecuado entre automatización y abstracción. Básicamente, cuanto más expresiva sea la lógica, más difícil será la búsqueda automatizada de pruebas, y más fácil y natural será definir teorías abstractas que puedan utilizarse en muchos contextos diferentes.

19voto

Bart B Puntos 147

Espero no llegar demasiado tarde para ayudar, pero....

Hasta donde yo sé, los verificadores de pruebas más utilizados en la formalización matemática seria son los sistemas HOL (HOL4, ProofPower HOL, HOL Light), Isabelle, Coq y Mizar. A diferencia de los otros, Isabelle puede configurarse con la lógica que soporte, pero las dos únicas lógicas con soporte significativo son HOL y ZF. La lógica HOL es clásica, de orden superior y polimórfica (pero no dependiente). Isabelle ZF es clásica, de primer orden y no tipada. La lógica de Coq es intuicionista, de orden superior y de tipado polimórfico y dependiente. La lógica de Mizar es clásica, de segundo orden y no tipada (creo). Todos estos sistemas, excepto Mizar, están implementados en el "estilo LCF", lo que significa que su solidez lógica depende sólo de un núcleo relativamente pequeño de código fuente.

Excepto Mizar, todos estos sistemas son de código abierto y están implementados en lenguajes de programación funcionales (por ejemplo, ML, Lisp, Haskell). Suponiendo que sepa algo de programación funcional, la mejor manera de comprenderlos concretamente es examinar su código fuente, pero esto le llevará mucho tiempo porque sus implementaciones son grandes, complicadas y están mal documentadas. Sin embargo, HOL Light (el principal sistema utilizado en el proyecto Flyspeck de Hale para formalizar la prueba de su conjetura de Kepler) es mucho más sencillo que el resto, aunque los comentarios del código fuente son bastante escasos.

El año pasado lancé un nuevo teorema HOL de código abierto, llamado HOL Zero. Implementa completamente la lógica HOL, pero es mucho más simple que los otros sistemas (sólo soporta la interacción básica, y está dirigido principalmente a la comprobación de pruebas importadas de otros sistemas). Me he esforzado mucho para que el código fuente y la interfaz de usuario sean lo más sencillos y fáciles de entender posible, y los comentarios del código fuente son muy claros y extensos. Y lo que es más importante, he escrito un glosario que explica toda la terminología técnica utilizada. Así que te recomiendo que eches un vistazo a HOL Zero si quieres ensuciarte las manos mirando el código fuente. Si quieres ejecutarlo realmente, requiere OCaml (un dialecto de ML) y un sistema operativo tipo Unix:

http://www.proof-technologies.com/holzero

En mi opinión, las principales limitaciones de los sistemas actuales son (por orden decreciente de importancia):

  1. Se tarda mucho tiempo en aprender a utilizarlas con destreza. Normalmente se tarda entre tres y seis meses, e incluso entonces siempre hay algo más que aprender.

  2. Incluso cuando se es bastante competente, es inevitable encontrarse de vez en cuando (quizá una vez al día) con situaciones exasperantes en las que lo que parece el paso más sencillo sobre el papel requiere una interacción desmesurada con el sistema (a veces 10 minutos, a veces horas).

  3. Cada uno de ellos tiene grandes lagunas en su biblioteca de teoría matemática establecida, por lo que utilizarlos para un trabajo serio implicará inevitablemente desarrollar mucha teoría de apoyo.

  4. Por lo general, el soporte para transferir pruebas de un sistema a otro es escaso.

  5. A la hora de mostrar los resultados, todos (excepto HOL Zero) adolecen de problemas que en ocasiones pueden inducir a error al usuario sobre lo que realmente se ha demostrado.

4voto

Robert Speicher Puntos 106

Usted pregunta cómo funcionan los verificadores de pruebas, pero parece que está haciendo una pregunta algo más precisa: ¿cómo funcionan los verificadores de pruebas? basadas en diversas lógicas de orden superior ¿Trabajar? Si sólo le interesa la lógica clásica de primer orden (o menos, por ejemplo, la lógica proposicional), no necesita preocuparse por las cuestiones de orden superior. (Hay advertencias importantes. Por ejemplo, la expresividad de la lógica de primer orden simple tiene límites que podrías considerar inoportunos para diversos fines, como su incapacidad para capturar, por ejemplo, la alcanzabilidad en un grafo). El sitio Sistema Mizar por ejemplo, se basa en la lógica clásica de primer orden más una teoría de conjuntos (bastante fuerte).

2voto

HoboBen Puntos 1361

No tengo una respuesta general, pero sí un ejemplo de un comprobador de pruebas que sea lo suficientemente pequeño. El documento adjunto debería facilitar la comprensión y dar una idea de cómo se diseñó el sistema de pruebas. Debo mencionar que no manejar las pruebas HO. Una característica interesante es que vuelca las obligaciones de prueba HO que esencialmente dicen "las reglas de cálculo que uso son sólidas". (Y la mayoría de esas obligaciones de prueba son manejadas por algunas tácticas en Coq automáticamente).

1voto

Gus Paul Puntos 430

Tú lo has dicho:

Las páginas de Wikipedia sobre bla bla bla dan alguna idea, pero estas páginas contienen información limitada o poco clara, y hay más bien pocos recursos específicos de alto nivel en otros lugares.

Wikipedia es genial para temas de los que no sabes nada, pero si realmente sabes algo, todo lo que ves es incoherencia, despiste y a veces, cuando hay suerte, errores reales.

En cuanto a los verificadores de pruebas reales, lo que ocurre es que cada verificador tiene una filosofía diferente y un mecanismo diferente detrás (no hay una base única que utilicen todos). Así que es difícil responder a tus preguntas (la respuesta en sí sería demasiado amplia).

Sin embargo, un comentario: la teoría de categorías en sí no es realmente una base para la verificación de pruebas. Definitivamente es un fundamento conceptual para las matemáticas en el sentido de que crea analogías (y analogías de analogías) -formalmente- entre diferentes dominios de las matemáticas. Sin embargo, existe una subdisciplina de la teoría de categorías llamada teoría de topos que pretende ser un fundamento alternativo (cuando "fundamento" se refiere a la demostrabilidad). No creo que exista un verificador basado en la teoría de los topos.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X