Results 1 
7 of
7
Transformation Rules for Locally Stratified Constraint Logic Programs
, 2004
"... We propose a set of transformation rules for constraint logic programs with negation. We assume that every program is locally strati ed and, thus, it has a unique perfect model. We give sucient conditions which ensure that the proposed set of transformation rules preserves the perfect model of ..."
Abstract

Cited by 14 (13 self)
 Add to MetaCart
We propose a set of transformation rules for constraint logic programs with negation. We assume that every program is locally strati ed and, thus, it has a unique perfect model. We give sucient 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.
Beyond TamakiSato Style Unfold/Fold Transformations for Normal Logic Programs
 IN ASIAN, LNCS 1742
, 1999
"... Unfold/fold transformation systems for logic programs have been extensively investigated. Existing unfold/fold transformation systems for normal logic programs allow only TamakiSato style folding using clauses from a previous program in the transformation sequence: i.e., they fold using a singl ..."
Abstract

Cited by 11 (3 self)
 Add to MetaCart
Unfold/fold transformation systems for logic programs have been extensively investigated. Existing unfold/fold transformation systems for normal logic programs allow only TamakiSato style folding using clauses from a previous program in the transformation sequence: i.e., they fold using a single, nonrecursive clause. In this paper we present a transformation system that permits folding in the presence of recursion, disjunction, as well as negation. We show that the transformations are correct with respect to various semantics of negation including the wellfounded model and stable model semantics.
Proving properties of constraint logic programs by eliminating existential variables
 In Proc. ICLP ’06, LNCS 4079
, 2006
"... Abstract. We propose a method for proving rst order properties of constraint logic programs which manipulate nite lists of real numbers. Constraints are linear equations and inequations over reals. Our method consists in converting any given rst order formula into a strati ed constraint logic progra ..."
Abstract

Cited by 5 (5 self)
 Add to MetaCart
Abstract. We propose a method for proving rst order properties of constraint logic programs which manipulate nite lists of real numbers. Constraints are linear equations and inequations over reals. Our method consists in converting any given rst order formula into a strati ed constraint logic program and then applying a suitable unfold/fold transformation strategy that preserves the perfect model. Our strategy is based on the elimination of existential variables, that is, variables which occur in the body of a clause and not in its head. Since, in general, the rst order properties of the class of programs we consider are undecidable, our strategy is necessarily incomplete. However, experiments show that it is powerful enough to prove several nontrivial program properties. 1
Program Derivation = Rules + Strategies
 Computational Logic: Logic Programming and Beyond (Essays in honour of Bob Kowalski, Part I), Lecture Notes in Computer Science 2407
, 2001
"... In a seminal paper [38] Prof. Robert Kowalski advocated the paradigm Algorithm = Logic + Control which was intended to characterize program executions. Here we want to illustrate the corresponding paradigm Program Derivation = Rules + Strategies which is intended to characterize program derivations, ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
In a seminal paper [38] Prof. Robert Kowalski advocated the paradigm Algorithm = Logic + Control which was intended to characterize program executions. Here we want to illustrate the corresponding paradigm Program Derivation = Rules + Strategies which is intended to characterize program derivations, rather than executions. During program execution, the Logic component guarantees that the computed results are correct, that is, they are true facts in the intended model of the given program, while the Control component ensures that those facts are derived in an efficient way. Likewise, during program derivation, the Rules component guarantees that the derived programs are correct and the Strategies component ensures that the derived programs are efficient.
VERIFYING INFINITE STATE SYSTEMS BY SPECIALIZING CONSTRAINT LOGIC PROGRAMS
"... We propose a method for the specification and the automated verification of temporal properties of infinite state reactive systems. Given a reactive system K and a formula ϕ of the branching time temporal logic CTL, we construct a locally stratified constraint logic program PK[ϕ] such that the syste ..."
Abstract

Cited by 3 (3 self)
 Add to MetaCart
We propose a method for the specification and the automated verification of temporal properties of infinite state reactive systems. Given a reactive system K and a formula ϕ of the branching time temporal logic CTL, we construct a locally stratified constraint logic program PK[ϕ] such that the system K verifies ϕ if and only if prop ∈ M(PK[ϕ]), where prop is a predicate symbol defined in PK[ϕ] and M(PK[ϕ]) is the perfect model of PK[ϕ]. Then we check whether or not prop ∈ M(PK[ϕ]) by specializing the program PK[ϕ] w.r.t. prop and deriving a new program Psp containing either the fact prop ← (in which case the temporal formula ϕ is verified by the system) or no clause for prop (in which case the temporal formula ϕ is not verified by the system). Our specialization method makes use of: (i) a set of specialization rules that preserve the perfect model of constraint logic programs, and (ii) an automatic strategy that guides the application of these rules for deriving the specialized program Psp. Our strategy always terminates and is sound for verifying CTL formulas. Due to the undecidability of CTL formulas in the case of infinite state systems, our strategy is incomplete, that is, we may derive a specialized program Psp containing a clause for prop different from the fact prop ←. However, as indicated by the
TRANSFORMATIONS OF LOGIC PROGRAMS ON INFINITE LISTS
"... We consider an extension of logic programs, called ωprograms, that can be used to define predicates over infinite lists. ω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 ωprograms is ..."
Abstract
 Add to MetaCart
We consider an extension of logic programs, called ωprograms, that can be used to define predicates over infinite lists. ω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 ωprograms is an extension of the perfect model semantics. We present variants of the familiar unfold/fold rules which can be used for transforming ω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 ωprograms. We demonstrate the power of our transformationbased verification methodology by proving some properties of Büchi automata and ωregular languages.
Program Transformation for Program Verification
"... We present a transformational approach to program verification and software model checking that uses three main ingredients: (i) Constraint Logic Programming (CLP), (ii) metaprogramming and program specialization, and (iii) proof by transformation. (i) Constraints are used for representing in a comp ..."
Abstract
 Add to MetaCart
We present a transformational approach to program verification and software model checking that uses three main ingredients: (i) Constraint Logic Programming (CLP), (ii) metaprogramming and program specialization, and (iii) proof by transformation. (i) Constraints are used for representing in a compact way (finite or infinite) sets of values or memory states, and logic is used for expressing properties of program executions [2, 4, 5]. The least fixpoint semantics and negation allow us to denote both the least models and the greatest models of programs, and thus to reason about the (finite or infinite) behaviour of programs. (ii) Metaprogramming is used for getting a verification technique which is parametric with respect to the programming language in use. In particular, we introduce a CLP program I which defines the (meta)interpreter of the programming language in which the program P to be verified is written. Then, in order to gain efficiency, we remove this interpretation layer by specializing the interpreter I with respect to the given program P [1, 6, 7]. The property ϕ that should be proved (or disproved) about program P, is expressed through the CLP clauses that characterize the set of states in which ϕ holds (or does not hold, respectively). (iii) Having derived a CLP program ˜ P whose semantics represents the behaviour of the given program P and the property ϕ to be verified, we start