NAIL094Decision procedures and verification

Petr Kučera, KTIML MFF UK

DPLL Algorithm [5 points]

Short description

Write a DPLL solver which implements the basic branch and bound DPLL algorithm with unit propagation. Part of the task is also experimental evaluation of your solver on small benchmarks and a report on the results of the experiments.

Input format

Your program should be able to read two input formats

  1. The simplified SMT-LIB format described in the first task.
  2. The DIMACS format, also described in the first task.

Output format

Experimental evaluation

For experimental evaluation you can use the example input files from the first task. Then you can try your solver on smaller examples from SATLIB Benchmark Problems. Select several examples from the category Uniform Random-3-SAT, measure the solving time and write a short report on how the solving time progresses with increasing complexity of the problems. Try your solver also on some non-random instances.

Extended description

The typical invocation of your program should be

   dpll [input]

Parameter input specifies the input file, the format of the input file can be either detected by the extension (.cnf for DIMACS, .sat for the simplified SMT-LIB format), or given as a special option.