Skip to content

Repository files navigation

DPLL Phase Analysis

An exploration of the DPLL SAT solver and its behavior around the phase transition in random 3-SAT instances.

About

This project implements the DPLL (Davis–Putnam–Logemann–Loveland) backtracking algorithm and examines phase transitions in SAT solving. It includes both a baseline implementation and a variant using the MOMS (Maximum Occurrences in Minimum-size clauses) heuristic for comparison.

Documentation

  • Grammar — Formal grammar specification for the SAT instances
  • Research Paper — Full analysis and findings

Results

Phase Transition

Phase Transition Plot

Heuristics Comparison

Heuristics Comparison

Setup

Requires Python 3.13.2. Install dependencies:

pip install -r requirements.txt

Usage

Run the solver:

python main.py -n 20 -l 85

Options:

  • -n — Number of variables (default: 20)
  • -l — Number of clauses (default: 85)
  • --heuristic — Use MOMS heuristic

Run tests:

pytest tests/

Project Structure

  • src/solver.py — DPLL solver implementation
  • src/generator.py — Random 3-SAT instance generator
  • src/parser.py — Parsing utilities
  • analysis.ipynb — Analysis and experimental results

About

DPLL SAT solver implementation exploring phase transitions in random 3-SAT instances.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages