Self-testing/correcting with applications to numerical problems

Suppose someone gives us an extremely cast program P that we can call as a black box to compute a function f. Should we trust that P works correctly? A self-testing/correcting pair for f allows us to: (1) estimate the probability that P(x) ¬= f(x) when x is randomly chosen; (2) on any input x, compute f(x) correctly as long as P is not too faulty on average. Furthermore, both (1) and (2) take time only slightly more than the original running time of P. We present general techniques for constructing simple to program self-testing/correcting pairs for a variety of numerical functions, including integer multiplication, modular multiplication, matrix multiplication, inverting matrices, computing the determinant of a matrix, computing the rank of a matrix, integer division, modular exponentiation, and polynomial multiplication

[1]  V. Strassen Gaussian elimination is not optimal , 1969 .

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

[3]  Joan Feigenbaum,et al.  Lower bounds on random-self-reducibility , 1990, Proceedings Fifth Annual Structure in Complexity Theory Conference.

[4]  Richard M. Karp,et al.  Monte-Carlo Approximation Algorithms for Enumeration Problems , 1989, J. Algorithms.

[5]  Manuel Blum,et al.  How to generate cryptographically strong sequences of pseudo random bits , 1982, 23rd Annual Symposium on Foundations of Computer Science (sfcs 1982).

[6]  Manuel Blum,et al.  Program Result Checking against Adaptive Programs and in Cryptographic Settings , 1989, Distributed Computing And Cryptography.

[7]  J. Rosser,et al.  Approximate formulas for some functions of prime numbers , 1962 .

[8]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[9]  Michael Kaminski A note on probabilistically verifying integer and polynomial products , 1989, JACM.

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

[11]  R. Rubinfeld A mathematical theory of self-checking, self-testing and self-correcting programs , 1991 .

[12]  László Babai,et al.  Trading group theory for randomness , 1985, STOC '85.

[13]  Silvio Micali,et al.  The Knowledge Complexity of Interactive Proof Systems , 1989, SIAM J. Comput..

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

[15]  Manuel Blum,et al.  Program Correctness: Can One Test For It? , 1989, IFIP Congress.

[16]  Avi Wigderson,et al.  Multi-prover interactive proofs: how to remove intractability assumptions , 2019, STOC '88.

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

[18]  Don Coppersmith,et al.  Matrix multiplication via arithmetic progressions , 1987, STOC.

[19]  Rusins Freivalds,et al.  Fast Probabilistic Algorithms , 1979, MFCS.

[20]  Andrew Chi-Chih Yao,et al.  Coherent Functions and Program ( extended abstract ) Checkers , .

[21]  Joan Feigenbaum,et al.  Hiding Instances in Multioracle Queries , 1990, STACS.

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

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