Defining Software by Continuous, Smooth Functions
IEEE Transactions on Software Engineering
The algorithmic analysis of hybrid systems
Theoretical Computer Science - Special issue on hybrid systems
Software aspects of strategic defense systems
Communications of the ACM
On the degree of Boolean functions as real polynomials
Computational Complexity - Special issue on circuit complexity
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Neural Networks for Pattern Recognition
Neural Networks for Pattern Recognition
Discovering affine equalities using random interpretation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Probabilistic Abstract Interpretation and Statistical Testing
PAPM-PROBMIV '02 Proceedings of the Second Joint International Workshop on Process Algebra and Probabilistic Methods, Performance Modeling and Verification
Abstract Interpretation of Probabilistic Semantics
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Using HyTech to Synthesize Control Parameters for a Steam Boiler
Formal Methods for Industrial Applications, Specifying and Programming the Steam Boiler Control (the book grow out of a Dagstuhl Seminar, June 1995).
State abstraction for programmable reinforcement learning agents
Eighteenth national conference on Artificial intelligence
AutoBayes: a system for generating data analysis programs from statistical models
Journal of Functional Programming
Programming by sketching for bit-streaming programs
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Combinatorial sketching for finite programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Probabilistic Abstract Interpretation of Imperative Programs using Truncated Normal Distributions
Electronic Notes in Theoretical Computer Science (ENTCS)
Continuity analysis of programs
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Synthesizing geometry constructions
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Smoothing a program soundly and robustly
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Probabilistically accurate program transformations
SAS'11 Proceedings of the 18th international conference on Static analysis
Randomized accuracy-aware program transformations for efficient approximate computations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuity and robustness of programs
Communications of the ACM
EULER: a system for numerical optimization of programs
CAV'12 Proceedings of the 24th international conference on Computer Aided Verification
Bridging boolean and quantitative synthesis using smoothed proof search
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
LICS '13 Proceedings of the 2013 28th Annual ACM/IEEE Symposium on Logic in Computer Science
Hi-index | 0.02 |
We present smooth interpretation, a method to systematically approximate numerical imperative programs by smooth mathematical functions. This approximation facilitates the use of numerical search techniques like gradient descent for program analysis and synthesis. The method extends to programs the notion of Gaussian smoothing, a popular signal-processing technique that filters out noise and discontinuities from a signal by taking its convolution with a Gaussian function. In our setting, Gaussian smoothing executes a program according to a probabilistic semantics; the execution of program P on an input x after Gaussian smoothing can be summarized as follows: (1) Apply a Gaussian perturbation to x -- the perturbed input is a random variable following a normal distribution with mean x. (2) Compute and return the expected output of P on this perturbed input. Computing the expectation explicitly would require the execution of P on all possible inputs, but smooth interpretation bypasses this requirement by using a form of symbolic execution to approximate the effect of Gaussian smoothing on P. The result is an efficient but approximate implementation of Gaussian smoothing of programs. Smooth interpretation has the effect of attenuating features of a program that impede numerical searches of its input space -- for example, discontinuities resulting from conditional branches are replaced by continuous transitions. We apply smooth interpretation to the problem of synthesizing values of numerical control parameters in embedded control applications. This problem is naturally formulated as one of numerical optimization: the goal is to find parameter values that minimize the error between the resulting program and a programmer-provided behavioral specification. Solving this problem by directly applying numerical optimization techniques is often impractical due to the discontinuities in the error function. By eliminating these discontinuities, smooth interpretation makes it possible to search the parameter space efficiently by means of simple gradient descent. Our experiments demonstrate the value of this strategy in synthesizing parameters for several challenging programs, including models of an automated gear shift and a PID controller.