3 research outputs found
What's Decidable About Sequences?
We present a first-order theory of sequences with integer elements,
Presburger arithmetic, and regular constraints, which can model significant
properties of data structures such as arrays and lists. We give a decision
procedure for the quantifier-free fragment, based on an encoding into the
first-order theory of concatenation; the procedure has PSPACE complexity. The
quantifier-free fragment of the theory of sequences can express properties such
as sortedness and injectivity, as well as Boolean combinations of periodic and
arithmetic facts relating the elements of the sequence and their positions
(e.g., "for all even i's, the element at position i has value i+3 or 2i"). The
resulting expressive power is orthogonal to that of the most expressive
decidable logics for arrays. Some examples demonstrate that the fragment is
also suitable to reason about sequence-manipulating programs within the
standard framework of axiomatic semantics.Comment: Fixed a few lapses in the Mergesort exampl
Software Model Checking with Uninterpreted Functions
Software model checkers attempt to algorithmically synthesize an inductive
proof that a piece of software is safe.
Such proofs are composed of complex logical assertions about program variables
and control structures, and are computationally expensive to produce.
Our unifying motivation is to increase the efficiency of verifying software
control behavior despite its dependency on data.
Control properties include important topics such as mutual exclusion, safe
privilege elevation, and proper usage of networking and other APIs.
These concerns motivate our techniques and evaluations.
Our approach integrates an efficient abstraction procedure based on the logic
of equality with uninterpreted functions (EUF) into the core of a modern model
checker.
Our checker, called euforia, targets control properties by treating a
program's data operations and relations as uninterpreted functions and
predicates, respectively.
This reduces the cost of building inductive proofs, especially for verifying
control relationships in the presence of complex but irrelevant data
processing.
We show that our method is sound and terminates.
We provide a ground-up implementation and
evaluate the abstraction on a variety of software verification benchmarks.
We show how to extend this abstraction to memory-manipulating programs.
By judicious abstraction of array operations to EUF, we show that we can
directly reason about array reads and adaptively learn lemmas
about array writes leading to significant performance improvements over
existing approaches.
We show that our abstraction of array operations completely eliminates much of
the array theory reasoning otherwise required.
We report on experiments with and without abstraction and compare our checker
to the state of the art.
Programs with procedures pose unique difficulties and opportunities.
We show how to retrofit a model checker not supporting procedures so that it
supports modular analysis of programs with non-recursive procedures.
This technique applies to euforia as well as other logic-based algorithms.
We show that this technique enables logical assertions about procedure bodies
to be reused at different call sites.
We report on experiments on software benchmarks compared to the alternative of
inlining all procedures.PHDComputer Science & EngineeringUniversity of Michigan, Horace H. Rackham School of Graduate Studieshttp://deepblue.lib.umich.edu/bitstream/2027.42/168092/1/dlbueno_1.pd