PVS (Prototype Verification System) is an environment for constructing clear and precise specifications and for developing readable proofs that have been mechanically verified. It is designed to exploit the synergies between language and deduction, automation and interaction, and theorem proving and model checking. For example, the type system of PVS requires the use of theorem proving to establish type correctness, and conversely, type information is used extensively during a proof. Similarly, decision procedures are heavily used in order to simplify the tedious and obvious steps in a proof leaving the user to interactively supply the high-level steps in a verification. Model checking is one such decision procedure that is used to discharge temporal properties of specific finite-state systems. A variety of examples from functional programming, fault tolerance, and real time computing have been verified using PVS [7]. The most substantial use of PVS has been in the verification of the microcode for selected instructions of a commercial-scale microprocessor called AAMP5 designed by Rockwell-Collins and containing about 500,000 transistors [5]. Most recently, PVS has been applied to the verification of the design of an SRT divider [9]. The key elements of the PVS design are described below in greater detail below.
[1]
Martyn Thomas.
The industrial use of formal methods
,
1993,
Microprocess. Microsystems.
[2]
Mandayam K. Srivas,et al.
Formal verification of the AAMP5 microprocessor: a case study in the industrial use of formal methods
,
1995,
Proceedings of 1995 IEEE Workshop on Industrial-Strength Formal Specification Techniques.
[3]
Natarajan Shankar,et al.
Formal Verification for Fault-Tolerant Architectures: Prolegomena to the Design of PVS
,
1995,
IEEE Trans. Software Eng..
[4]
Natarajan Shankar,et al.
Modular Verification of SRT Division
,
1996,
CAV.
[5]
S Miner Paul,et al.
Defining the IEEE-854 Floating-Point Standard in PVS
,
1995
.
[6]
Robert E. Shostak,et al.
Deciding Combinations of Theories
,
1982,
JACM.
[7]
Michael J. C. Gordon,et al.
Edinburgh LCF: A mechanised logic of computation
,
1979
.
[8]
Chin-Laung Lei,et al.
Efficient Model Checking in Fragments of the Propositional Mu-Calculus (Extended Abstract)
,
1986,
LICS.
[9]
Edmund M. Clarke,et al.
Symbolic Model Checking: 10^20 States and Beyond
,
1990,
Inf. Comput..
[10]
Natarajan Shankar,et al.
An Integration of Model Checking with Automated Proof Checking
,
1995,
CAV.