Advanced Theorem Proving Techniques in PVS and Applications

The Prototype Verification System (PVS) is an interactive verification environment that combines a strongly typed specification language with a classical higher-order logic theorem prover. The PVS type system supports: predicate subtypes, dependent types, abstract data types, compound types such as records, unions, and tuples, and basic types such as numbers, Boolean values, and strings. The PVS theorem prover includes decision procedures for a variety of theories such as linear arithmetic, propositional logic, and temporal logic. This paper surveys advanced PVS features, including: types for specifications, implicit induction, iterations, rapid prototyping, strategy writing, and computational reflection. These features are illustrated with simple examples taken from NASA PVS developments.

[1]  Ben L. Di Vito A PVS Prover Strategy Package for Common Manipulations , 2002 .

[2]  Tobias Nipkow,et al.  Random testing in Isabelle/HOL , 2004, Proceedings of the Second International Conference on Software Engineering and Formal Methods, 2004. SEFM 2004..

[3]  César A. Muñoz,et al.  Formalization of Bernstein Polynomials and Applications to Global Optimization , 2013, Journal of Automated Reasoning.

[4]  Ben L. Di Vito,et al.  The NASA STI Program Office provides , 1997 .

[5]  Owre Sam,et al.  Theory Interpretations in PVS , 2001 .

[6]  Marko C. J. D. van Eekelen,et al.  Generating Verifiable Java Code from Verified PVS Specifications , 2012, NASA Formal Methods.

[7]  César Muñoz Batch Proving and Proof Scripting in PVS , 2007 .

[8]  Panagiotis Manolios,et al.  Termination Analysis with Calling Context Graphs , 2006, CAV.

[9]  Myla Archer,et al.  Developing User Strategies in PVS: A Tutorial , 2003 .

[10]  César A. Muñoz,et al.  Verified Real Number Calculations: A Library for Interval Arithmetic , 2007, IEEE Transactions on Computers.

[11]  Toby Walsh,et al.  Automated Deduction—CADE-11 , 1992, Lecture Notes in Computer Science.

[12]  Dennis M. Bushnell,et al.  Real automation in the field , 2001 .

[13]  Natarajan Shankar,et al.  Evaluating, Testing, and Animating PVS Specications , 2001 .

[14]  Owre Sam,et al.  Abstract Datatypes in PVS , 1997 .

[15]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[16]  César A. Muñoz,et al.  Rapid Prototyping in PVS , 2013 .

[17]  J. Harrison Metatheory and Reflection in Theorem Proving: A Survey and Critique , 1995 .

[18]  Shankar Natarajan,et al.  The Formal Semantics of PVS , 1999 .

[19]  Natarajan Shankar,et al.  Subtypes for Specifications: Predicate Subtyping in PVS , 1998, IEEE Trans. Software Eng..