Learning to Rank the Initial Branching Order of SAT Solvers

Arvid Eriksson, Gabriel Poesia, Roman Bresson, Karl Henrik Johansson, David Broman
3/7/2026
cs.AIcs.LO

No confident code implementation found for this paper.

Abstract

Finding good branching orders is key to solving SAT problems efficiently, but finding such branching orders is a difficult problem. Using a learning based approach to predict a good branching order before solving, therefore, has potential. In this paper, we investigate predicting branching orders using graph neural networks as a preprocessing step to conflict-driven clause learning (CDCL) SAT solvers. We show that there are significant gains to be made in existing CDCL SAT solvers by providing a good initial branching. Further, we provide three labeling methods to find such initial branching orders in a tractable way. Finally, we train a graph neural network to predict these branching orders and show through our evaluations that a GNN-initialized ordering yields significant speedups on random 3-CNF and pseudo-industrial benchmarks, with generalization capabilities to instances much larger than the training set. However, we also find that the predictions fail at speeding up more difficult and industrial instances. We attribute this to the solver's dynamic heuristics, which rapidly overwrite the provided initialization, and to the complexity of these instances, making GNN prediction hard.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{eriksson2026learning,
  title  = {Learning to Rank the Initial Branching Order of SAT Solvers},
  author = {Arvid Eriksson and Gabriel Poesia and Roman Bresson and Karl Henrik Johansson and David Broman},
  year   = {2026},
  eprint = {2603.07176},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2603.07176v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2603.07176.svg)](https://codeofpaper.com/paper/2603.07176)

Discussion