88 research outputs found
Generalization Strategies for the Verification of Infinite State Systems
We present a method for the automated verification of temporal properties of
infinite state systems. Our verification method is based on the specialization
of constraint logic programs (CLP) and works in two phases: (1) in the first
phase, a CLP specification of an infinite state system is specialized with
respect to the initial state of the system and the temporal property to be
verified, and (2) in the second phase, the specialized program is evaluated by
using a bottom-up strategy. The effectiveness of the method strongly depends on
the generalization strategy which is applied during the program specialization
phase. We consider several generalization strategies obtained by combining
techniques already known in the field of program analysis and program
transformation, and we also introduce some new strategies. Then, through many
verification experiments, we evaluate the effectiveness of the generalization
strategies we have considered. Finally, we compare the implementation of our
specialization-based verification method to other constraint-based model
checking tools. The experimental results show that our method is competitive
with the methods used by those other tools. To appear in Theory and Practice of
Logic Programming (TPLP).Comment: 24 pages, 2 figures, 5 table
Design and implementation of a modular interface to integrate CLP and tabled execution
Logic programming (LP) is a family of high-level programming languages which provides high
expressive power. With LP, the programmer writes the properties of the result and / or executable
specifications instead of detailed computation steps.
Logic programming systems which feature tabled execution and constraint logic programming
have been shown to increase the declarativeness and efficiency of Prolog, while at the same time
making it possible to write very expressive programs. Tabled execution avoids infinite failure in
some cases, while improving efficiency in programs which repeat computations. CLP reduces the
search tree and brings the power of solving (in)equations over arbitrary domains.
Similarly to the LP case, CLP systems can also benefit from the power of tabling. Previous implementations
which take ful advantage of the ideas behind tabling (e.g., forcing suspension, answer
subsumption, etc. wherever it is necessary to avoid recomputation and terminate whenever possible)
did not offer a simple, well-documented, easy-to-understand interface. This would be necessary
to make the integratation of arbitrary CLP solvers into existing tabling systems possible. This
clearly hinders a more widespread usage of the combination of both facilities.
In this thesis we examine the requirements that a constraint solver must fulfill in order to be interfaced
with a tabling system. We propose and implement a framework, which we have called
Mod TCLP, with a minimal set of operations (e.g., entailment checking and projection) which the
constraint solver has to provide to the tabling engine.
We validate the design of Mod TCLP by a series of use cases: we re-engineer a previously existing
tabled constrain domain (difference constraints) which was connected in an ad-hoc manner
with the tabling engine in Ciao Prolog; we integrateHolzbauer’s CLP(Q) implementationwith Ciao
Prolog’s tabling engine; and we implement a constraint solver over (finite) lattices. We evaluate its
performance with several benchmarks that implement a simple abstract interpreter whose fixpoint
is reached by means of tabled execution, and whose domain operations are handled by the
constraint over (finite) lattices, where TCLP avoids recomputing subsumed abstractions.---ABSTRACT---La programación lógica con restricciones (CLP) y la tabulación son extensiones de la programación
lógica que incrementan la declaratividad y eficiencia de Prolog, al mismo tiempo que
hacen posible escribir programasmás expresivos.
Las implementaciones anteriores que integran completamente ambas extensiones, incluyendo
la suspensión de la ejecución de objetivos siempre que sea necesario, la implementación de inclusión
(subsumption) de respuestas, etc., en todos los puntos en los que sea necesario para evitar
recomputaciones y garantizar la terminación cuando sea posible, no han proporcionan una interfaz
simple, bien documentada y fácil de entender. Esta interfaz es necesaria para permitir integrar
resolutores de CLP arbitrarios en el sistema de tabulación. Esto claramente dificulta un uso más
generalizado de la integración de ambas extensiones.
En esta tesis examinamos los requisitos que un resolutor de restricciones debe cumplir para ser
integrado con un sistema de tabulación. Proponemos un esquema (y su implementación), que
hemos llamadoMod TCLP, que requiere un reducido conjunto de operaciones (en particular, y entre
otras, entailment y proyección de almacenes de restricciones) que el resolutor de restricciones
debe ofrecer al sistema de tabulación.
Hemos validado el diseño de Mod TCLP con una serie de casos de uso: la refactorización de un
sistema de restricciones (difference constraints) previamente conectado de un modo ad-hoc con
la tabulación de Ciao Prolog; la integración del sistema de restricciones CLP(Q) de Holzbauer; y
la implementación de un resolutor de restricciones sobre retículos finitos. Hemos evaluado su
rendimiento con varios programas de prueba, incluyendo la implementación de un intérprete
abstracto que alcanza su punto fijo mediante el sistema de tabulación y en el que las operaciones
en el dominio son realizadas por el resolutor de restricciones sobre retículos (finitos) donde TCLP
evita la recomputación de valores abstractos de las variables ya contenidos en llamadas anteriores
A general implementation framework for tabled CLP
This paper describes a framework to combine tabling evalua- tion and constraint logic programming (TCLP). While this combination has been studied previously from a theoretical point of view and some implementations exist, they either suffer from a lack of efficiency, flex- ibility, or generality, or have inherent limitations with respect to the programs they can execute to completion (either with success or fail- ure). Our framework addresses these issues directly, including the ability to check for answer / call entailment, which allows it to terminate in more cases than other approaches. The proposed framework is experimentally compared with existing solutions in order to provide evidence of the mentioned advantages
- …