Program checking is a new approach to software fault-tolerance. For a program that computes a function, a checker tests whether the program's output is correct for a specific input. Even when the program makes mistakes, the checker uses the program itself to perform the test by applying the program to several inputs related to the original one. The checker provides a probabilistic guarantee of correctness on a particular input on which the program is executed, whereas formal program verification establishes correctness on all inputs prior to execution. In this project, traditional fault-tolerance techniques are combined with program checking to produce new kinds of program checkers that are effective for programs of practical size. In particular, program checking is combined with certification trails and with algorithm-based fault-tolerance, a technique for concurrent error detection. Further, program checking is applied to operating system algorithms that ensure the truth of predicates such as mutual exclusion, deadlock avoidance, and serializability of concurrent transactions.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Application #
9315696
Program Officer
Yechezkel Zalcstein
Project Start
Project End
Budget Start
1994-09-01
Budget End
1997-08-31
Support Year
Fiscal Year
1993
Total Cost
$111,454
Indirect Cost
Name
University of Illinois Urbana-Champaign
Department
Type
DUNS #
City
Champaign
State
IL
Country
United States
Zip Code
61820