main.h22.gif (3640 bytes) Ronitt Rubinfeld
Assistant Professor
ronitt@cs.cornell.edu
http://www.cs.cornell.edu/faculty/home/ronitt/ronitt.html
Ph.D. University of California, Berkeley, 1990

Checking

The study of program checkers, self-testing programs, and self-correcting programs is a new approach to ensuring the correctness of program results. The key idea is to allow one to use a program to compute a function without having to trust a priori that it works correctly. This is accomplished by having a checker determine whether the program gives the correct answer on a particular input.

Our work introduced two new concepts that are useful to the development of such checkers: A self-tester determines whether a program is correct on most inputs, and a self-corrector takes a program that is correct on most inputs and uses it to construct a new program that is correct on every input with high probability. Program checking is particularly interesting for problems that are easy to specify but for which efficient programs may be very complicated. The goal of our research is to characterize which functions have fast and simple checkers. We are conducting a number of investigations of checkers for a variety of problems, including problems from algebra, graph theory, and computational geometry. One particularly fruitful line of research concerns self-testers and self-correctors based on properties satisfied by the function; for example, the function f(x)=x is uniquely specified by the properties:

(1) for all x,y, f(x)+f(y)=f(x+y)

(2) for all x, f(x)+1=f(x+1).

We used these properties to construct self-testers and self-correctors for several classes of functions, including linear functions, many trigonometric functions, and low degree polynomial functions. We have recently shown that our results apply to the setting of real-valued computation, where the output of the program is approximate instead of exact. Our results borrow techniques from and have implications to the stability theory of functional equations.

Recent papers:

1.  Funda Ergun, S. Ravi Kumar, Ronitt Rubinfeld, ``Approximate Checking of Polynomials and Functional Equations'', In Proc. 37th IEEE Conference on Foundations of Computer Science, 1996.


2.  Ronitt Rubinfeld, ``Robust Functional Equations and their Applications to Program Testing.'' Preliminary version in Proc. 35th IEEE Conference on Foundations of Computer Science, 1994.


3.  Ronitt Rubinfeld, Madhu Sudan, ``Robust Characterizations of Polynomials and their Applications to Program Testing.'' In SIAM J. of Computing, April 1996.


4.  Ronitt Rubinfeld. ``Designing Checkers for Programs that Run in Parallel.'' In Algorithmica, April 1996.


5.  Blum, M., Luby, M., Rubinfeld, R., ``Self-Testing/Correcting with Applications to Numerical Problems,'' In J. Comp. Sys. Sci. Vol. 47, No. 3, December 1993 (special issue on STOC 1990). Preliminary abstract appears in Proc. 22th ACM Symposium on Theory of Computing, 1990.


6.  Rubinfeld, R., ``A Mathematical Theory of Self-Checking, Self-Testing and Self-Correcting Programs'' , PhD Thesis, U.C. Berkeley, August 1990. ICSI Technical Report No. TR-90-054.