A Tutorial Introduction to Theorem Prover: PVS ... - Semantic Scholar

4 downloads 0 Views 635KB Size Report
2Judy Crow et al, WIFT'95. Shamim (FATA, DCS). PVS Tutorial ..... Judy Crow, Sam Owre, John Rushby, Natarajan Shankar, and Mandayam. Srivas. A tutorial ...
A Tutorial Introduction to Theorem Prover: PVS And Its Application in Promela-Lite Shamim Ripon1 Department of Computing Science University of Glasgow, Scotland 1 Supported

by ARTE Grant

FATA Seminar, 24 February, 2009

Shamim (FATA, DCS)

PVS Tutorial

FATA’09

1 / 37

Outline

1

PVS Overview

2

PVS and My Experience

3

PVS and Promela-Lite

4

Summary

Shamim (FATA, DCS)

PVS Tutorial

FATA’09

2 / 37

PVS: What is it? PVS – Prototype Verification System A general purpose specification language integrated with theorem prover, and some supported tools Interactive theorem prover with powerful commands and user defined strategies The language is based on high-order logic Widely used in both academia and industry Applications: safety-critical system, hardware, distributed systems, algorithms, mathematics. . .

Shamim (FATA, DCS)

PVS Tutorial

FATA’09

3 / 37

PVS has been available since 1993 Freely distributed under license of SRI1 Run on Solaris or Linux Uses Emacs and TCL/TK for its interface

1

http://pvs.csl.sri.com/ Shamim (FATA, DCS)

PVS Tutorial

FATA’09

4 / 37

PVS Types

Base Types: bool, int, nat etc. Enumerated Types: {Red, Green, Blue} Function, record, tuple types: ◮ ◮ ◮

[ number -> number ] [# flag : bool, value: [bool, number]

nat #]

Predicate Subtype ◮ ◮

{x: real | x /= 0} A: TYPE = {x: T | p(x)} where p:[T -> bool]

Shamim (FATA, DCS)

PVS Tutorial

FATA’09

5 / 37

Recursive Types ◮

list[T: TYPE]: DATATYPE BEGIN null: null? cons(car: T, cdr: list): END list

cons?

Dependant Types ◮ ◮

[n: [n:

nat -> { nat | m

Suggest Documents