#bit-vector #synthesis #dryadsynth #sygus #bit-manipulating

nightly app dryadsynth-bv

DryadSynth solver for bit manipulating programs

1 unstable release

new 0.1.0 Mar 22, 2025

#50 in #synthesis

MIT and GPL-3.0-or-later

5MB
179K SLoC

C 151K SLoC C++ 23K SLoC // 0.0% comments Rust 5K SLoC // 0.0% comments Python 133 SLoC // 0.1% comments Pest 9 SLoC

DryadSynth-BV

The current DryadSynth is already embedded all the techniques mentioned in the paper Enhanced Enumeration of Techniques for Syntax-Guided Synthesis of Bit-Vector Manipulations. To further configure the arguments mentioned in the paper, A TOML file can be passed into DryadSynth using the following command:

DryadSynth [-B <config-file>] <sygus-if-file>

In src/meet-middle/config, there are a lot of commonly used configuration files. Here is the default configuration file for PBE problems with explanation of each parameter:

random_example = 10 # How many additional random examples are generated from reference implementation 
limited_ite = false # Limit ITE condition search size to 10000 
ite_tree_limit = 30 # Limit the size of decition tree
chatgpt = true # Disable/Enable ChatGPT
smt_solver = "bitwuzla" # Using command bitwuzla as SMT-Solver. Require `bitwuzla` command installed

[expr_search]
sample = 64 # The number of sampling
dag_size = true # Enable Graph-Based Enumeration
filter = {
    deductive_combine = true, # Enable/Disable deduction for AND and OR
    deductive_reverse = true  # Enable/Disable deduction for XOR and ADD
} 

Publications

Dependencies

~23–37MB
~613K SLoC