2011-01-06 7 views
5

Me he interesado y estoy buscando ejemplos prácticos del uso de SMT Z3 (como DbC) con código y alternativas de código abierto para esta herramienta. Así que, de hecho, estoy interesado en las herramientas de resolución formales similares Z3, pero:¿Está buscando ejemplos prácticos de cajas de uso SMT Z3 (como DbC) y alternativas de código abierto a Z3?

  • que debe ser de código abierto
  • proporcionar tanto de bajo nivel (API) y el alto nivel (scripting texto) la interacción
  • soporte SMT-LIB
  • adecuada (utilizable) en herramientas/escritos en/para lenguajes como Java, Python, ruby, Vala, y no Haskell
  • tiene herramientas estables (utilizables en la práctica) sobre la base de que, como diseño por contrato (DbC), verificación de tipo estático, etc.

De acuerdo a la página principal SMT-LIB (véase bit.ly paquete para más detalles) la lista de solucionadores de 2010 SMT es: "Alt-Ergo, Barcelogic, Beaver, Boolector, CVC3, DPT, MathSAT, OpenSMT, satén, Spear, STP, SWORD, UCLID, veriT, Yices, Z3. "

Por favor, dar su opinión sobre el uso de cualquiera de ellos en la práctica (ejemplos de código son los mejores)?

Finalmente, cualquier información sobre la comparación con las posibilidades de GHC sería útil, pero solo en caso de que exista un ejemplo de implementación (no una "característica" de idioma).

Más información rápida sobre Z3 aquí http://bit.ly/bundles/ewiger/1

Respuesta

3

A lo mejor de mi conocimiento, CVC3 se acerca más a sus necesidades, en el que:

  1. Tiene un conjunto de características que es similar a Z3.
  2. Tiene un BSD-style license
  3. Es el solucionador subyacente para una serie de proyectos existentes.

CVC3 tiene bindings para C++ y Java, y probablemente otros idiomas. En general, creo que la API es mucho más difícil de usar que la (textual) input language. Esto tiene el beneficio adicional de que, si se queda con el lenguaje SMT-LIB2, es posible que pueda cambiar a una herramienta diferente más adelante si es necesario. Una gran muestra de ejemplos está disponible en el SMT-LIB website.

3

lo solicitado sobre las alternativas de código abierto a Z3:

Según SMT-Wikipedia en 2011-08, tenemos:

Sobre la base de estas medidas, parece ser que los más vibrantes y bien organizada los proyectos son OpenSMT, STP y CVC4.

Estoy comprobando esto - hasta ahora, los tres parecen razonables, además de los CVC anteriores -> me refiero a CVC3.

Cuestiones relacionadas