𝜏-DIGITS
Program synthesis Probabilistic synthesis Distribution-guided inductive synthesis (DIGITS) Sketch-based synthesis
Synthesis tool
Program sketch consisting of:
- a program written in a loop-free language with "holes". These "holes" represent some constant terminals in expressions.
- Precondition?
- Postcondition: Boolean probabilistic correctness property
- Program sketch:
.fr
file where the program is defined in a methodD(args)
. Holes can be indicated withHole(...)
- Postcondition: in a method
post(Pr)
in the same.fr
file - Precondition: in a method
pre()
in the same.fr
file
Instantiations for the holes in the program.
The algorithm roughly follows the following steps to reduce the problem of probabilistic synthesis to non-probabilistic synthesis:
- Approximate the input probability distribution with a finite sample set
- Synthesize a program for various possible output assignments of the finite sample set
- Invoke a probabilistic verifier to check if one of the synthesized programs adheres to the given specification.
As a back-end, you can use Z3 and CVC4.
𝜏-DIGITS is an improved version of DIGITS. It reduces the number of synthesis queries performed by the algorithm.
License: MIT
Repository: https://github.com/sedrews/digits
14 Oct 2019 (default branch) 14 Oct 2019 (last activity)
12 July 2019
Efficient Synthesis with Probabilistic Constraints (CAV '19)
:: PV2 :: fill holes a given loop-free program from a probabilistic specification of its desired behaviour :: Probabilistic :: Source :: https://doi.org/10.1145/3550355.3552426