SAT Solver CS 680 Formal Methods Jeremy Johnson

  • Slides: 28
Download presentation
SAT Solver CS 680 Formal Methods Jeremy Johnson

SAT Solver CS 680 Formal Methods Jeremy Johnson

Disjunctive Normal Form A Boolean expression is a Boolean function Any Boolean function can

Disjunctive Normal Form A Boolean expression is a Boolean function Any Boolean function can be written as a Boolean expression s x 0 x 1 f 0 0 Disjunctive normal form (sums of products) For each row in the truth table where the output is true, write a product such that the corresponding input is the only input combination that is true Not unique E. G. (multiplexor function) 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 2

Conjunctive Normal Form s x 0 x 1 f 0 0 1 0 0

Conjunctive Normal Form s x 0 x 1 f 0 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 3

Satisfiability A formula is satisfiable if there is an assignment to the variables that

Satisfiability A formula is satisfiable if there is an assignment to the variables that make the formula true A formula is unsatisfiable if all assignments to variables eval to false A formula is falsifiable if there is an assignment to the variables that make the formula false A formula is valid if all assignments to variables eval to true (a valid formula is a theorem or tautology)

Satisfiability Checking to see if a formula f is satisfiable can be done by

Satisfiability Checking to see if a formula f is satisfiable can be done by searching a truth table for a true entry Exponential in the number of variables Does not appear to be a polynomial time algorithm (satisfiability is NP-complete) There are efficient satisfiability checkers that work well on many practical problems Checking whether f is satisfiable can be done by checking if f is not valid An assignment that evaluates to false provides a counter example to validity

DNF vs CNF It is easy to determine if a boolean expression in DNF

DNF vs CNF It is easy to determine if a boolean expression in DNF is satisfiable but difficult to determine if it is valid It is easy to determine if a boolean expression in CNF is valid but difficult to determine if it is satisfiable It is possible to convert any boolean expression to DNF or CNF; however, there can be exponential blowup

Propositional Logic in ACL 2 In beginner mode and above ACL 2 S B

Propositional Logic in ACL 2 In beginner mode and above ACL 2 S B !>QUERY (thm (implies (and (booleanp p) (booleanp q)) (iff (implies p q) (or (not p) q)))) << Starting proof tree logging >> Q. E. D. Summary Form: ( THM. . . ) Rules: NIL Time: 0. 00 seconds (prove: 0. 00, print: 0. 00, proof tree: 0. 00, other: 0. 00) Proof succeeded.

Propositional Logic in ACL 2 >QUERY (thm (implies (and (booleanp p) (booleanp q)) (iff

Propositional Logic in ACL 2 >QUERY (thm (implies (and (booleanp p) (booleanp q)) (iff (xor p q) (or p q)))) … **Summary of testing** We tested 500 examples across 1 subgoals, of which 1 (1 unique) satisfied the hypotheses, and found 1 counterexamples and 0 witnesses. We falsified the conjecture. Here are counterexamples: [found in : "Goal''"] (IMPLIES (AND (BOOLEANP P) (BOOLEANP Q) P) (NOT Q)) -- (P T) and (Q T)

SAT Solvers Input expected in CNF Using DIMACS format One clause per line delimited

SAT Solvers Input expected in CNF Using DIMACS format One clause per line delimited by 0 Variables encoded by integers, not variable encoded by negating integer We will use Mini. SAT (minisat. se)

Mini. SAT Example (x 1 | -x 5 | x 4) & (-x 1

Mini. SAT Example (x 1 | -x 5 | x 4) & (-x 1 | x 5 | x 3 | x 4) & (-x 3 | x 4). DIMACS format (c = comment, “p cnf” = SAT problem in CNF) c SAT problem in CNF with 5 variables and 3 clauses p cnf 5 3 1 -5 4 0 -1 5 3 4 0 -3 -4 0

Mini. SAT Example (x 1 | -x 5 | x 4) & (-x 1

Mini. SAT Example (x 1 | -x 5 | x 4) & (-x 1 | x 5 | x 3 | x 4) & (-x 3 | x 4). This is Mini. Sat 2. 0 beta ==============[ Problem Statistics ]========= | | | Number of variables: 5 | | Number of clauses: 3 | | Parsing time: 0. 00 s | …. SATISFIABLE v -1 -2 -3 -4 -5 0

Avionics Application Aircraft controlled by (real time) software applications (navigation, control, obstacle detection, obstacle

Avionics Application Aircraft controlled by (real time) software applications (navigation, control, obstacle detection, obstacle avoidance …) Applications run on computers in different cabinets 500 apps 20 cabinets Apps 1, 2 and 3 must run in separate cabinets Problem: Find assignment of apps to cabinets that satisfies constraints

Corresponding SAT problem

Corresponding SAT problem

Constaints in CNF

Constaints in CNF

DIMACS Format

DIMACS Format

Avionics Example

Avionics Example

Avionics Example p cnf 50 25 c clauses for valid map forall a exists

Avionics Example p cnf 50 25 c clauses for valid map forall a exists c AC^c_a 1 2 3 4 5 0 6 7 8 9 10 0 11 12 13 14 15 0 16 17 18 19 20 0 21 22 23 24 25 0 26 27 28 29 30 0 31 32 33 34 35 0 36 37 38 39 40 0 41 42 43 44 45 0 46 47 48 49 50 0

Avionics Example c constaints ~AC^c_1 + ~AC^c_2 and ~AC^c_1 + ~AC^c_3 -1 -6 0

Avionics Example c constaints ~AC^c_1 + ~AC^c_2 and ~AC^c_1 + ~AC^c_3 -1 -6 0 -1 -11 0 -2 -7 0 -2 -12 0 -3 -8 0 -3 -13 0 -4 -9 0 -4 -14 0 -5 -10 0 -5 -15 0 c constraint ~AC^c_2 + ~AC^c_3 -6 -11 0 -7 -12 0 -8 -13 0 -9 -14 0 -15 0

Avionics Example [jjohnson@tux 64 -12 Programs]$. /Mini. Sat_v 1. 14_linux aircraft assignment =================[MINISAT]================== |

Avionics Example [jjohnson@tux 64 -12 Programs]$. /Mini. Sat_v 1. 14_linux aircraft assignment =================[MINISAT]================== | Conflicts | ORIGINAL | LEARNT | Progress | | | Clauses Literals | Limit Clauses Literals Lit/Cl | | ======================================= | 0 | 25 80 | 8 0 0 nan | 0. 000 % | ======================================= restarts : 1 conflicts : 0 (nan /sec) decisions : 39 (inf /sec) propagations : 50 (inf /sec) conflict literals : 0 ( nan % deleted) Memory used : 1. 67 MB CPU time : 0 s SATISFIABLE

Avionics Assignment SAT -1 -2 3 -4 -5 -6 7 -8 -9 -10 11

Avionics Assignment SAT -1 -2 3 -4 -5 -6 7 -8 -9 -10 11 -12 -13 -14 -15 16 -17 -18 -19 -20 21 -22 -23 -24 -25 26 -27 -28 -29 -30 31 -32 -33 -34 -35 36 -37 -38 -39 -40 41 -42 -43 -44 -45 46 -47 -48 -49 -50 0 True indicator variables: 3 = 5*0 + 3 => AC(1, 3) 7 = 5*1 + 2 => AC(2, 2) 11 = 5*2 + 1 => AC(3, 1) 16 = 5*3+1 => AC(4, 1) 21 = 5*4+1 => AC(5, 1) 26 = 5*5=1 => AC(6, 1) 31 = 5*6+1 => AC(7, 1) 36 = 5*7+1 => AC(8, 1) 41 = 5*8 + 1 => AC(9, 1) 46 = 5*9+1 => AC(10, 1)

DPLL Algorithm Tries to incrementally build a satisfying assignment A: V {T, F} (partial

DPLL Algorithm Tries to incrementally build a satisfying assignment A: V {T, F} (partial assignment) for a formula in CNF A is grown by either Deducing a truth value for a literal Whenever all literals except one are F then the remaining literal must be T (unit propagation) Guessing a truth value Backtrack when guess (leads to inconsistency) is wrong

DPLL Example Operation Assign Formula

DPLL Example Operation Assign Formula

DPLL Example Operation Deduce Assign 1 Formula

DPLL Example Operation Deduce Assign 1 Formula

DPLL Example Operation Deduce Assign 1 Formula

DPLL Example Operation Deduce Assign 1 Formula

DPLL Example Operation Deduce Guess Assign 1 Formula

DPLL Example Operation Deduce Guess Assign 1 Formula

DPLL Example Operation Deduce Assign Formula 1 Deduce Guess Deduce Inconsistency

DPLL Example Operation Deduce Assign Formula 1 Deduce Guess Deduce Inconsistency

DPLL Example Operation Deduce 1 Assign Formula 1 Guess 3 Deduce 4 Undo 3

DPLL Example Operation Deduce 1 Assign Formula 1 Guess 3 Deduce 4 Undo 3 Backtrack

DPLL Example Operation Deduce 1 Assign Formula 1 Guess 3 Deduce 4 Undo 3

DPLL Example Operation Deduce 1 Assign Formula 1 Guess 3 Deduce 4 Undo 3 Assignment found