Upload
cecily-dorsey
View
217
Download
2
Embed Size (px)
Citation preview
SAT Solver
Math Foundations of Computer Science
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
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
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.
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 a tautology
An assignment that evaluates to false provides a counter example to validity
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 … 9980 … 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)