Spot-checkers

On Labor Day weekend, the highway patrol sets up spot-checks at random points on the freeways with the intention of deterring a large fraction of motorists from driving incorrectly. We explore a very similar idea in the context of program checking to ascertain with minimal overhead that a program output is reasonably correct. Our model of spot-checking requires that the spot-checker must run asymptotically much faster than the combined length of the input and output. We then show that the spot-checking model can be applied to problems in a wide range of areas, including problems regarding graphs, sets, and algebra. In particular, we present spot-checkers for sorting, convex hull, element distinctness, set containment, set equality, total orders, and correctness of group and field operations. All of our spot-checkers are very simple to state and rely on testing that the input and/or output have certain simple properties that depend on very few bits. Our results also give property tests as defined by Rubinfeld and Sudan (1996, SIAM J. Comput.25, 252?271), Rubinfeld (1994, “Proc. 35th Foundations of Computer Science,” pp. 288?299), and Goldreich et al. (1998, J. Assoc. Comput. Mach.45, 653?750).

[1]  Ronitt Rubinfeld,et al.  Self-testing/correcting for polynomials and for approximate functions , 1991, STOC '91.

[2]  László Lovász,et al.  Interactive proofs and the hardness of approximating cliques , 1996, JACM.

[3]  Carsten Lund,et al.  Proof verification and hardness of approximation problems , 1992, Proceedings., 33rd Annual Symposium on Foundations of Computer Science.

[4]  F. Vainstein Algebraic methods in hardware/software testing , 1992 .

[5]  Ravi Kumar,et al.  Efficient self-testing/self-correction of linear recurrences , 1996, Proceedings of 37th Conference on Foundations of Computer Science.

[6]  Funda Ergün,et al.  Self-Testing without the Generator Bottleneck , 2000, SIAM J. Comput..

[7]  Mihir Bellare,et al.  Fast Batch Verification for Modular Exponentiation and Digital Signatures , 1998, IACR Cryptol. ePrint Arch..

[8]  Richard J. Lipton,et al.  New Directions In Testing , 1989, Distributed Computing And Cryptography.

[9]  Manuel Blum,et al.  Designing programs that check their work , 1989, STOC '89.

[10]  Manuel Blum,et al.  Self-testing/correcting with applications to numerical problems , 1990, STOC '90.

[11]  Ronitt Rubinfeld,et al.  Fast approximate PCPs , 1999, STOC '99.

[12]  Kireeti Kompella,et al.  Efficient Checkers for Number-Theoretic Computations , 1995, Inf. Comput..

[13]  M. Blum,et al.  Reflections on the Pentium Division Bug , 1995 .

[14]  Manuel Blum,et al.  Checking the correctness of memories , 1991, [1991] Proceedings 32nd Annual Symposium of Foundations of Computer Science.

[15]  J. Aczél,et al.  Lectures on Functional Equations and Their Applications , 1968 .

[16]  Dana Ron,et al.  Property testing and its connection to learning and approximation , 1998, JACM.

[17]  Leonard J. Schulman,et al.  Verifying identities , 1996, Proceedings of 37th Conference on Foundations of Computer Science.

[18]  E. C. Ron,et al.  Functional equations and modelling in science and engineering , 1992 .

[19]  Leonid A. Levin,et al.  Checking computations in polylogarithmic time , 1991, STOC '91.

[20]  Kurt Mehlhorn,et al.  Checking geometric programs or verification of geometric structures , 1996, SCG '96.

[21]  GoldreichOded,et al.  Property testing and its connection to learning and approximation , 1998 .

[22]  Sanjeev Arora,et al.  Probabilistic checking of proofs: a new characterization of NP , 1998, JACM.

[23]  Andrew Chi-Chih Yao,et al.  Probabilistic computations: Toward a unified measure of complexity , 1977, 18th Annual Symposium on Foundations of Computer Science (sfcs 1977).

[24]  Manuel Blum,et al.  Program result-checking: a theory of testing meets a test of theory , 1994, Proceedings 35th Annual Symposium on Foundations of Computer Science.

[25]  Manuel Blum,et al.  Checking approximate computations over the reals , 1993, STOC.

[26]  M. Sudan,et al.  Robust Characterizations of Polynomials and Their Applications to Program Testing , 1993 .

[27]  Carsten Lund,et al.  Non-deterministic exponential time has two-prover interactive protocols , 2005, computational complexity.

[28]  Mihir Bellare,et al.  Batch Verification with Applications to Cryptography and Checking , 1998, LATIN.

[29]  Carsten Lund,et al.  Proof verification and the hardness of approximation problems , 1998, JACM.

[30]  Ronitt Rubinfeld,et al.  Approximate checking of polynomials and functional equations , 1996, Proceedings of 37th Conference on Foundations of Computer Science.

[31]  Ronitt Rubinfeld,et al.  Robust Functional Equations with Applications to Self-Testing/Correcting , 1994 .

[32]  Dana Ron,et al.  Property Testing in Bounded Degree Graphs , 2002, STOC '97.

[33]  Ronitt Rubinfeld,et al.  Robust Characterizations of Polynomials with Applications to Program Testing , 1996, SIAM J. Comput..

[34]  Carsten Lund,et al.  Nondeterministic exponential time has two-prover interactive protocols , 1990, Proceedings [1990] 31st Annual Symposium on Foundations of Computer Science.

[35]  Ronitt Rubinfeld,et al.  Self-testing polynomial functions efficiently and over rational domains , 1992, SODA '92.