20
SAT Solver Math Foundations of Computer Science

SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions A Boolean expression is a Boolean function Any Boolean function can be written

Embed Size (px)

Citation preview

Page 1: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

SAT Solver

Math Foundations of Computer Science

Page 2: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

2

Boolean Expressions 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

Page 3: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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 the conjunct specifying the row

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

Page 4: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

4

Tautology Checker A program can be written to check to see if a Boolean

expression is a tautology.

Simply generate all possible truth assignments for the variables occurring in the expression and evaluate the expression with its variables set to each of these assignments. If the evaluated expressions are always true, then the given Boolean expression is a tautology.

A similar program can be written to check if any two Boolean expressions E1 and E2 are equivalent, i.e. if E1 E2. Such a program has been provided.

Page 5: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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)

Page 6: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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 a tautology

An assignment that evaluates to false provides a counter example to validity

Page 7: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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.

Page 8: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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)

Page 9: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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)

Page 10: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 11: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 12: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 13: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

Corresponding SAT problem

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

= cab [Valid Mapping] [constaints]

Page 14: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

Constaints in CNF

Page 15: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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 … 9980 … 10000 0

Page 16: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

Avionics Example

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

Constaints

Page 17: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 18: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 19: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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

Page 20: SAT Solver Math Foundations of Computer Science. 2 Boolean Expressions  A Boolean expression is a Boolean function  Any Boolean function can be written

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)