Razonamiento asistido por ordenador: estudios de caso con ACL2

Translation into Spanish of an interesting article by J. Strother Moore, Emeritus Professor in Computing Theory in the University of Texas, and co-author with Matt Kaufmann of the ACL2 theorem prover.

acl2softwarespanish translation
4 April, 2022 Assisted reasoning with ACL2
4 April, 2022 Assisted reasoning with ACL2

A free translation by Chema, a Spanish translator working for Ibidem Group, a Spain-based language service provider (LSP)

An original text written by J Strother Moore, originally published in
https://www.cs.utexas.edu/users/moore/publications/acl2-books/acs/index.html

* * *

Descripci贸n

Este libro muestra c贸mo el sistema de razonamiento asistido por ordenador ACL2 puede utilizarse de forma productiva e innovadora para dise帽ar, construir y mantener sistemas de hardware y software. Se incluyen aqu铆 art铆culos t茅cnicos escritos por veinti煤n colaboradores que informan sobre estudios de caso, siendo algunos proyectos industriales `”viables”. Tratan de una amplia variedad de ideas, como la aritm茅tica de punto flotante, la simulaci贸n de microprocesadores, la comprobaci贸n de modelos, la evaluaci贸n simb贸lica de trayectorias, la compilaci贸n, la comprobaci贸n de pruebas, el an谩lisis real y otros.

El libro se dirige a dos p煤blicos: los que buscan formas innovadoras de dise帽ar, construir y mantener sistemas de hardware y software de forma m谩s r谩pida y fiable, y los que desean aprender a hacerlo. El primer grupo incluye a los gestores de proyectos y a los estudiantes de cursos orientados a la investigaci贸n. El segundo, incluye a los estudiantes y profesionales que buscan enfoques profundos de la ingenier铆a de hardware y software o m茅todos formales. El libro puede utilizarse en cursos de postgrado y de grado superior sobre ingenier铆a del software, m茅todos formales, dise帽o de hardware, teor铆a de la computaci贸n, inteligencia artificial y razonamiento automatizado.

El libro se divide en dos partes. La parte I comienza con una discusi贸n sobre el esfuerzo que supone el uso de ACL2. Tambi茅n contiene una breve introducci贸n a la l贸gica de ACL2 y a su mecanizaci贸n, que pretende dar al lector los antecedentes suficientes para leer los estudios de caso. En el libro complementario, Computer-Aided Reasoning: An Approach., se puede encontrar una introducci贸n m谩s completa al ACL2.

ACL2 es una versi贸n mejorada y ampliada de `Boyer-Moore theorem prover”, Nqthm, adaptada a Common Lisp. aplicativo. Los editores Kaufmann y Moore son los autores del sistema ACL2. (ACL2 puede obtenerse gratuitamente bajo los t茅rminos de la Licencia P煤blica General de GNU en la p谩gina web de ACL2, que incluye el c贸digo fuente, una extensa documentaci贸n en hipertexto adem谩s de muchos art铆culos sobre ACL2 y sus aplicaciones, visitas guiadas al sistema y listas de correo.

El coraz贸n del libro es la Parte II, donde se presentan los estudios de caso. Los estudios de caso cubren una amplia gama de aplicaciones, desde el hardware (por ejemplo, aritm茅tica de punto flotante, lenguajes de descripci贸n de hardware y an谩lisis simb贸lico de trayectorias) hasta el software (por ejemplo, b煤squeda de grafos, compilaci贸n y un algoritmo de comprobaci贸n de modelos) y m谩s all谩 (teor铆a de n煤meros y an谩lisis real). Todo ello se realiza en un 煤nico marco matem谩tico con soporte mec谩nico: ACL2.

La soluci贸n completa de cada estudio de caso est谩 disponible aqu铆. Por ejemplo, cuando decimos que uno de los estudios de caso formaliza un multiplicador en coma flotante y lo demuestra correctamente, queremos decir que no s贸lo puede leer una descripci贸n en ingl茅s del modelo y de c贸mo se demostr贸 que es correcto, sino que puede obtener todo el contenido formal del proyecto y reproducir las pruebas, si quieres, con tu copia de ACL2. As铆 pues, este libro es s贸lo el principio. Si realmente quieres aprender c贸mo demostrar que un multiplicador de punto flotante o un compilador son correctos, lee los art铆culos y luego obt茅n los scripts para reproducir las pruebas. Luego modif铆calos y experimenta.

Los estudios de caso contienen ejercicios cuyas soluciones est谩n en la web. Adem谩s, los scripts completos de ACL2 necesarios para formalizar los modelos y demostrar todas las propiedades discutidas est谩n en la Web. Si quieres dominar las t茅cnicas utilizadas para realizar un proyecto concreto, haz los ejercicios de los estudios de caso que se parezcan a tu proyecto.

Colaboradores

Esta es la lista de los colaboradores de este volumen junto con la instituci贸n a la que pertenecen:

Piergiorgio Bertoli IRST – Istituto per la Ricerca Scientifica e Tecnologica Povo, Italia
Dominique Borrione TIMA-UJF
Grenoble, Francia
John Cowles Departamento de Inform谩tica
Universidad de Wyoming
Laramie, Wyoming
Arthur Flatau Advanced Micro Devices, Inc.
Austin, Texas
Rub茅n Gamboa Logical Information Machines, Inc.
Austin, Texas
Philippe Georgelin TIMA-UJF
Grenoble, Francia
Wolfgang Goerigk Instituto de Inform谩tica y Matem谩tica Pr谩ctica
Universidad Cristiana de Austria de Kiel
Kiel, Alemania
David Greve Rockwell Collins
Centro de Tecnolog铆a AvanzadaCedar
Rapids, Iowa
David Hardin Ajile Systems, Inc.
Oakdale, Iowa
Warren A. Hunt, Jr. Laboratorio de investigaci贸n de IBM en
Austin (Texas)
Damir A. Jamsek Laboratorio de investigaci贸n de IBM en
Austin (Texas)
Matt Kaufmann Advanced Micro Devices, Inc.
Austin, Texas
Panagiotis Manolios Departamento de Ciencias Inform谩ticas
Universidad de Texas en Austin
Austin, Texas
William McCune Divisi贸n de Matem谩ticas y Ciencias de la Computaci贸n Laboratorio Nacional de
Argonne
Argonne, Illinois
J Strother Moore Departamento de Ciencias de la Computaci贸n
Universidad de Texas en Austin
Austin, Texas
Vanderlei Rodrigues TIMA-UJF
Grenoble, Francia
(en excedencia de la UFRGS,
Porto Alegre, Brasil)
David M. Russinoff Advanced Micro Devices, Inc.
Austin, Texas
Jun Sawada Departamento de Ciencias Inform谩ticas,
Universidad de Texas en Austin
Austin, Texas
Olga Shumsky Departamento de Ingenier铆a El茅ctrica e Inform谩tica
Universidad Northwestern
Evanston, Illinois
Paolo Traverso IRST – Istituto per la Ricerca Scientifica e Tecnologica
Povo, Italia
Matthew Wilding Rockwell Collins
Centro de Tecnolog铆a Avanzada
Cedar Rapids, Iowa

Material de apoyo para los estudios de estudios de caso, incluidas las soluciones a los ejercicios

Los autores de los estudios de caso han facilitado guiones completos para reproducir los resultados presentados. Este “material de apoyo” tambi茅n contiene las soluciones a los ejercicios de cada estudio de caso. Hay un directorio separado para el material de apoyo de cada caso pr谩ctico, que se encuentra en workshops/1999, que puedes descargar de GitHub. Hay un archivo README de nivel superior, y cada subdirectorio contiene un archivo README que explica su contenido.

5. An Exercise in Graph Theory (J Moore; directorio graph/)
El cap铆tulo formaliza y demuestra la correcci贸n de varios algoritmos sencillos para determinar si existe un camino entre dos nodos de un grafo dirigido finito.

6.
Modular Proof: The Fundamental Theorem of Calculus (Matt Kaufmann; directory calculus/)
El cap铆tulo presenta una metodolog铆a de demostraci贸n modular descendente y la utiliza para formalizar y demostrar el Teorema Fundamental del C谩lculo. La estrategia modular funciona tanto para ACL2 como para “ACL2(r)” (lee el cap铆tulo 18); el Teorema Fundamental se demuestra con ACL2(r).

7.
Mu-Calculus Model-Checking (Panagiotis Manolios; directorio mu-calculus/)
El cap铆tulo presenta un desarrollo formal de la sintaxis y la sem谩ntica para el Mu-calculus, un verificador de modelos para 茅ste en ACL2, y una discusi贸n de la traducci贸n de otras l贸gicas temporales al Mu-calculus. Se demuestra que el verificador de modelos es correcto.

8. High-Speed, Analyzable Simulators (David Greve, Matthew Wilding, David Hardin; directory simulator/)

Los modelos de simulaci贸n de alta velocidad se desarrollan habitualmente durante el dise帽o de sistemas de hardware complejos para predecir el rendimiento, detectar fallos de dise帽o y permitir el codise帽o de hardware y software. Escribir un modelo ejecutable de este tipo en ACL2 aporta la ventaja adicional del an谩lisis formal; sin embargo, hay que tener mucho cuidado para construir un modelo ACL2 que sea r谩pido y analizable. En este cap铆tulo, se describen t茅cnicas para la construcci贸n de simuladores analizables formalmente de alta velocidad en ACL2. Se demuestra su utilidad en un modelo de procesador sencillo.

9. Verification of a Simple Pipelined Machine Model (Jun Sawada; directory pipeline/)
Se define un modelo ACL2 de una m谩quina canalizada de tres etapas, junto con un modelo de la m谩quina secuencial correspondiente. A continuaci贸n se presenta una prueba de la equivalencia entre ambas m谩quinas. Y lo que es m谩s importante, el m茅todo de descomposici贸n de la prueba se aplica a arquitecturas de canalizaci贸n mucho m谩s complicadas.

10. The DE Language (Warren Hunt, Jr.; directorio de-hdl/)
El lenguaje DE es un lenguaje de descripci贸n orientado a las ocurrencias que permite la definici贸n jer谩rquica de m谩quinas de estado finito al estilo de un lenguaje de descripci贸n de hardware. La sintaxis y la sem谩ntica del lenguaje est谩n formalizadas y la formalizaci贸n se utiliza para demostrar la correcci贸n de un circuito de hardware simple. Estos HDL formales se han utilizado para demostrar las propiedades de dise帽os mucho m谩s complejos.

11. Using Macros to Mimic VHDL聽 (Dominique Borrione, Philippe Georgelin, Vanderlei Rodrigues; directorio vhdl/)
El objetivo de este proyecto era formalizar un peque帽o subconjunto de comportamiento sintetizable de VHDL, manteniendo en lo posible el valor sint谩ctico de VHDL y facilitando la verificaci贸n mediante simulaci贸n simb贸lica y demostraci贸n de teoremas.

12. Symbolic Trajectory Evaluation (Damir A. Jamsek; directorio ste/)
La evaluaci贸n simb贸lica de trayectorias (STE) es una forma de comprobaci贸n de modelos basada fundamentalmente en la simulaci贸n simb贸lica. Este cap铆tulo presenta un tratamiento formal de STE, incluyendo pruebas ACL2 de los resultados presentados en el art铆culo de Seger y Joyce “”A Mathematically Precise Two-Level Formal Hardware Verification Methodology”.

13. RTL Verification : A Floating-Point Multiplier (David M. Russinoff, Arthur Flatau; directory multiplier/)
Este cap铆tulo describe un sistema de verificaci贸n mec谩nica para dise帽os representados en el lenguaje RTL de Advanced Micro Devices. El sistema consiste en un traductor a ACL2 y una metodolog铆a para verificar las propiedades de los programas resultantes utilizando el prover de ACL2. Se demuestra la correcci贸n de un simple multiplicador de punto flotante.

14. Design Verification of a Safety-Critical Embedded Verifier (Piergiorgio Bertoli, Paolo Traverso; directorio embedded/)
Este cap铆tulo muestra el uso de ACL2 para la verificaci贸n del dise帽o de una pieza de software de seguridad cr铆tica, el verificador embebido. El verificador embebido comprueba en l铆nea que cada ejecuci贸n de un traductor de seguridad cr铆tica es correcta. El traductor es un componente de un sistema de software utilizado por Union Switch and Signal para construir sistemas de control de trenes.

15. Compiler Verification Revisited (Wolfgang Goerigk; directorio compiler/)
Este estudio ilustra un hecho observado por Ken Thompson en su conferencia del Premio Turing: el c贸digo m谩quina de un compilador correcto puede ser alterado para contener un Caballo de Troya de manera que el compilador pase casi todas las pruebas, incluyendo la llamada “prueba de arranque” en la que compila su propio c贸digo fuente con resultados id茅nticos, y seguir siendo capaz de generar c贸digo “malo”. El compilador, la m谩quina de c贸digo objeto y los experimentos se formalizan en ACL2.

16. Ivy: A Preprocessor and Proof Checker for First-Order Logic (William McCune, Olga Shumsky; directory ivy/)
En este estudio de caso, se demuestra que un comprobador de pruebas para la l贸gica de primer orden es s贸lido para interpretaciones finitas. Adem谩s, el estudio muestra c贸mo se pueden combinar programas no ACL2 con funciones ACL2 de manera que se puedan demostrar propiedades 煤tiles sobre los programas compuestos. No se demuestra nada sobre los programas no ACL2. En cambio, los resultados de los programas no ACL2 se comprueban en tiempo de ejecuci贸n mediante funciones ACL2, y se demuestran las propiedades de estas funciones de comprobaci贸n.

17. Knuth’s Generalization of McCarthy’s 91 Function (John Cowles; directorio knuth-91/)
Este cap铆tulo trata de un reto de Donald Knuth para una “prueba por ordenador” de un teorema sobre su generalizaci贸n de la famosa “funci贸n 91” de John McCarthy. La generalizaci贸n tiene que ver con los n煤meros reales, y el caso de estudio utiliza el ACL2 para responder al desaf铆o de Knuth verificando mec谩nicamente resultados no s贸lo sobre el campo de todos los n煤meros reales, sino tambi茅n sobre cada subcampo de ese campo.

18. Continuity and Differentiability (Ruben Gamboa; directorio an谩lisis/)
Este cap铆tulo muestra c贸mo una versi贸n extendida de ACL2 (llamada ACL2(r)) y descrita puede ser utilizada para razonar sobre los n煤meros reales y complejos, utilizando un an谩lisis no est谩ndar. Describe algunas modificaciones de ACL2 que introducen los n煤meros reales y complejos irracionales en el sistema num茅rico de ACL2. A continuaci贸n, muestra c贸mo el ACL2 modificado puede demostrar teoremas cl谩sicos del an谩lisis, como los teoremas del valor intermedio y del valor medio.

Valora este art铆culo