6,486 research outputs found
Transformation Rules for Locally Stratified Constraint Logic Programs
We propose a set of transformation rules for constraint logic programs with
negation. We assume that every program is locally stratified and, thus, it has
a unique perfect model. We give sufficient conditions which ensure that the
proposed set of transformation rules preserves the perfect model of the
programs. Our rules extend in some respects the rules for logic programs and
constraint logic programs already considered in the literature and, in
particular, they include a rule for unfolding a clause with respect to a
negative literal.Comment: To appear in: M. Bruynooghe, K.-K. Lau (Eds.) Program Development in
Computational Logic, Lecture Notes in Computer Science, Springe
Proving theorems by program transformation
In this paper we present an overview of the unfold/fold proof method, a method for proving theorems about programs, based on program transformation. As a metalanguage for specifying programs and program properties we adopt constraint logic programming (CLP), and we present a set of transformation rules (including the familiar unfolding and folding rules) which preserve the semantics of CLP programs. Then, we show how program transformation strategies can be used, similarly to theorem proving tactics, for guiding the application of the transformation rules and inferring the properties to be proved. We work out three examples: (i) the proof of predicate equivalences, applied to the verification of equality between CCS processes, (ii) the proof of first order formulas via an extension of the quantifier elimination method, and (iii) the proof of temporal properties of infinite state concurrent systems, by using a transformation strategy that performs program specialization
Transformations of Logic Programs on Infinite Lists
We consider an extension of logic programs, called \omega-programs, that can
be used to define predicates over infinite lists. \omega-programs allow us to
specify properties of the infinite behavior of reactive systems and, in
general, properties of infinite sequences of events. The semantics of
\omega-programs is an extension of the perfect model semantics. We present
variants of the familiar unfold/fold rules which can be used for transforming
\omega-programs. We show that these new rules are correct, that is, their
application preserves the perfect model semantics. Then we outline a general
methodology based on program transformation for verifying properties of
\omega-programs. We demonstrate the power of our transformation-based
verification methodology by proving some properties of Buechi automata and
\omega-regular languages.Comment: 37 pages, including the appendix with proofs. This is an extended
version of a paper published in Theory and Practice of Logic Programming, see
belo
Transformational Verification of Linear Temporal Logic
We present a new method for verifying Linear Temporal
Logic (LTL) properties of finite state reactive systems based on logic programming and program transformation. We encode a finite state system and an LTL property which we want to verify as a logic program on infinite lists. Then we apply a verification method consisting of two steps. In the first step we transform the logic program that encodes the given system and the given property into a new program belonging to the class of the so-called linear monadic !-programs (which are stratified, linear recursive programs defining nullary predicates or unary predicates on infinite lists). This transformation is performed by applying rules that preserve correctness. In the second step we verify the property of interest by using suitable proof rules for linear monadic !-programs. These proof rules can be encoded as a logic program which always terminates, if evaluated by using tabled resolution. Although our method uses standard
program transformation techniques, the computational complexity of the derived verification algorithm is essentially the same as the one of the Lichtenstein-Pnueli algorithm [9], which uses sophisticated ad-hoc techniques
Deciding Full Branching Time Logic by Program Transformation
We present a method based on logic program transformation, for verifying Computation Tree Logic (CTL*) properties of finite state reactive systems. The finite state systems and the CTL* properties we want to verify, are encoded as logic programs on infinite lists. Our verification method consists of two steps. In the first step we transform the logic program that encodes the given system and the given property, into a monadic Ļ -program, that is, a stratified program defining nullary or unary predicates on infinite lists. This transformation is performed by applying unfold/fold rules that preserve the perfect model of the initial program. In the second step we verify the property of interest by using a proof method for monadic Ļ-program
Computing Preferred Answer Sets by Meta-Interpretation in Answer Set Programming
Most recently, Answer Set Programming (ASP) is attracting interest as a new
paradigm for problem solving. An important aspect which needs to be supported
is the handling of preferences between rules, for which several approaches have
been presented. In this paper, we consider the problem of implementing
preference handling approaches by means of meta-interpreters in Answer Set
Programming. In particular, we consider the preferred answer set approaches by
Brewka and Eiter, by Delgrande, Schaub and Tompits, and by Wang, Zhou and Lin.
We present suitable meta-interpreters for these semantics using DLV, which is
an efficient engine for ASP. Moreover, we also present a meta-interpreter for
the weakly preferred answer set approach by Brewka and Eiter, which uses the
weak constraint feature of DLV as a tool for expressing and solving an
underlying optimization problem. We also consider advanced meta-interpreters,
which make use of graph-based characterizations and often allow for more
efficient computations. Our approach shows the suitability of ASP in general
and of DLV in particular for fast prototyping. This can be fruitfully exploited
for experimenting with new languages and knowledge-representation formalisms.Comment: 34 pages, appeared as a Technical Report at KBS of the Vienna
University of Technology, see http://www.kr.tuwien.ac.at/research/reports
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
- ā¦