Designing programs that check their work

  • Authors:
  • Manuel Blum;Sampath Kannan

  • Affiliations:
  • University of California at Berkeley, Berkeley, California;University of California at Berkeley, Berkeley, California

  • Venue:
  • Journal of the ACM (JACM)
  • Year:
  • 1995

Quantified Score

Hi-index 0.01

Visualization

Abstract

A program correctness checker is an algorithm for checking the output of a computation. That is, given a program and an instance on which the program is run, the checker certifies whether the output of the program on that instance is correct. This paper defines the concept of a program checker. It designs program checkers for a few specific and carefully chosen problems in the class FP of functions computable in polynomial time. Problems in FP for which checkers are presented in this paper include Sorting, Matrix Rank and GCD. It also applies methods of modern cryptography, especially the idea of a probabilistic interactive proof, to the design of program checkers for group theoretic computations.Two structural theorems are proven here. One is a characterization of problems that can be checked. The other theorem establishes equivalence classes of problems such that whenever one problem in a class is checkable, all problems in the class are checkable.