Z3, un solucionador de teorías de módulos de satisfacción (SMT) de vanguardia desarrollado por Microsoft Research, admite una amplia gama de teorías que son cruciales para la verificación y el análisis del software. Aquí hay algunos ejemplos de las teorías que soporta Z3:
- Aritmética: esto incluye tanto entero como aritmética real, lo que permite que Z3 resuelva ecuaciones que involucran números.
-Vectores de bits de tamaño fijo: útil para modelar circuitos digitales y datos binarios, estos son vectores de bits con una longitud fija.
- Matrices extensionales: las matrices se tratan como funciones de índices a valores, lo que permite a Z3 razonar sobre las estructuras de datos.
- Tipos de datos: Z3 admite razonamiento sobre estructuras de datos complejas, como listas, árboles y registros.
- Funciones no interpretadas: estas son funciones cuyo comportamiento no está definido, útil para abstraer los detalles de implementación.
- Cuantificadores: Z3 puede manejar cuantificadores existenciales y universales, lo que le permite razonar sobre propiedades que se aplican a todos o algunos elementos de un dominio.
Además, Z3 se puede extender o usar junto con otras teorías, como la cardinalidad y las desigualdades pseudo-booleanas, que son útiles en problemas combinatorios. También admite codificación y axiomatización de teorías personalizadas, lo que lo hace versátil para varias aplicaciones en verificación de software y métodos formales [3] [4] [9] [10].
Citas:[1] https://theory.stanford.edu/~nikolaj/programmingz3.html
[2] https://specs.openstack.org/openstack/congresresspecs/specs/rocky/alternative-ingine-z3.html
[3] https://en.wikipedia.org/wiki/z3_theorem_prover
[4] https://ceur-s.org/vol-418/paper10.pdf
[5] https://jfmc.github.io/z3-play/
[6] https://www21.in.tum.de/~boehmes/proprec.pdf
[7] https://microsoft.github.io/z3guide/docs/logic/intro/
[8] https://stackoverflow.com/questions/73789804/theory-of-array-in-z3-1-model-is-difficult-to-arderstand-2-do-not-know-ho-ho-ho
[9] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/nbjorner-aplas1.pdf
[10] http://theory.stanford.edu/~nikolaj/z3navigate.html