Z3 , también conocido como Z3 Theorem Prover , es un solucionador de satisfacibilidad módulo teorías (SMT) desarrollado por Microsoft . [ 2 ]
Descripción general
Z3 fue desarrollado en el grupo de Investigación en Ingeniería de Software (RiSE) de Microsoft Research Redmond y está diseñado para resolver problemas que surgen en la verificación de software y el análisis de programas . Z3 admite aritmética, vectores de bits de tamaño fijo, matrices extensionales, tipos de datos, funciones no interpretadas y cuantificadores . Sus principales aplicaciones son la verificación estática extendida , la generación de casos de prueba y la abstracción de predicados .
Z3 se publicó como código abierto a principios de 2015. [ 3 ] El código fuente tiene licencia MIT y está alojado en GitHub . [ 4 ] El solucionador se puede compilar usando Visual Studio , un makefile o usando CMake y se ejecuta en Windows , FreeBSD , Linux y macOS .
El formato de entrada predeterminado para Z3 es SMTLIB2 . También cuenta con enlaces compatibles oficialmente para varios lenguajes de programación , incluidos C , C++ , Python , .NET , Java y OCaml . [ 5 ]
Ejemplos
Lógica proposicional y de predicados
En este ejemplo, las aserciones de lógica proposicional se verifican utilizando funciones para representar las proposiciones a y b. El siguiente script Z3 verifica si:
(declarar-fun a () Bool) (declarar-fun b () Bool) (afirmar (no (= (no (y ab)) (o (no a)(no b))))) (verificación-sábado)
Resultado:
insatisfecho
Nótese que el script afirma la negación de la proposición de interés. El resultado insatisfacible significa que la proposición negada no es satisfacible, lo que demuestra el resultado deseado ( ley de De Morgan ).
Resolver ecuaciones
El siguiente script resuelve las dos ecuaciones dadas, encontrando valores adecuados para las variables a y b:
(declarar-const a Int) (declarar-const b Int) (afirmar (= (+ ab) 20)) (afirmar (= (+ a (* 2 b)) 10)) (verificación-sábado) (obtener-modelo)
Resultado:
se sentó (modelo (define-fun b () Int -10) (define-fun a () Int 30) )
Premios
En 2015, Z3 recibió el premio Programming Languages Software Award de ACM SIGPLAN . [ 6 ] [ 7 ] En 2018, Z3 recibió el premio Test of Time Award de las European Joint Conferences on Theory and Practice of Software (ETAPS). [ 8 ] Los investigadores de Microsoft Nikolaj Bjørner y Leonardo de Moura recibieron el premio Herbrand 2019 por sus destacadas contribuciones al razonamiento automatizado en reconocimiento a su trabajo en el avance de la demostración de teoremas con Z3. [ 9 ] [ 10 ]
Véase también
Referencias
- ↑ "Versión 5.0.0" . 17 de julio de 2026. Consultado el 17 de julio de 2026 .
- ↑ "Uso del solucionador SMT Z3" (PDF) . Archivado del original (PDF) el 17/11/2020 . Consultado el 01/12/2019 .
- ↑ "Cronología de Visual Studio de Microsoft y Z3 Theorem Prover, Google Cloud Launcher, Fresco de Facebook: resumen de noticias de SD Times: 27 de marzo de 2015" . 27 de marzo de 2015.
- ↑ "GitHub - Z3Prover/z3: El demostrador de teoremas Z3" . 1 de diciembre de 2019 – vía GitHub.
- ↑ Bjørner, Nikolaj; de Moura, Leonardo; Nachmanson, Lev; Wintersteiger, Christoph (2019). "Programming Z3" . Programming Z3 . Archivado del original el 9 de febrero de 2023. Recuperado el 21 de mayo de 2023 .
- ↑ "Premio de Software de Lenguajes de Programación" . www.sigplan.org .
- ↑ El demostrador de teoremas Z3 de Microsoft gana un premio
- ↑ "Premio ETAPS 2018 a la trayectoria" . Archivado del original el 8 de agosto de 2020. Consultado el 21 de diciembre de 2019 .
- ↑ La magia interna detrás del demostrador de teoremas Z3 - Microsoft Research
- ↑ Premio Herbrand
Lecturas adicionales
- Leonardo De Moura; Nikolaj Bjørner (2008). "Z3: un solucionador SMT eficiente". Herramientas y algoritmos para la construcción y el análisis de sistemas . 4963 : 337–340 .
- La magia interna detrás del demostrador de teoremas Z3
Enlaces externos
- Sitio web oficial
- Parque infantil oficial
- Software libre programado en C++
- Software gratuito de Microsoft
- Investigación de Microsoft
- Solucionadores de satisfacibilidad módulo teorías
- Software que utiliza la licencia MIT.
- Software de 2012