Qualitative Study of SAT Encoding Techniques Magnus Bjrk
Qualitative Study of SAT Encoding Techniques Magnus Björk
Background l Hard to get intuition about effects of SAT encoding techniques l Existing literature hard to survey
Idea l The experts must have lots of hidden knowledge l Do interviews l Interviews are ready, paper is nearly ready l Expect to submit to JSAT (? ) shortly
Interviewees who cooperated l Niklas Sörensson l Koen Claessen l Armin Biere l Joao Marques-Silva l Robert Nieuwenhuis l Jason Baumgartner, Bob Kanzelman, Hari Mony
Findings: general about encodings Consensus: the encoding matters a lot for efficiency / solvability l Consensus: Finding good SAT-encoding takes a lot of work l l Iterative process Knowing the problem domain well helps Consensus: only a very weak correlation between size and hardness of problems l But for a fixed problem domain there may be a stronger correspondence
Findings: CNF and Circuits l There is not consensus about l l Whether to use CNF based or Circuit based solvers Whether to use CNF or Circuits to formulate problem Consensus: Tseitin’s standard Circuit -> CNF translation is pretty good l More vague: l l l Plaisted-Greenbaum’s polarities can add some performance intermediate representations (like AIG, RBC) usually beneficial
Findings: encoding enumerations/natural numbers l Several ways Onehot (e. g. 5 ~ ” 000100000”) l Unary (e. g. 5 ~ ” 00011111”) l Binary (e. g. 5 ~ ” 00000101”) l Binary good for large sets but worse for smaller l Combination of Binary and Onehot has many nice properties l
Findings: encoding arithmetics l Some disagreement about whether arithmetics is possible Apparently people have done it successfully l Little understanding about what works well l Maybe SMT better choice if there is much arithmetics l
Findings: more techniques l Important techniques Thinking about propagation behavior l Using incrementality l l May safely be avoided Worrying about size of individual clauses l Finding Horn clauses l Tweaking solver parameters l
Future work l Creating a resource (wiki? ) descriptions of various techniques l discussions about their efficiency and typical applications l l Creating a programming library Ready functions to create common encodings l Partially done in Mini. Sat (not released yet) l
- Slides: 10