sat solver cs 680 formal methods jeremy johnson. 2 disjunctive normal form a boolean expression is...

28
SAT Solver CS 680 Formal Methods Jeremy Johnson

Upload: emmalee-filson

Post on 14-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

SAT Solver

CS 680 Formal MethodsJeremy Johnson

2

Disjunctive Normal Form A Boolean expression is a Boolean function Any Boolean function can be written as a Boolean

expression

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)

s x0 x1 f

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

3

Conjunctive Normal FormConjunctive normal form (products of

sums)For each row in the truth table where the

output is false, write a sum such that the corresponding input not in that row Alternatively use Demorgan’s law for the

negation of dnf for f (zero rows)

E.G. (multiplexor function)) )

s x0 x1 f

0 0 0 0

0 0 1 0

0 1 0 1

0 1 1 1

1 0 0 0

1 0 1 1

1 1 0 0

1 1 1 1

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 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 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 ACL2

In beginner mode and aboveACL2S 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 ACL2ACL2 >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 by 0 Variables encoded by integers, not variable

encoded by negating integer We will use MiniSAT (minisat.se)

MiniSAT Example

(x1 | -x5 | x4) & (-x1 | x5 | x3 | x4) & (-x3 | x4).

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

MiniSAT Example (x1 | -x5 | x4) & (-x1 | x5 | x3 | x4) & (-x3 |

x4).This is MiniSat 2.0 beta============================[ Problem Statistics ]==================| || Number of variables: 5 || Number of clauses: 3 || Parsing time: 0.00 s |

….

SATISFIABLEv -1 -2 -3 -4 -5 0

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

AC is a map from apps to cabinents [indicator variable] AC(app,cab) = t iff AC(app)

= cab [Valid Mapping] [constaints]

Constaints in CNF

DIMACS Format

Var() = 20(a-1)+c

= -c –(20+c) = -c -(40+c) = 20(a-1)+1 … 20(a-1)+20-1 -21 0-1 -41 0…1 2 3 … 20 0 … 9981 … 10000 0

Avionics Example

10 apps and 5 cabinets Var() = 5(a-1)+c 50 variables 25 clauses Valid Map

Constaints

Avionics Examplep cnf 50 25c clauses for valid map forall a exists c AC^c_a1 2 3 4 5 06 7 8 9 10 011 12 13 14 15 016 17 18 19 20 021 22 23 24 25 026 27 28 29 30 031 32 33 34 35 036 37 38 39 40 041 42 43 44 45 046 47 48 49 50 0

Avionics Examplec 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 0c constraint ~AC^c_2 + ~AC^c_3 -6 -11 0-7 -12 0-8 -13 0-9 -14 0-10 -15 0

Avionics Example[jjohnson@tux64-12 Programs]$ ./MiniSat_v1.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 : 1conflicts : 0 (nan /sec)decisions : 39 (inf /sec)propagations : 50 (inf /sec)conflict literals : 0 ( nan % deleted)Memory used : 1.67 MBCPU time : 0 s

SATISFIABLE

Avionics AssignmentSAT-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 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

1 2, 2 4, , , 1

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 2, 2 4, , , 1

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 2, 2 4, , , 1

Deduce 1 2, 2 4, , , 1

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 2, 2 4, , , 1

Deduce 1 2, 2 4, , , 1Guess , 3 1 2, 2 4, , , 1

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 2, 2 4, , , 1

Deduce 1 2, 2 4, , , 1Guess , 3 1 2, 2 4, , , 1

Deduce , 3, 4 1 2, 2 4, , , 1

Inconsistency

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 1 2, 2 4, , , 1

Deduce 1 2, 2 4, , , 1Guess 3 , 3 1 2, 2 4, , , 1

Deduce 4 , 3, 4 1 2, 2 4, , , 1

Undo 3 1 2, 2 4, , , 1

Backtrack

DPLL Example

Operation Assign Formula

1 2, 2 4, , , 1

Deduce 1 1 1 2, 2 4, , , 1

Deduce 1 2, 2 4, , , 1Guess 3 , 3 1 2, 2 4, , , 1

Deduce 4 , 3, 4 1 2, 2 4, , , 1

Undo 3 1 2, 2 4, , , 1

Guess , 1 2, 2 4, , , 1

Assignment found