2,235 research outputs found
The Parma Polyhedra Library: Toward a Complete Set of Numerical Abstractions for the Analysis and Verification of Hardware and Software Systems
Since its inception as a student project in 2001, initially just for the
handling (as the name implies) of convex polyhedra, the Parma Polyhedra Library
has been continuously improved and extended by joining scrupulous research on
the theoretical foundations of (possibly non-convex) numerical abstractions to
a total adherence to the best available practices in software development. Even
though it is still not fully mature and functionally complete, the Parma
Polyhedra Library already offers a combination of functionality, reliability,
usability and performance that is not matched by similar, freely available
libraries. In this paper, we present the main features of the current version
of the library, emphasizing those that distinguish it from other similar
libraries and those that are important for applications in the field of
analysis and verification of hardware and software systems.Comment: 38 pages, 2 figures, 3 listings, 3 table
A Static Analyzer for Large Safety-Critical Software
We show that abstract interpretation-based static program analysis can be
made efficient and precise enough to formally verify a class of properties for
a family of large programs with few or no false alarms. This is achieved by
refinement of a general purpose static analyzer and later adaptation to
particular programs of the family by the end-user through parametrization. This
is applied to the proof of soundness of data manipulation operations at the
machine level for periodic synchronous safety critical embedded software. The
main novelties are the design principle of static analyzers by refinement and
adaptation through parametrization, the symbolic manipulation of expressions to
improve the precision of abstract transfer functions, the octagon, ellipsoid,
and decision tree abstract domains, all with sound handling of rounding errors
in floating point computations, widening strategies (with thresholds, delayed)
and the automatic determination of the parameters (parametrized packing)
Transfer Function Synthesis without Quantifier Elimination
Traditionally, transfer functions have been designed manually for each
operation in a program, instruction by instruction. In such a setting, a
transfer function describes the semantics of a single instruction, detailing
how a given abstract input state is mapped to an abstract output state. The net
effect of a sequence of instructions, a basic block, can then be calculated by
composing the transfer functions of the constituent instructions. However,
precision can be improved by applying a single transfer function that captures
the semantics of the block as a whole. Since blocks are program-dependent, this
approach necessitates automation. There has thus been growing interest in
computing transfer functions automatically, most notably using techniques based
on quantifier elimination. Although conceptually elegant, quantifier
elimination inevitably induces a computational bottleneck, which limits the
applicability of these methods to small blocks. This paper contributes a method
for calculating transfer functions that finesses quantifier elimination
altogether, and can thus be seen as a response to this problem. The
practicality of the method is demonstrated by generating transfer functions for
input and output states that are described by linear template constraints,
which include intervals and octagons.Comment: 37 pages, extended version of ESOP 2011 pape
Octagonal Domains for Continuous Constraints
International audienceDomains in Continuous Constraint Programming (CP) are generally represented with intervals whose -ary Cartesian product (box) approximates the solution space. This paper proposes a new representation for continuous variable domains based on octagons. We generalize local consistency and split to this octagon representation, and we propose an octagonal-based branch and prune algorithm. Preliminary experimental results show promising performance improvements on several classical benchmarks
Modular Constraint Solver Cooperation via Abstract Interpretation
Cooperation among constraint solvers is difficult because different solving
paradigms have different theoretical foundations. Recent works have shown that
abstract interpretation can provide a unifying theory for various constraint
solvers. In particular, it relies on abstract domains which capture constraint
languages as ordered structures. The key insight of this paper is viewing
cooperation schemes as abstract domains combinations. We propose a modular
framework in which solvers and cooperation schemes can be seamlessly added and
combined. This differs from existing approaches such as SMT where the
cooperation scheme is usually fixed (e.g., Nelson-Oppen). We contribute to two
new cooperation schemes: (i) interval propagators completion that allows
abstract domains to exchange bound constraints, and (ii) delayed product which
exchanges over-approximations of constraints between two abstract domains.
Moreover, the delayed product is based on delayed goal of logic programming,
and it shows that abstract domains can also capture control aspects of
constraint solving. Finally, to achieve modularity, we propose the shared
product to combine abstract domains and cooperation schemes. Our approach has
been fully implemented, and we provide various examples on the flexible job
shop scheduling problem. Under consideration for acceptance in TPLP.Comment: Paper presented at the 36th International Conference on Logic
Programming (ICLP 2020), University Of Calabria, Rende (CS), Italy, September
2020, 17 pages. v2: Fix an example in Section 3.2 (improved closure
- …