En un hilo sin relación de Sam Nead me ha intrigado por mencionar un formalizado la prueba de la Jordania de la curva de teorema. Luego encontré que hay al menos dos, en dos sistemas diferentes. Esto es todo un logro, pero es de ningún uso para un matemático como yo? (No, esto no es lo que yo estoy pidiendo, la pregunta es en el final).
Me gustaría confiar en los teoremas que yo uso. Para este fin, puedo leer una prueba a mí mismo (de la mejor forma, pero a veces difícil de hacer) o creen expertos (un camino resbaladizo). Si yo sabía muy poco acerca de la topología, pero ocasionalmente, es necesario el teorema de Jordan, una máquina verificado la prueba me podría dar una mejor opción (e incluso si estoy dispuesto a confiar en los expertos, podría asegurarse de que no hay suposiciones ocultas evidente para los expertos, pero desconocido para mí).
Pero, ¿cómo asegurarse de que una máquina verificado la prueba correctamente? La verificación de programa es demasiado complejo para ser de confianza. Una solución es, por supuesto, que este programa inteligente genera un largo, ilegible prueba de que puede ser verificado por un tonto programa (tan tonto que un programador amateur podría escribir o comprobar). Me refiero a un programa que realiza sólo primitiva de la sintaxis de las operaciones como "plug afirmaciones 15 y 28 en el esquema 9". Este "tonto" de la parte debe ser independiente de los "inteligentes" de parte.
Dado un sistema, pude comprobar los axiomas, las definiciones y la declaración del teorema, alimentar a los mudos programa (cuyo funcionamiento se que puedo comprender) con estas formulaciones y el tiempo de prueba y ver si tiene éxito. Que me convencen de que la prueba es de hecho verificado.
Sin embargo no encontré rastros de este "tonto" parte del sistema. Y entiendo que el diseño de uno puede ser duro. Porque el lenguaje utilizado por el sistema debe ser fácil de usar (por lo que un ser humano puede comprobar que las definiciones son correctas) y usar el ordenador (para que un tonto programa puede analizar). Y las definiciones deben ser elegidos con cuidado - no quiero cavar a través de una construcción particular de los reales de racionales para asegurarse de que este es, de hecho, los reales, que yo sepa.
Lo siento por esta filosofía, aquí está la pregunta en el pasado. Hay un "tonto" sistema alrededor? Si sí, ¿formalización de los proyectos de uso? Si no, reconocen la necesidad y poner el esfuerzo en su desarrollo? O tienen otros medios para hacer que sus sistemas de fiar?
ACTUALIZACIÓN: Gracias a todos por respuestas interesantes. Permítanme aclarar que el enfoque principal es la interoperabilidad con un humano matemático (que no es necesariamente un experto en lógica). Parece que esto está cerca de la interoperabilidad entre sistemas - si formales de los lenguajes aceptados por los básicos a los inspectores de hecho simple, es que debe ser fácil de traducir automáticamente entre ellos.
Por ejemplo, supongamos que uno quiere permanecer dentro de la lógica simbólica se basa en simples sustituciones y los axiomas de la lógica libro. Parece fácil escribir estas lógicas de los axiomas más ZF axiomas, propiedades básicas (axiomas) de los reales y el avión, algunas de las definiciones de la topología, y, finalmente, la declaración de la Jordania de la curva de teorema. Si la sintaxis es razonable, no debe ser fácil escribir un programa que verifica que otra secuencia de bytes que representa una deducción del teorema de la lista de axiomas. Puede, como los sistemas de Mizar, Coq, etc, generar datos de entrada para un programa de este tipo? Pueden producir pruebas verificables por los núcleos de otros sistemas?