stringtranslate.com

Isabelle (asistente de pruebas)

El demostrador de teoremas automatizado Isabelle [a] es un demostrador de teoremas de lógica de orden superior (HOL) , escrito en Standard ML y Scala . Como demostrador de teoremas de estilo LCF , se basa en un núcleo lógico pequeño (kernel) para aumentar la confiabilidad de las pruebas sin requerir objetos de prueba explícitos (aunque sí respaldarlos).

Isabelle está disponible dentro de un marco de sistema flexible que permite extensiones lógicamente seguras, que comprenden tanto teorías como implementaciones para la generación de código, documentación y soporte específico para una variedad de métodos formales . Puede verse como un IDE para métodos formales. En los últimos años, se ha recopilado una cantidad sustancial de teorías y extensiones de sistemas en el Archivo Isabelle de Pruebas Formales ( Isabelle AFP ) [2].

Isabelle fue nombrada por Lawrence Paulson en honor a la hija de Gérard Huet . [3]

El demostrador del teorema de Isabelle es software libre , publicado bajo la licencia BSD revisada .

Características

Isabelle es genérica: proporciona una metalógica (una teoría de tipos débil ), que se utiliza para codificar lógicas de objetos como la lógica de primer orden (FOL), la lógica de orden superior (HOL) o la teoría de conjuntos de Zermelo-Fraenkel (ZFC). La lógica de objetos más utilizada es Isabelle/HOL, aunque se completaron importantes desarrollos de la teoría de conjuntos en Isabelle/ZF. El principal método de prueba de Isabelle es una versión de orden superior de la resolución , basada en la unificación de orden superior .

Aunque es interactiva, Isabelle cuenta con herramientas de razonamiento automático eficientes, como un motor de reescritura de términos y un probador de tablas , varios procedimientos de decisión y, a través de la interfaz de automatización de pruebas Sledgehammer , solucionadores de teorías de módulo de satisfacibilidad externa (SMT) (incluido CVC4 ) y probadores automatizados de teoremas basados ​​en resolución (ATP), incluidos E , SPASS y Vampire (el método de prueba Metis [b] reconstruye pruebas de resolución generadas por estos ATP). [4] También cuenta con dos buscadores de modelos ( generadores de contraejemplos ): Nitpick [5] y Nunchaku . [6]

Isabelle incluye configuraciones regionales , que son módulos que estructuran pruebas extensas. Una configuración regional fija tipos, constantes y suposiciones dentro de un alcance específico [5] de modo que no tengan que repetirse para cada lema .

Isarrazonamiento semiautomático inteligible ») es el lenguaje de demostración formal de Isabelle. Está inspirado en el sistema Mizar . [5]

Ejemplo de prueba

Isabelle permite escribir pruebas en dos estilos diferentes, el procedimental y el declarativo . Las pruebas procedimentales especifican una serie de tácticas ( funciones/procedimientos de demostración de teoremas ) que se deben aplicar. Si bien reflejan el procedimiento que un matemático humano podría aplicar para demostrar un resultado, suelen ser difíciles de leer ya que no describen el resultado de estos pasos. Las pruebas declarativas (apoyadas por el lenguaje de prueba de Isabelle, Isar), por otro lado, especifican las operaciones matemáticas reales que se deben realizar y, por lo tanto, son más fáciles de leer y verificar para los humanos.

El estilo procedimental ha quedado obsoleto en versiones recientes de Isabelle. [ cita requerida ]

Por ejemplo, una prueba declarativa por contradicción en Isar de que la raíz cuadrada de dos no es racional se puede escribir de la siguiente manera.

teorema sqrt2_not_rational: "sqrt 2 ∉ ℚ" prueba sea ?x = "sqrt 2" suponga "?x ∈ ℚ" entonces obtenga mn :: nat donde sqrt_rat: "¦?x¦ = m / n" y lowest_terms: "coprime m n" por (regla Rats_abs_nat_div_natE) por lo tanto "m^2 = ?x^2 * n^2" por (auto simp add: power2_eq_square) por lo tanto eq: "m^2 = 2 * n^2" usando of_nat_eq_iff power2_eq_square por fastforce por lo tanto "2 dvd m^2" por simp por lo tanto "2 dvd m" por simp tiene "2 dvd n" prueba - de ‹2 dvd m› obtenga k donde "m = 2 * k" .. con ecuación tenemos "2 * n^2 = 2^2 * k^2" por simp por lo tanto "2 dvd n^2" por simp por lo tanto "2 dvd n" por simp qed con ‹2 dvd m› tenemos "2 dvd mcd m n" por (regla gcd_greatest) con lowest_terms tenemos "2 dvd 1" por simp por lo tanto Falso usando odd_one por blast qed                                

Aplicaciones

Isabelle se ha utilizado para ayudar a los métodos formales para la especificación, desarrollo y verificación de sistemas de software y hardware.

Isabelle se ha utilizado para formalizar numerosos teoremas de las matemáticas y la informática , como el teorema de completitud de Gödel , el teorema de Gödel sobre la consistencia del axioma de elección , el teorema de los números primos , la corrección de los protocolos de seguridad y las propiedades de la semántica de los lenguajes de programación . Muchas de las pruebas formales se mantienen, como se mencionó, en el Archivo de Pruebas Formales, que contiene (a partir de 2019) al menos 500 artículos con más de 2 millones de líneas de prueba en total. [7]

Larry Paulson mantiene una lista de proyectos de investigación que utilizan a Isabelle. [10]

Alternativas

Varios idiomas y sistemas ofrecen una funcionalidad similar:

Notas

Referencias

  1. ^ Paulson, LC (1986). "Deducción natural como resolución de orden superior". The Journal of Logic Programming . 3 (3): 237–258. arXiv : cs/9301104 . doi :10.1016/0743-1066(86)90015-4. S2CID  27085090.
  2. ^ Eberl, Manuel; Klein, Gerwin; Nipkow, Tobías; Paulson, Larry; Thiemann, René. «Archivo de Pruebas Formales» . Consultado el 1 de mayo de 2021 .
  3. ^ Gordon, Mike (16 de noviembre de 1994). "1.2 Historia". Isabelle y HOL . Cambridge AR Research (The Automated Reasoning Group). Archivado desde el original el 5 de marzo de 2017. Consultado el 28 de abril de 2016 .
  4. ^ Jasmin Christian Blanchette, Lukas Bulwahn, Tobias Nipkow, "Prueba y refutación automáticas en Isabelle/HOL", en: Cesare Tinelli, Viorica Sofronie-Stokkermans (eds.), Simposio internacional sobre fronteras de sistemas de combinación – FroCoS 2011, Springer, 2011.
  5. ^ abc Jasmin Christian Blanchette, Mathias Fleury, Peter Lammich y Christoph Weidenbach, "Un marco de resolución SAT verificado con aprendizaje, olvido, reinicio e incrementalidad", Journal of Automated Reasoning 61 :333–365 (2018).
  6. ^ Andrew Reynolds, Jasmin Christian Blanchette, Simon Cruanes, Cesare Tinelli, "Búsqueda de modelos para funciones recursivas en SMT", en: Nicola Olivetti, Ashish Tiwari (eds.), 8ª Conferencia conjunta internacional sobre razonamiento automatizado, Springer, 2016.
  7. ^ Eberl, Manuel; Klein, Gerwin; Nipkow, Tobías; Paulson, Larry; Thiemann, René. «Archivo de Pruebas Formales» . Consultado el 22 de octubre de 2019 .
  8. ^ Klein, Gerwin; Elphinstone, Kevin; Heiser, Gernot; Andronick, June; Cock, David; Derrin, Philip; Elkaduwe, Dhammika; Engelhardt, Kai; Kolanski, Rafal; Norrish, Michael; Sewell, Thomas; Tuch, Harvey; Winwood, Simon (octubre de 2009). "seL4: verificación formal de un núcleo de SO" (PDF) . 22.º Simposio ACM sobre principios de sistemas operativos . Big Sky, Montana, EE. UU., págs. 207–200.
  9. ^ Strniša, Rok; Parkinson, Matthew (7 de febrero de 2011). "Lightweight Java". Archivo de pruebas formales (edición de febrero de 2011). ISSN  2150-914X . Consultado el 25 de noviembre de 2019 .
  10. ^ "Proyectos - Wiki de la comunidad Isabelle".

Lectura adicional

Enlaces externos