Computer Science > Programming Languages

Title:Decidable Verification of Uninterpreted Programs

Abstract: We study the problem of completely automatically verifying uninterpreted
programs---programs that work over arbitrary data models that provide an
interpretation for the constants, functions and relations the program uses. The
verification problem asks whether a given program satisfies a postcondition
written using quantifier-free formulas with equality on the final state, with
no loop invariants, contracts, etc. being provided. We show that this problem
is undecidable in general. The main contribution of this paper is a subclass of
programs, called coherent programs that admits decidable verification, and can
be decided in PSPACE. We then extend this class of programs to classes of
programs that are $k$-coherent, where $k \in \mathbb{N}$, obtained by
(automatically) adding $k$ ghost variables and assignments that make them
coherent. We also extend the decidability result to programs with recursive
function calls and prove several undecidability results that show why our
restrictions to obtain decidability seem necessary.