Results 1 -
6 of
6
Parametric completeness for separation theories
, 2013
"... In this paper, we close the logical gap between provability in the logic BBI, which is the propositional basis for separation logic, and validity in an intended class of separation models, as employed in applications of separation logic such as program verification. An intended class of separation m ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
(Show Context)
In this paper, we close the logical gap between provability in the logic BBI, which is the propositional basis for separation logic, and validity in an intended class of separation models, as employed in applications of separation logic such as program verification. An intended class of separation models is usually specified by a collection of axioms describing the specific model properties that are expected to hold, which we call a separation theory. Our main contributions are as follows. First, we show that sev-eral typical properties of separation theories are not definable in BBI. Second, we show that these properties become definable in a suitable hybrid extension of BBI, obtained by adding a theory of naming to BBI in the same way that hybrid logic extends normal modal logic. The binder-free extension HyBBI captures most of the properties we consider, and the full extension HyBBI(↓) with the usual ↓ binder of hybrid logic covers all these properties. Third, we present an axiomatic proof system for our hybrid logic whose extension with any set of “pure ” axioms is sound and complete with respect to the models satisfying those axioms. As a corollary of this general result, we obtain, in a parametric manner, a sound and com-plete axiomatic proof system for any separation theory from our considered class. To the best of our knowledge, this class includes all separation theories appearing in the published literature. Categories and Subject Descriptors F.3.1 [Logics and Mean-
Constraint Handling Rules -- What Else?
"... Constraint Handling Rules (CHR) is both an effective con-current declarative constraint-based programming language and a versa-tile computational formalism. While conceptually simple, CHR is distin-guished by a remarkable combination of desirable features: – a semantic foundation in classical and ..."
Abstract
- Add to MetaCart
Constraint Handling Rules (CHR) is both an effective con-current declarative constraint-based programming language and a versa-tile computational formalism. While conceptually simple, CHR is distin-guished by a remarkable combination of desirable features: – a semantic foundation in classical and linear logic, – an effective and efficient sequential and parallel execution model – guaranteed properties like the anytime online algorithm properties – powerful analysis methods for deciding essential program properties. This overview of some CHR-related research and applications is by no means meant to be complete. Essential introductory reading for CHR provide the survey article [125] and the books [56, 63]. Up-to-date in-formation on CHR can be found online at the CHR web-page www. constraint-handling-rules.org, including the slides of the keynote talk associated with this article. In addition, the CHR website dtai.
A Rule-based Verification Strategy for Array Manipulating Programs
, 2015
"... We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple {ϕ} prog {ψ} that defines a par ..."
Abstract
- Add to MetaCart
We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple {ϕ} prog {ψ} that defines a partial correctness property of an imperative program prog, we encode the negation of the property as a predicate incorrect defined by a CLP program P, and we show that the property holds by proving that incorrect is not a consequence of P. Program verification is performed by applying a sequence of semantics preserving transformation rules and deriving a new CLP program T such that incorrect is a consequence of P iff it is a consequence of T. The rules are applied according to an automatic strategy whose objective is to derive a program T that satisfies one of the following properties: either (i) T is the empty set of clauses, hence proving that incorrect does not hold and prog is correct, or (ii) T contains the fact incorrect, hence proving that prog is incorrect. Our transformation strategy makes use of an axiomatization of the theory of arrays for the manipulation of array constraints, and also applies the widening and convex hull operators for the generalization of linear integer constraints. The strategy has been implemented in the VeriMAP transformation system and it has been shown to be quite effective and efficient on a set of benchmark array programs taken from the literature.
ISTITUTO DIANALISI DEISISTEMI ED INFORMATICA CONSIGLIO NAZIONALE DELLE RICERCHE
"... We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple fpreg prog fpostg dening a parti ..."
Abstract
- Add to MetaCart
(Show Context)
We present a method for verifying properties of imperative programs that manipulate integer arrays. Imperative programs and their properties are represented by using Constraint Logic Programs (CLP) over integer arrays. Our method is refutational. Given a Hoare triple fpreg prog fpostg dening a partial correctness property of an imperative program prog, we encode the negation of the property as a predicate incorrect dened by a CLP program P, and we show that the property holds by proving that incorrect is not a consequence of P. Program veri cation is performed by applying a sequence of semantics preserving transformation rules and deriving a new CLP program T such that incorrect is a consequence of P i it is a consequence of T. The rules are applied according to an automatic strategy whose objective is to derive a program T that satises one of the following properties: either (i) T is the empty set of clauses, hence proving that incorrect does not hold and prog is correct, or (ii) T contains the fact incorrect, hence proving that prog is incorrect. Our transformation strategy
Program Verification using Constraint Handling Rules and Array Constraint Generalizations?
"... Abstract. The transformation of constraint logic programs (CLP pro-grams) has been shown to be an effective methodology for verifying prop-erties of imperative programs. By following this methodology, we encode the negation of a partial correctness property of an imperative program prog as a predica ..."
Abstract
- Add to MetaCart
(Show Context)
Abstract. The transformation of constraint logic programs (CLP pro-grams) has been shown to be an effective methodology for verifying prop-erties of imperative programs. By following this methodology, we encode the negation of a partial correctness property of an imperative program prog as a predicate incorrect defined by a CLP program P, and we show that prog is correct by transforming P into the empty program through the application of semantics preserving transformation rules. Some of these rules perform replacements of constraints that encode properties of the data structures manipulated by the program prog. In this paper we show that Constraint Handling Rules (CHR) are a suit-able formalism for representing and applying constraint replacements during the transformation of CLP programs. In particular, we consider programs that manipulate integer arrays and we present a CHR encod-ing of a constraint replacement strategy based on the theory of arrays. We also propose a novel generalization strategy for constraints on inte-ger arrays that combines the CHR constraint replacement strategy with various generalization operators for linear constraints, such as widening and convex hull. Generalization is controlled by additional constraints that relate the variable identifiers in the imperative program prog and the CLP representation of their values. The method presented in this paper has been implemented and we have demonstrated its effectiveness on a set of benchmark programs taken from the literature. 1