scispace - formally typeset
Proceedings ArticleDOI

A logic for locally complete abstract interpretations

TLDR
In this paper, the notion of local completeness in abstract interpretation is introduced and a logic for proving both the correctness and incorrectness of some program specification is defined, where the abstract interpretation of a program is defined for a specific set of inputs.
Abstract
We introduce the notion of local completeness in abstract interpretation and define a logic for proving both the correctness and incorrectness of some program specification. Abstract interpretation is extensively used to design sound-by-construction program analyses that over-approximate program behaviours. Completeness of an abstract interpretation A for all possible programs and inputs would be an ideal situation for verifying correctness specifications, because the analysis can be done compositionally and no false alert will arise. Our first result shows that the class of programs whose abstract analysis on A is complete for all inputs has a severely limited expressiveness. A novel notion of local completeness weakens the above requirements by considering only some specific, rather than all, program inputs and thus finds wider applicability. In fact, our main contribution is the design of a proof system, parameterized by an abstraction A, that, for the first time, combines over- and under-approximations of program behaviours. Thanks to local completeness, in a provable triple ⊢ A [P ] c [Q], the assertion Q is an under-approximation of the strongest post-condition post[c](P ) such that the abstractions in A of Q and post[c](P ) coincide. This means that Q is never too coarse, namely, under mild assumptions, the abstract interpretation of c does not yield false alerts for the input P iff Q has no alert. Thus, ⊢ A [P ] c [Q] not only ensures that all the alerts raised in Q are true ones, but also that if Q does not raise alerts then c is correct.

read more

Citations
More filters
Book ChapterDOI

On Algebra of Program Correctness and Incorrectness

TL;DR: In this paper, a Kleene algebra with diamond operators and countable joins of tests is used for reasoning about the image of the embedding of Hoare Logic (HL) specifications.
Journal ArticleDOI

Quantitative strongest post: a calculus for reasoning about the flow of quantitative information

TL;DR: This work presents a novel strongest-postcondition-style calculus for quantitative reasoning about non-deterministic programs with loops and develops a quantitative strongest liberal post, which is a more liberal version of O'Hearn's recent incorrectness logic.
Book ChapterDOI

Incorrectness Logic for Graph Programs

TL;DR: In this article, an under-approximate program logic for a non-deterministic graph programming language is presented, which can be used to reason deductively about program incorrectness, defined by the presence of forbidden graph structure or by finitely failing executions.
Proceedings ArticleDOI

Abstract interpretation repair

TL;DR: This work establishes necessary and sufficient conditions for the existence of an optimal, locally complete refinement, called pointed shell, of abstract interpretation, and defines two repair strategies to remove all false-alarms along a given abstract computation.
Book ChapterDOI

Incorrectness Logic for Graph Programs

TL;DR: In this paper, an under-approximate program logic for a non-deterministic graph programming language is presented, which can be used to reason deductively about program incorrectness, defined by the presence of forbidden graph structure or by finitely failing executions.
References
More filters
Proceedings ArticleDOI

Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints

TL;DR: In this paper, the abstract interpretation of programs is used to describe computations in another universe of abstract objects, so that the results of abstract execution give some information on the actual computations.
Journal Article

An Axiomatic Basis for Computer Programming

Proceedings ArticleDOI

Systematic design of program analysis frameworks

TL;DR: The systematic and correct design of program analysis frameworks with respect to a formal semantics is devoted to the main elements of the lattice theoretic approach to approximate semantic analysis of programs.
Book ChapterDOI

Assigning Meanings to Programs

TL;DR: This paper attempts to provide an adequate basis for formal definitions of the meanings of programs in appropriately defined programming languages, in such a way that a rigorous standard is established for proofs about computer programs, including proofs of correctness, equivalence, and termination.
Book

The Formal Semantics of Programming Languages: An Introduction

TL;DR: The Formal Semantics of Programming Languages" provides the basic mathematical techniques necessary for those who are beginning a study of semantics and logics of programming languages, including the vital area of concurrency.
Related Papers (5)