Articulo de referencia

Satisfacibilidad módulo teorías

En informática y lógica matemática , la satisfacibilidad módulo teorías ( SMT ) es el problema de determinar si una fórmula matemática es satisfacible . Generaliza el problema d...

En informática y lógica matemática , la satisfacibilidad módulo teorías ( SMT ) es el problema de determinar si una fórmula matemática es satisfacible . Generaliza el problema de satisfacibilidad booleana (SAT) a fórmulas más complejas que involucran números reales , enteros y/o diversas estructuras de datos como listas , matrices , vectores de bits y cadenas . El nombre deriva del hecho de que estas expresiones se interpretan dentro ("módulo") de una teoría formal determinada en lógica de primer orden con igualdad (que a menudo no permite cuantificadores ). Los solucionadores de SMT son herramientas que buscan resolver el problema SMT para un subconjunto práctico de entradas. Solucionadores de SMT como Z3 y cvc5 se han utilizado como un componente básico para una amplia gama de aplicaciones en informática, incluyendo la demostración automática de teoremas , el análisis de programas , la verificación de programas y las pruebas de software .

Dado que la satisfacibilidad booleana ya es NP-completa , el problema SMT suele ser NP-difícil , y para muchas teorías es indecidible . Los investigadores estudian qué teorías o subconjuntos de teorías dan lugar a un problema SMT decidible y la complejidad computacional de los casos decidibles. Los procedimientos de decisión resultantes se implementan a menudo directamente en solucionadores SMT; véase, por ejemplo, la decidibilidad de la aritmética de Presburger . SMT puede considerarse un problema de satisfacción de restricciones y, por lo tanto, un enfoque formalizado para la programación con restricciones .

Terminología y ejemplos

Formalmente hablando, una instancia de SMT es una fórmula en lógica de primer orden , donde algunos símbolos de función y predicado tienen interpretaciones adicionales, y SMT es el problema de determinar si dicha fórmula es satisfacible. En otras palabras, imagine una instancia del problema de satisfacibilidad booleana (SAT) en la que algunas de las variables binarias se reemplazan por predicados sobre un conjunto adecuado de variables no binarias. Un predicado es una función con valor binario de variables no binarias. Ejemplos de predicados incluyen desigualdades lineales (por ejemplo,3incógnita+2yz4{\displaystyle 3x+2y-z\geq 4}) o igualdades que involucran términos no interpretados y símbolos de función (por ejemplo,F(F(,v),v)=F(,v){\displaystyle f(f(u,v),v)=f(u,v)}dóndeF{\displaystyle f}es alguna función no especificada de dos argumentos). Estos predicados se clasifican según la teoría asignada. Por ejemplo, las desigualdades lineales sobre variables reales se evalúan utilizando las reglas de la teoría de la aritmética lineal real , mientras que los predicados que involucran términos no interpretados y símbolos de función se evalúan utilizando las reglas de la teoría de funciones no interpretadas con igualdad (a veces denominada teoría vacía ). Otras teorías incluyen las teorías de arreglos y estructuras de listas (útiles para modelar y verificar programas informáticos ) y la teoría de vectores de bits (útil para modelar y verificar diseños de hardware ). También son posibles subteorías: por ejemplo, la lógica de diferencias es una subteoría de la aritmética lineal en la que cada desigualdad está restringida a tener la formaincógnitay>do{\displaystyle xy>c}para variablesincógnita{\displaystyle x}yy{\displaystyle y}y constantedo{\displaystyle c}.

Los ejemplos anteriores muestran el uso de la aritmética lineal entera sobre desigualdades. Otros ejemplos incluyen:

  • Satisfacibilidad: Determinar siincógnita(y¬z){\displaystyle x\vee (y\wedge \neg z)}es satisfactorio.
  • Acceso a la matriz: Encuentra un valor para la matriz A tal que A [0]  =  5.
  • Aritmética de vectores de bits: Determinar si x e y son números de 3 bits distintos.
  • Funciones sin interpretar: Encuentra valores para x e y tales queF(incógnita)=2{\displaystyle f(x)=2}ygramo(incógnita)=3{\displaystyle g(x)=3}.

La mayoría de los solucionadores SMT solo admiten fragmentos de sus lógicas que no contengan cuantificadores .

Relación con la demostración automatizada de teoremas

Existe una superposición sustancial entre la resolución de SMT y la demostración automática de teoremas (ATP). Generalmente, los demostradores automáticos de teoremas se centran en admitir lógica de primer orden completa con cuantificadores, mientras que los solucionadores de SMT se centran más en admitir diversas teorías (símbolos de predicado interpretados). Los ATP sobresalen en problemas con muchos cuantificadores, mientras que los solucionadores de SMT funcionan bien en problemas grandes sin cuantificadores. [ 1 ] La línea divisoria es lo suficientemente difusa como para que algunos ATP participen en SMT-COMP, mientras que algunos solucionadores de SMT participan en CASC . [ 2 ]

Poder expresivo

Una instancia SMT es una generalización de una instancia SAT booleana en la que diversos conjuntos de variables se reemplazan por predicados de diferentes teorías subyacentes. Las fórmulas SMT proporcionan un lenguaje de modelado mucho más rico que el que ofrecen las fórmulas SAT booleanas. Por ejemplo, una fórmula SMT permite modelar las operaciones de la ruta de datos de un microprocesador a nivel de palabra, en lugar de a nivel de bit.

En comparación, la programación de conjuntos de respuestas también se basa en predicados (más precisamente, en sentencias atómicas creadas a partir de fórmulas atómicas ). A diferencia de SMT, los programas de conjuntos de respuestas no tienen cuantificadores y no pueden expresar fácilmente restricciones como la aritmética lineal o la lógica de diferencias ; la programación de conjuntos de respuestas es más adecuada para problemas booleanos que se reducen a la teoría libre de funciones no interpretadas. La implementación de enteros de 32 bits como vectores de bits en la programación de conjuntos de respuestas sufre de la mayoría de los mismos problemas que enfrentaron los primeros solucionadores de SMT: las identidades "obvias" como x  + y = y + x son difíciles de deducir.     

La programación lógica con restricciones sí ofrece soporte para restricciones aritméticas lineales, pero dentro de un marco teórico completamente diferente. Los solucionadores SMT también se han extendido para resolver fórmulas en lógica de orden superior . [ 3 ]

Enfoques de resolución

Los primeros intentos de resolver instancias SMT implicaron traducirlas a instancias SAT booleanas (por ejemplo, una variable entera de 32 bits se codificaría mediante 32 variables de un solo bit con pesos apropiados y las operaciones a nivel de palabra, como 'más', se reemplazarían por operaciones lógicas de nivel inferior en los bits) y pasar esta fórmula a un solucionador SAT booleano. Este enfoque, que se conoce como enfoque ansioso (o bitblasting ), tiene sus méritos: al preprocesar la fórmula SMT en una fórmula SAT booleana equivalente , los solucionadores SAT booleanos existentes se pueden usar "tal cual" y sus mejoras de rendimiento y capacidad se pueden aprovechar con el tiempo. Por otro lado, la pérdida de la semántica de alto nivel de las teorías subyacentes significa que el solucionador SAT booleano tiene que trabajar mucho más de lo necesario para descubrir hechos "obvios" (comoincógnita+y=y+incógnita{\displaystyle x+y=y+x}(para la suma de enteros). Esta observación condujo al desarrollo de varios solucionadores SMT que integran estrechamente el razonamiento booleano de una búsqueda de estilo DPLL con solucionadores específicos de la teoría ( T-solucionadores ) que manejan conjunciones (AND) de predicados de una teoría dada. Este enfoque se conoce como el enfoque perezoso . [ 4 ]

Denominada DPLL(T) [ 5 ] , esta arquitectura otorga la responsabilidad del razonamiento booleano al solucionador SAT basado en DPLL, el cual, a su vez, interactúa con un solucionador para la teoría T a través de una interfaz bien definida. El solucionador de teoría solo necesita preocuparse por verificar la factibilidad de las conjunciones de predicados de teoría que le pasa el solucionador SAT mientras explora el espacio de búsqueda booleano de la fórmula. Sin embargo, para que esta integración funcione bien, el solucionador de teoría debe poder participar en la propagación y el análisis de conflictos, es decir, debe poder inferir nuevos hechos a partir de hechos ya establecidos, así como proporcionar explicaciones concisas de infactibilidad cuando surgen conflictos de teoría. En otras palabras, el solucionador de teoría debe ser incremental y con capacidad de retroceso .

Teorías decidibles

Los investigadores estudian qué teorías o subconjuntos de teorías conducen a un problema SMT decidible y la complejidad computacional de los casos decidibles. Dado que la lógica de primer orden completa es solo semidecidible , una línea de investigación intenta encontrar procedimientos de decisión eficientes para fragmentos de lógica de primer orden, como la lógica proposicional efectiva . [ 6 ]

Otra línea de investigación implica el desarrollo de teorías decidibles especializadas , incluyendo aritmética lineal sobre racionales y enteros , vectores de bits de ancho fijo, [ 7 ] aritmética de punto flotante (a menudo implementada en solucionadores SMT a través de explosión de bits , es decir, reducción a vectores de bits), [ 8 ] [ 9 ] cadenas , [ 10 ] (co)tipos de datos , [ 11 ] secuencias (utilizadas para modelar matrices dinámicas ), [ 12 ] conjuntos y relaciones finitos , [ 13 ] [ 14 ] lógica de separación , [ 15 ] campos finitos , [ 16 ] y funciones no interpretadas, entre otras.

Las teorías monótonas booleanas son una clase de teoría que admite la propagación eficiente de teorías y el análisis de conflictos, lo que permite su uso práctico dentro de los solucionadores DPLL(T). [ 17 ] Las teorías monótonas solo admiten variables booleanas (Booleano es el único tipo ), y todas sus funciones y predicados p obedecen el axioma

pag(,bi1,0,bi+1,)pag(,bi1,1,bi+1,){\displaystyle p(\ldots ,b_{i-1},0,b_{i+1},\ldots )\implies p(\ldots ,b_{i-1},1,b_{i+1},\ldots )}

Ejemplos de teorías monótonas incluyen la alcanzabilidad de grafos , la detección de colisiones para envolventes convexas , los cortes mínimos y la lógica de árboles de computación . [ 18 ] Todo programa Datalog puede interpretarse como una teoría monótona. [ 19 ]

SMT para teorías indecidibles

La mayoría de los enfoques SMT comunes admiten teorías decidibles . Sin embargo, muchos sistemas del mundo real, como una aeronave y su comportamiento, solo pueden modelarse mediante aritmética no lineal sobre los números reales que involucran funciones trascendentales . Este hecho motiva una extensión del problema SMT a teorías no lineales, como determinar si la siguiente ecuación es satisfacible:

(pecado(incógnita)3=porque(registro(y)incógnita)bincógnita22.3y)(¬by<34.4exp(incógnita)>yincógnita){\displaystyle {\begin{array}{lr}&(\sin(x)^{3}=\cos(\log(y)\cdot x)\vee b\vee -x^{2}\geq 2.3y)\wedge \left(\neg b\vee y<-34.4\vee \exp(x)>{y \over x}\right)\end{array}}}

dónde

bB,incógnita,yR.{\displaystyle b\in {\mathbb {B} },x,y\in {\mathbb {R} }.}

Sin embargo, tales problemas son, en general, indecidibles . (Por otro lado, la teoría de los cuerpos reales cerrados , y por ende la teoría completa de primer orden de los números reales , son decidibles mediante la eliminación de cuantificadores . Esto se debe a Alfred Tarski ). La teoría de primer orden de los números naturales con suma (pero no con multiplicación), llamada aritmética de Presburger , también es decidible. Dado que la multiplicación por constantes puede implementarse como sumas anidadas, la aritmética en muchos programas informáticos puede expresarse utilizando la aritmética de Presburger, lo que da como resultado fórmulas decidibles.

Ejemplos de solucionadores SMT que abordan combinaciones booleanas de átomos de teoría de teorías aritméticas indecidibles sobre los reales son ABsolver, [ 20 ] que emplea una arquitectura DPLL(T) clásica con un paquete de optimización no lineal como solucionador de teoría subordinada (necesariamente incompleta), iSAT , que se basa en una unificación de la resolución SAT de DPLL y la propagación de restricciones de intervalo llamada algoritmo iSAT, [ 21 ] y cvc5 . [ 22 ]

Solucionadores

La tabla siguiente resume algunas de las características de los numerosos solucionadores SMT disponibles. La columna "SMT-LIB" indica compatibilidad con el lenguaje SMT-LIB; muchos sistemas marcados con "sí" pueden admitir solo versiones anteriores de SMT-LIB u ofrecer solo compatibilidad parcial con el lenguaje. La columna "CVC" indica compatibilidad con el lenguaje CVC . La columna "DIMACS" indica compatibilidad con el formato DIMACS .

Los proyectos difieren no solo en sus características y rendimiento, sino también en la viabilidad de la comunidad que los rodea, su interés continuo en el proyecto y su capacidad para contribuir con documentación, correcciones, pruebas y mejoras.

Estandarización y la competición de solucionadores SMT-COMP

Existen varios intentos de describir una interfaz estandarizada para los solucionadores SMT (y los demostradores automáticos de teoremas , término que a menudo se usa indistintamente). El más destacado es el estándar SMT-LIB, que proporciona un lenguaje basado en expresiones S. Otros formatos estandarizados comúnmente compatibles son el formato DIMACS, compatible con muchos solucionadores SAT booleanos, y el formato CVC, utilizado por el demostrador automático de teoremas CVC.

El formato SMT-LIB también incluye varios puntos de referencia estandarizados y ha permitido una competición anual entre solucionadores SMT llamada SMT-COMP. Inicialmente, la competición tuvo lugar durante la conferencia Computer Aided Verification (CAV), [ 23 ] [ 24 ] pero desde 2020 se celebra como parte del SMT Workshop, que está afiliado a la International Joint Conference on Automated Reasoning (IJCAR). [ 25 ]

Aplicaciones

Los solucionadores SMT son útiles tanto para la verificación, demostrando la corrección de los programas (pruebas de software basadas en la ejecución simbólica) , como para la síntesis , generando fragmentos de programas mediante la búsqueda en el espacio de programas posibles. Fuera de la verificación de software, los solucionadores SMT también se han utilizado para la inferencia de tipos [ 26 ] [ 27 ] y para modelar escenarios teóricos, incluyendo el modelado de las creencias de los actores en el control de armas nucleares . [ 28 ]

Verificación

La verificación asistida por ordenador de programas informáticos suele utilizar solucionadores SMT. Una técnica común consiste en traducir las precondiciones, postcondiciones, condiciones de bucle y aserciones a fórmulas SMT para determinar si se cumplen todas las propiedades.

Hay muchos verificadores construidos sobre el solucionador SMT Z3 . Boogie es un lenguaje de verificación intermedio que usa Z3 para comprobar automáticamente programas imperativos simples. El verificador VCC para C concurrente usa Boogie, al igual que Dafny para programas imperativos basados ​​en objetos, Chalice para programas concurrentes y Spec# para C#. F* es un lenguaje de tipado dependiente que usa Z3 para encontrar pruebas; el compilador lleva estas pruebas para producir bytecode portador de pruebas. La infraestructura de verificación Viper codifica las condiciones de verificación en Z3. La biblioteca sbv proporciona verificación basada en SMT de programas Haskell y permite al usuario elegir entre varios solucionadores como Z3, ABC, Boolector, cvc5, MathSAT y Yices.

También existen numerosos verificadores basados ​​en el solucionador SMT Alt-Ergo . A continuación, se presenta una lista de aplicaciones consolidadas:

  • Why3 , una plataforma para la verificación deductiva de programas, utiliza Alt-Ergo como su principal probador;
  • CAVEAT, un verificador C desarrollado por CEA y utilizado por Airbus; Alt-Ergo se incluyó en la calificación DO-178C de uno de sus aviones recientes;
  • Frama-C , un marco de trabajo para analizar código C, utiliza Alt-Ergo en los complementos Jessie y WP (dedicados a la "verificación deductiva de programas");
  • SPARK utiliza CVC4 y Alt-Ergo (detrás de GNATprove) para automatizar la verificación de algunas aserciones en SPARK 2014;
  • Atelier-B puede usar Alt-Ergo en lugar de su probador principal (aumentando el éxito del 84% al 98% en los puntos de referencia del proyecto ANR Bware Archivado el 29/11/2014 en Wayback Machine );
  • Rodin , un marco de trabajo basado en el método B desarrollado por Systerel, puede utilizar Alt-Ergo como back-end;
  • Cubicle , un verificador de modelos de código abierto para comprobar las propiedades de seguridad de los sistemas de transición basados ​​en matrices.
  • EasyCrypt , un conjunto de herramientas para razonar sobre las propiedades relacionales de los cálculos probabilísticos con código adversario.

Muchos solucionadores SMT implementan un formato de interfaz común llamado SMTLIB2 (estos archivos suelen tener la extensión " .smt2"). La herramienta LiquidHaskell implementa un verificador basado en tipos de refinamiento para Haskell que puede usar cualquier solucionador compatible con SMTLIB2, por ejemplo, cvc5, MathSat o Z3.

Análisis y pruebas basados ​​en la ejecución simbólica

Una aplicación importante de los solucionadores SMT es la ejecución simbólica para el análisis y la prueba de programas (por ejemplo, pruebas concólicas ), dirigida particularmente a encontrar vulnerabilidades de seguridad. Ejemplos de herramientas en esta categoría incluyen SAGE de Microsoft Research , KLEE , S2E y Triton . Los solucionadores SMT que se han utilizado para aplicaciones de ejecución simbólica incluyen Z3 , STP (archivado el 6 de abril de 2015 en Wayback Machine) , la familia de solucionadores Z3str y Boolector .

Demostración interactiva de teoremas

Los solucionadores SMT se han integrado con asistentes de prueba, incluidos Rocq [ 29 ] e Isabelle/HOL . [ 30 ]

Síntesis

Los solucionadores SMT son un componente fundamental en la síntesis de programas , la generación automatizada de programas a partir de especificaciones. Un enfoque destacado es la síntesis inductiva guiada por contraejemplos (CEGIS), en la que un sintetizador propone un programa candidato que es verificado por un solucionador SMT; los contraejemplos de las comprobaciones fallidas guían al sintetizador hasta que se encuentra una solución correcta. [ 31 ]

Una aplicación relacionada es la reparación automática de programas : dado un programa con errores y un conjunto de pruebas, se construye una fórmula SMT cuya solución produce un parche. Por ejemplo, Nopol codifica el problema de encontrar una expresión condicional reparada como una instancia SMT, traduciendo la solución de nuevo a un parche de código fuente para programas Java. [ 32 ]

Véase también

Notas

  1. Blanchette, Jasmin Christian; Böhme, Sascha; Paulson, Lawrence C. (2013-06-01). "Extending Sledgehammer with SMT Solvers" . Journal of Automated Reasoning . 51 (1): 109– 128. doi : 10.1007/s10817-013-9278-5 . ISSN 1573-0670 . Los ATP y los solucionadores SMT tienen fortalezas complementarias. Los primeros manejan los cuantificadores de manera más elegante, mientras que los segundos sobresalen en problemas grandes, principalmente de base. 
  2. Weber, Tjark; Conchon, Sylvain; Déharbe, David; Heizmann, Matthias; Niemetz, Aina; Reger, Giles (2019-01-01). "The SMT Competition 2015–2018" . Journal on Satisfiability, Boolean Modeling and Computation . 11 (1): 221–259 . doi : 10.3233/SAT190123 . S2CID 210147712. En los últimos años, hemos visto una difuminación de las líneas entre SMT-COMP y CASC, con solucionadores SMT compitiendo en CASC y ATP compitiendo en SMT-COMP . 
  3. Barbosa, Haniel; Reynolds, Andrew; El Ouraoui, Daniel; Tinelli, Cesare; Barrett, Clark (2019). "Extending SMT solvers to higher-order logic" . Automated Deduction – CADE 27: 27.ª Conferencia Internacional sobre Deducción Automatizada, Natal, Brasil, 27-30 de agosto de 2019, Actas . Springer. pp. 35-54 . doi : 10.1007/978-3-030-29436-6_3 . ISBN  978-3-030-29436-6. S2CID 85443815 . hal-02300986. 
  4. Bruttomesso, Roberto; Cimatti, Alessandro; Franzén, Anders; Griggio, Alberto; Hanna, Ziyad; Nadel, Alexander; Palti, Amit; Sebastiani, Roberto (2007). "Un solucionador SMT( $\mathcal { BV } $ ) perezoso y por capas para problemas de verificación industrial complejos" . En Damm, Werner; Hermanns, Holger (eds.). Verificación asistida por computadora . Lecture Notes in Computer Science. Vol. 4590. Berlín, Heidelberg: Springer. pp. 547– 560. doi : 10.1007/978-3-540-73368-3_54 . ISBN   978-3-540-73368-3.
  5. Nieuwenhuis, R.; Oliveras, A.; Tinelli, C. (2006), "Resolución de SAT y SAT Modulo Theories: De un procedimiento abstracto de Davis-Putnam-Logemann-Loveland a DPLL(T)" (PDF) , Journal of the ACM , vol. 53, pp. 937–977 , doi : 10.1145/1217856.1217859 , S2CID 14058631   
  6. de Moura, Leonardo; Bjørner, Nikolaj (12-15 de agosto de 2008). «Decidiendo eficazmente la lógica proposicional usando DPLL y conjuntos de sustitución» . En Armando, Alessandro; Baumgartner, Peter; Dowek, Gilles (eds.). Razonamiento automatizado . 4.ª Conferencia Internacional Conjunta sobre Razonamiento Automatizado, Sídney, Nueva Gales del Sur, Australia. Lecture Notes in Computer Science. Berlín, Heidelberg: Springer. págs. 410-425 . doi : 10.1007/978-3-540-71070-7_35 . ISBN  978-3-540-71070-7.
  7. Hadarean, Liana; Bansal, Kshitij; Jovanović, Dejan; Barrett, Clark; Tinelli, Cesare (2014). "Una historia de dos solucionadores: enfoques ávidos y perezosos para vectores de bits" . En Biere, Armin; Bloem, Roderick (eds.). Verificación asistida por computadora . Lecture Notes in Computer Science. Vol. 8559. Cham: Springer International Publishing. pp. 680–695 . doi : 10.1007/978-3-319-08867-9_45 . ISBN   978-3-319-08867-9.
  8. Brain, Martin; Schanda, Florian; Sun, Youcheng (2019). "Building Better Bit-Blasting for Floating-Point Problems". En Vojnar, Tomáš; Zhang, Lijun (eds.). Tools and Algorithms for the Construction and Analysis of Systems . 25.ª Conferencia Internacional, Tools and Algorithms for the Construction and Analysis of Systems 2019, Praga, República Checa, 6-11 de abril de 2019, Actas, Parte I. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 79-98 . doi : 10.1007/978-3-030-17462-0_5 . ISBN  978-3-030-17462-0. S2CID 92999474 . 
  9. Brain, Martin; Niemetz, Aina; Preiner, Mathias; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2019). "Condiciones de invertibilidad para fórmulas de punto flotante". En Dillig, Isil; Tasiran, Serdar (eds.). Verificación asistida por computadora . 31.ª Conferencia Internacional, Verificación asistida por computadora 2019, Ciudad de Nueva York, 15-18 de julio de 2019. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 116-136 . doi : 10.1007/978-3-030-25543-5_8 . ISBN  978-3-030-25543-5. S2CID 196613701 . 
  10. Liang, Tianyi; Tsiskaridze, Nestan; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2015). "Un procedimiento de decisión para restricciones de pertenencia y longitud regulares sobre cadenas no acotadas" . En Lutz, Carsten; Ranise, Silvio (eds.). Fronteras de los sistemas combinables . Notas de clase en ciencias de la computación. Vol. 9322. Cham: Springer International Publishing. pp. 135–150 . doi : 10.1007/978-3-319-24246-0_9 . ISBN   978-3-319-24246-0.
  11. Reynolds, Andrew; Blanchette, Jasmin Christian (2015). "Un procedimiento de decisión para (co)tipos de datos en solucionadores SMT" . En Felty, Amy P.; Middeldorp, Aart (eds.). Deducción automatizada - CADE-25 . Lecture Notes in Computer Science. Vol. 9195. Cham: Springer International Publishing. pp. 197–213 . doi : 10.1007/978-3-319-21401-6_13 . ISBN   978-3-319-21401-6.
  12. Sheng, Ying; Nötzli, Andres; Reynolds, Andrew; Zohar, Yoni; Dill, David; Grieskamp, ​​Wolfgang; Park, Junkil; Qadeer, Shaz; Barrett, Clark; Tinelli, Cesare (2023-09-15). "Razonamiento sobre vectores: satisfacibilidad módulo una teoría de secuencias" . Journal of Automated Reasoning . 67 (3): 32. doi : 10.1007/s10817-023-09682-2 . ISSN 1573-0670 . S2CID 261829653 .  
  13. Bansal, Kshitij; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2016). "Un nuevo procedimiento de decisión para conjuntos finitos y restricciones de cardinalidad en SMT" . En Olivetti, Nicola; Tiwari, Ashish (eds.). Razonamiento automatizado . Lecture Notes in Computer Science. Vol. 9706. Cham: Springer International Publishing. pp. 82–98 . doi : 10.1007/978-3-319-40229-1_7 . ISBN   978-3-319-40229-1.
  14. Meng, Baoluo; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2017). "Resolución de restricciones relacionales en SMT" . En de Moura, Leonardo (ed.). Deducción automatizada – CADE 26. Lecture Notes in Computer Science. Vol. 10395. Cham: Springer International Publishing. pp. 148–165 . doi : 10.1007/978-3-319-63046-5_10 . ISBN   978-3-319-63046-5.
  15. Reynolds, Andrew; Iosif, Radu; Serban, Cristina; King, Tim (2016). "Un procedimiento de decisión para la lógica de separación en SMT" . En Artho, Cyrille; Legay, Axel; Peled, Doron (eds.). Tecnología automatizada para verificación y análisis . Lecture Notes in Computer Science. Vol. 9938. Cham: Springer International Publishing. pp. 244–261 . doi : 10.1007/978-3-319-46520-3_16 . ISBN   978-3-319-46520-3. S2CID 6753369 . 
  16. Ozdemir, Alex; Kremer, Gereon; Tinelli, Cesare; Barrett, Clark (2023). "Satisfacibilidad módulo campos finitos" . En Enea, Constantin; Lal, Akash (eds.). Verificación asistida por computadora . Lecture Notes in Computer Science. Vol. 13965. Cham: Springer Nature Switzerland. pp. 163–186 . doi : 10.1007/978-3-031-37703-7_8 . ISBN   978-3-031-37703-7. S2CID 257235627 . 
  17. Bayless, Sam; Bayless, Noah; Hoos, Holger; Hu, Alan (2015-03-04). "SAT Modulo Monotonic Theories" . Actas de la Conferencia AAAI sobre Inteligencia Artificial . 29 (1). arXiv : 1406.0043 . doi : 10.1609/aaai.v29i1.9755 . ISSN 2374-3468 . S2CID 9567647 .  
  18. ^ Klenze, Tobías; Sin bahía, Sam; Hu, Alan J. (2016). "Síntesis de CTL rápida, flexible y mínima mediante SMT" . En Chaudhuri, Swarat; Farzan, Azadeh (eds.). Verificación asistida por computadora . Apuntes de conferencias sobre informática. vol. 9779. Cham: Editorial Internacional Springer. págs. 136-156 . doi : 10.1007/978-3-319-41528-4_8 . ISBN   978-3-319-41528-4.
  19. Bembenek, Aaron; Greenberg, Michael; Chong, Stephen (2023-01-11). "De SMT a ASP: Enfoques basados ​​en solucionadores para resolver problemas de síntesis de Datalog como selección de reglas" . Actas de la ACM sobre lenguajes de programación . 7 (POPL): 7:185–7:217. doi : 10.1145/3571200 . S2CID 253525805 . 
  20. Bauer, A.; Pister, M.; Tautschnig, M. (2007), "Soporte de herramientas para el análisis de sistemas y modelos híbridos", Actas de la Conferencia de 2007 sobre Diseño, Automatización y Pruebas en Europa (DATE'07) , IEEE Computer Society, pág. 1, CiteSeerX 10.1.1.323.6807 , doi : 10.1109/DATE.2007.364411 , ISBN   978-3-9810801-2-4, S2CID 9159847 
  21. Fränzle, M.; Herde, C.; Ratschan, S.; Schubert, T.; Teige, T. (2007), "Resolución eficiente de grandes sistemas de restricciones aritméticas no lineales con estructura booleana compleja" (PDF) , Journal on Satisfiability, Boolean Modeling and Computation , 1 (3–4 Número especial de JSAT sobre integración SAT/CP): 209–236 , doi : 10.3233/SAT190012
  22. Barbosa, Haniel; Barrett, Clark; Brain, Martin; Kremer, Gereon; Lachnitt, Hanna; Mann, Makai; Mohamed, Abdalrhman; Mohamed, Mudathir; Niemetz, Aina; Nötzli, Andres; Ozdemir, Alex; Preiner, Mathias; Reynolds, Andrew; Sheng, Ying; Tinelli, Cesare (2022). "cvc5: Un solucionador SMT versátil y de fuerza industrial" . En Fisman, Dana; Rosu, Grigore (eds.). Herramientas y algoritmos para la construcción y el análisis de sistemas, 28.ª Conferencia Internacional . Lecture Notes in Computer Science. Vol. 13243. Cham: Springer International Publishing. págs. 415– 442. doi : 10.1007/978-3-030-99524-9_24 . ISBN   978-3-030-99524-9. S2CID 247857361 . 
  23. Barrett, Clark; de Moura, Leonardo; Stump, Aaron (2005). "SMT-COMP: Satisfiability Modulo Theories Competition" . En Etessami, Kousha; Rajamani, Sriram K. (eds.). Computer Aided Verification . Lecture Notes in Computer Science. Vol. 3576. Springer. pp. 20–23 . doi : 10.1007/11513988_4 . ISBN   978-3-540-31686-2.
  24. Barrett, Clark; de Moura, Leonardo; Ranise, Silvio; Stump, Aaron; Tinelli, Cesare (2011). "La iniciativa SMT-LIB y el auge de SMT: (Charla de entrega del premio HVC 2010)". En Barner, Sharon; Harris, Ian; Kroening, Daniel; Raz, Orna (eds.). Hardware y software: verificación y pruebas . Lecture Notes in Computer Science. Vol. 6504. Springer. pág. 3. Bibcode : 2011LNCS.6504....3B . doi : 10.1007/978-3-642-19583-9_2 . ISBN   978-3-642-19583-9.
  25. "SMT-COMP 2020" . SMT-COMP . Consultado el 19 de octubre de 2020 .
  26. Hassan, Mostafa; Urban, Caterina; Eilers, Marco; Müller, Peter (2018). "Inferencia de tipos basada en MaxSMT para Python 3" . Verificación asistida por computadora . Notas de clase en ciencias de la computación. Vol. 10982. págs. 12–19 . doi : 10.1007/978-3-319-96142-2_2 . ISBN   978-3-319-96141-5.
  27. Loncaric, Calvin, et al. "Un marco práctico para la explicación de errores de inferencia de tipos." ACM SIGPLAN Notices 51.10 (2016): 781-799.
  28. Beaumont, Paul; Evans, Neil; Huth, Michael; Plant, Tom (2015). "Análisis de confianza para el control de armas nucleares: abstracciones SMT de redes bayesianas de creencias". En Pernul, Günther; YA Ryan, Peter; Weippl, Edgar (eds.). Seguridad informática - ESORICS 2015. Lecture Notes in Computer Science. Vol. 9326. Springer. pp. 521–540 . doi : 10.1007/978-3-319-24174-6_27 . ISBN   978-3-319-24174-6.
  29. Ekici, Burak; Mebsout, Alain; Tinelli, Cesare; Keller, Chantal; Katz, Guy; Reynolds, Andrew; Barrett, Clark (2017). "SMTCoq: Un complemento para integrar solucionadores SMT en Coq" . En Majumdar, Rupak; Kunčak, Viktor (eds.). Verificación asistida por computadora, 29.ª Conferencia Internacional . Lecture Notes in Computer Science. Vol. 10427. Cham: Springer International Publishing. pp. 126–133 . doi : 10.1007/978-3-319-63390-9_7 . ISBN   978-3-319-63390-9. S2CID 206701576 . 
  30. Blanchette, Jasmin Christian; Böhme, Sascha; Paulson, Lawrence C. (2013-06-01). "Extending Sledgehammer with SMT Solvers" . Journal of Automated Reasoning . 51 (1): 109– 128. doi : 10.1007/s10817-013-9278-5 . ISSN 1573-0670 . 
  31. Abate, Alessandro; David, Cristina; Kesseli, Pascal; Kroening, Daniel; Polgreen, Elizabeth (2018). «Síntesis inductiva guiada por contraejemplos módulo teorías». Verificación asistida por computadora . Notas de clase en ciencias de la computación. Vol. 10981. págs. 270–288 . doi : 10.1007/978-3-319-96145-3_15 . ISBN   978-3-319-96144-6.
  32. Xuan, Jifeng; Martinez, Matias; DeMarco, Favio; Clement, Maxime; Marcote, Sebastian Lamelas; Durieux, Thomas; Le Berre, Daniel; Monperrus, Martin (enero de 2017). "Nopol: Reparación automática de errores en sentencias condicionales en programas Java". IEEE Transactions on Software Engineering . 43 (1): 34– 55. arXiv : 1811.04211 . Bibcode : 2017ITSEn..43...34X . doi : 10.1109/tse.2016.2560811 .

Referencias

  • Barrett, C.; Sebastiani, R.; Seshia, S.; Tinelli, C. (2009). «Satisfacibilidad módulo teorías» . En Biere, A.; Heule, MJH; van Maaren, H.; Walsh, T. (eds.). Manual de satisfacibilidad . Fronteras en inteligencia artificial y aplicaciones. Vol.  185. IOS Press. pp. 825–885 . ISBN  9781607503767.
  • Ganesh, Vijay (septiembre de 2007). Procedimientos de decisión para vectores de bits, matrices y números enteros (PDF) (Tesis doctoral). Departamento de Ciencias de la Computación, Universidad de Stanford.
  • Jha, Susmit; Limaye, Rhishikesh; Seshia, Sanjit A. (2009). "Beaver: Ingeniería de un solucionador SMT eficiente para aritmética de vectores de bits". Actas de la 21.ª Conferencia Internacional sobre Verificación Asistida por Computadora . págs. 668–674 . doi : 10.1007/978-3-642-02658-4_53 . ISBN  978-3-642-02658-4.
  • Bryant, RE; German, SM; Velev, MN (1999). "Verificación de microprocesadores mediante procedimientos de decisión eficientes para una lógica de igualdad con funciones no interpretadas" (PDF) . Tablas analíticas y métodos relacionados . págs. 1–13 . , págs.  , .
  • Davis, M.; Putnam, H. (1960). "Un procedimiento computacional para la teoría de la cuantificación" . Journal of the Association for Computing Machinery . 7 (3): 201– 215. doi : 10.1145/321033.321034 . S2CID 31888376 . 
  • Davis, M.; Logemann, G.; Loveland, D. (1962). "Un programa informático para la demostración de teoremas". Communications of the ACM . 5 (7): 394– 397. doi : 10.1145/368273.368557 . hdl : 2027/mdp.39015095248095 . S2CID 15866917 . 
  • Kroening, D.; Strichman, O. (2008). Procedimientos de decisión: un punto de vista algorítmico . Serie de Ciencias de la Computación Teórica. Springer. ISBN 978-3-540-74104-6.
  • Nam, G.-J.; Sakallah, KA; Rutenbar, R. (2002). "Un nuevo enfoque de enrutamiento detallado para FPGA mediante satisfacibilidad booleana basada en búsqueda". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 21 (6): 674– 684. Bibcode : 2002ITCAD..21..674N . doi : 10.1109/TCAD.2002.1004311 .
  • SMT-LIB: La biblioteca de teorías de satisfacibilidad módulo teorías
  • SMT-COMP: La competición de satisfacibilidad módulo teorías
  • Procedimientos de decisión: un punto de vista algorítmico
  • Sebastiani, R. (2007). "Satisfacibilidad perezosa módulo teorías". Journal on Satisfiability, Boolean Modeling and Computation . 3 ( 3– 4): 141– 224. CiteSeerX 10.1.1.100.221 . doi : 10.3233/SAT190034 . 
  • Este artículo fue adaptado originalmente de una columna publicada en el boletín electrónico de ACM SIGDA por Karem A. Sakallah . El texto original está disponible aquí .