Implicit programming is a proposed software development paradigm that aims to address longstanding bottlenecks of software construction, by making software construction substantially easier at several levels, from new declarative programming language constructs to new software development tools.

Implicit programming is a proposed software development paradigm that aims to address longstanding bottlenecks of software construction. Although programming activities include some seemingly unavoidable aspects, such as describing the goal of the computation and certain creative aspects of its solution, most of it is tedious and low level. It requires *explicitly* spelling out and elaborating conceptually simple steps, and ends up requiring more effort than one initially expects. The *implicit* programming paradigm aims to make software construction substantially easier at several levels, from new declarative programming language constructs to new software development tools.

We support implicit programming with a new concept of synthesis procedures, which enhance algorithms in today’s compilers by building on the advances in satisfiability modulo theories (SMT) and the rapidly expanding field of software synthesis. We aim to deploy our algorithms through new runtime platforms that perform program analysis and optimization to support and leverage synthesis procedures in the context of the overall application. Finally, we are introducing new development tools, application manipulation interfaces, and techniques to handle ambiguity, making development easier for both experts and non-experts.