Software Quality Journal

, Volume 21, Issue 1, pp 159–200

A framework for testing first-order logic axioms in program verification

Article

DOI: 10.1007/s11219-011-9168-1

Cite this article as:
Ahn, K.Y. & Denney, E. Software Qual J (2013) 21: 159. doi:10.1007/s11219-011-9168-1

Abstract

Program verification systems based on automated theorem provers rely on user-provided axioms in order to verify domain-specific properties of code. However, formulating axioms correctly (that is, formalizing properties of an intended mathematical interpretation) is non-trivial in practice, and avoiding or even detecting unsoundness can sometimes be difficult to achieve. Moreover, speculating soundness of axioms based on the output of the provers themselves is not easy since they do not typically give counterexamples. We adopt the idea of model-based testing to aid axiom authors in discovering errors in axiomatizations. To test the validity of axioms, users define a computational model of the axiomatized logic by giving interpretations to the function symbols and constants in a simple declarative programming language. We have developed an axiom testing framework that helps automate model definition and test generation using off-the-shelf tools for meta-programming, property-based random testing, and constraint solving. We have experimented with our tool to test the axioms used in Auto-Cert, a program verification system that has been applied to verify aerospace flight code using a first-order axiomatization of navigational concepts, and were able to find counterexamples for a number of axioms.

Keywords

Model-based testing Program verification Automated theorem proving Property-based testing Constraint solving 

Copyright information

© Springer Science+Business Media, LLC 2011

Authors and Affiliations

  1. 1.Department of Computer SciencePortland State UniversityPortlandUSA
  2. 2.NASA Ames Research CenterMoffett FieldUSA

Personalised recommendations