stringtranslate.com

ACL2

ACL2 ( A Computational Logic for Applicative Common Lisp ) es un sistema de software que consta de un lenguaje de programación , una teoría extensible en lógica de primer orden y un demostrador automático de teoremas . ACL2 está diseñado para admitir el razonamiento automatizado en teorías lógicas inductivas, principalmente para la verificación de software y hardware . El lenguaje de entrada y la implementación de ACL2 están escritos en Common Lisp . ACL2 es un software libre y de código abierto .

Descripción general

El lenguaje de programación ACL2 es una variante aplicativa ( sin efectos secundarios ) de Common Lisp. ACL2 no tiene tipos. Todas las funciones de ACL2 son totales  , es decir, cada función asigna cada objeto del universo ACL2 a otro objeto de su universo.

La teoría básica de ACL2 axiomatiza la semántica de su lenguaje de programación y sus funciones integradas. Las definiciones de usuario en el lenguaje de programación que satisfacen un principio de definición extienden la teoría de una manera que mantiene la coherencia lógica de la teoría .

El núcleo del demostrador de teoremas de ACL2 se basa en la reescritura de términos , y este núcleo es extensible en el sentido de que los teoremas descubiertos por el usuario se pueden utilizar como técnicas de prueba ad hoc para conjeturas posteriores .

ACL2 está pensado para ser una versión "de nivel industrial" del demostrador de teoremas de Boyer-Moore, NQTHM . Con este objetivo, ACL2 tiene muchas características que respaldan la ingeniería limpia de teorías matemáticas y computacionales interesantes. ACL2 también obtiene eficiencia al estar construido sobre Common Lisp; por ejemplo, la misma especificación que es la base para la verificación inductiva se puede compilar y ejecutar de forma nativa .

En 2005, los autores de la familia de probadores Boyer-Moore, que incluye ACL2, recibieron el premio ACM Software System Award "por ser pioneros y diseñar un probador de teoremas sumamente eficaz (...) como herramienta de métodos formales para verificar hardware y software críticos para la seguridad". [2] [3]

Pruebas

ACL2 ha tenido numerosas aplicaciones industriales. [4] [5] En 1995, J Strother Moore , Matt Kaufmann y Tom Lynch utilizaron ACL2 para demostrar la corrección de la operación de división de punto flotante del microprocesador AMD K5 a raíz del error FDIV de Pentium . [6]

Los usuarios industriales de ACL2 incluyen AMD, Arm, Centaur Technology, IBM, Intel, Oracle y Collins Aerospace.

Véase también

Referencias

  1. ^ "XDOC — Nota-1-7". www.cs.utexas.edu .
  2. ^ "ACM: Comunicado de prensa, 15 de marzo de 2006". 1 de agosto de 2008. Archivado desde el original el 1 de agosto de 2008.
  3. ^ "Software System Award". Premios ACM . Association for Computing Machinery . Archivado desde el original el 2012-04-02 . Consultado el 14 de enero de 2012 .
  4. ^ "Bibliografía anotada de ACL2". www.cs.utexas.edu .
  5. ^ "Talleres ACL2 y seminario UT ACL2". www.cs.utexas.edu .
  6. ^ Moore, J. Strother; Lynch, Tom; Kaufmann, Matt (1996). "Una prueba mecánicamente comprobada de la corrección del núcleo del algoritmo de división de punto flotante AMD5K86". IEEE Transactions on Computers . 47 . CiteSeerX 10.1.1.43.3309 . 

Enlaces externos