Who Verifies the Verifiers? A Computer-Checked Implementation of the DPLL Algorithm in Dafny

07/19/2020
by   Cezar-Constantin Andrici, et al.
0

We build a SAT solver implementing the DPLL algorithm in the verification-enabled programming language Dafny. The resulting solver is fully verified (soundness, completeness and termination are computer checked). We benchmark our Dafny solver and we show that it is just as efficient as an equivalent DPLL solver implemented in C# and roughly two times less efficient than an equivalent solver written in C++. We conclude that auto-active verification is a promising approach to increasing trust in SAT solvers, as it combines a good trade-off between execution speed and degree of trustworthiness of the final product.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/04/2019

Verifying the DPLL Algorithm in Dafny

Modern high-performance SAT solvers quickly solve large satisfiability i...
research
04/30/2018

Benchmarking the Capabilities and Limitations of SAT Solvers in Defeating Obfuscation Schemes

In this paper, we investigate the strength of six different SAT solvers ...
research
12/17/2021

ML Supported Predictions for SAT Solvers Performance

In order to classify the indeterministic termination behavior of the ope...
research
10/02/2015

Implementing Efficient All Solutions SAT Solvers

All solutions SAT (AllSAT for short) is a variant of propositional satis...
research
03/16/2016

Hardware Acceleration for Boolean Satisfiability Solver by Applying Belief Propagation Algorithm

Boolean satisfiability (SAT) has an extensive application domain in comp...
research
09/15/2018

Description, Implementation, and Evaluation of a Generic Design for Tabled CLP

Logic programming with tabling and constraints (TCLP, tabled constraint ...
research
07/09/2008

Algorithm Selection as a Bandit Problem with Unbounded Losses

Algorithm selection is typically based on models of algorithm performanc...

Please sign up or login with your details

Forgot password? Click here to reset