Traducir programas de conjuntos de respuestas al lenguaje de demostración de teoremas de primer orden
Nota
Actualmente estás viendo la versión 1 de anthem
, que fue creada por Patrick Lühne y ya no se está desarrollando. No se realizarán más compromisos con este repositorio.
Si estás interesado en una versión reciente de Anthem, echa un vistazo al nuevo repositorio.
anthem
traduce programas ASP (en el lenguaje de entrada clingo
) al lenguaje de demostradores de teoremas de primer orden como Prover9.
Para verificar que un programa implemente una especificación, invoque anthem
usando el comando verify-program
:
$ himno verificar-programa <archivo de programa> <archivo de especificación>...
Tenga en cuenta que se pueden especificar varios archivos de especificaciones. Esto es útil para separar lemas y axiomas de los supuestos y especificaciones.
El ejemplo para calcular el suelo de la raíz cuadrada de un número se puede reproducir de la siguiente manera:
$ ejemplos de programas de verificación de himno/ejemplo-2.{lp,spec,lemas}
La notación de llaves es una abreviatura de Bash para
$ ejemplos de programa de verificación de himno/ejemplo-2.lp ejemplos/ejemplo-2.spec ejemplos/ejemplo-2.lemmas
De forma predeterminada, anthem
realiza la finalización de Clark en las fórmulas traducidas, detecta qué variables son enteras y simplifica la salida aplicando varias reglas de transformación básicas.
Estos pasos de procesamiento se pueden desactivar con las opciones --no-complete
, --no-simplify
y --no-detect-integers
.
anthem
está construido con la cadena de herramientas cargo
de Rust. Después de instalar Rust, anthem
se puede construir de la siguiente manera:
$ git clon https://github.com/potassco/anthem.git $ cd himno $ construcción de carga --liberación
El binario anthem
estará disponible en el directorio target/release/
. Alternativamente, se puede invocar anthem
usando cargo
de la siguiente manera:
$ ejecución de carga --verificar-programa <archivo de programa> <archivo de especificación>...
Patricio Lühne