Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
How a CDCL SAT  Solver works       Masahiro Sakai  Twitter: @masahiro_sakai
Abstract• Demonstrating how a modern SAT  solver works on a small example.• Target Algorithm • Conflict-Driven Clause Learn...
An Example Problem• ω1: ¬x1   ¬x4   x5   • ω6: ¬x8   ¬x9• ω2: ¬x4   x6         • ω7: ¬x8   x9• ω3: ¬x5   ¬x6   x7• ω4: ¬x7...
Decide               Implication GraphClause DB   • ω1: ¬x1   ¬x4    x5   • ω6: ¬x8   ¬x9   • ω2: ¬x4   x6          • ω7: ...
Decide                Implication Graphx1                 x1@1Clause DB     • ω1: ¬x1   ¬x4    x5   • ω6: ¬x8   ¬x9     • ...
Decide                Implication Graphx1x2                                 x2@2                 x1@1Clause DB     • ω1: ¬...
Decide                Implication Graphx1               x3@3x2                                 x2@2                 x1@1x3...
Decide                Implication Graphx1               x3@3x2                                 x2@2                 x1@1x3...
Deduce                Implication Graphx1               x3@3x2                                 x2@2                 x1@1x3...
Deduce                Implication Graphx1               x3@3x2                      ω1          x2@2                 x1@1 ...
Deduce                Implication Graphx1               x3@3x2                      ω1          x2@2                 x1@1 ...
Deduce                Implication Graphx1               x3@3x2                      ω1               x2@2                 ...
Deduce                Implication Graphx1               x3@3x2                      ω1               x2@2                 ...
Deduce                Implication Graphx1               x3@3x2                      ω1               x2@2   ω5            ...
Deduce                Implication Graphx1               x3@3x2                      ω1               x2@2   ω5            ...
Deduce                Implication Graphx1               x3@3x2                      ω1               x2@2   ω5            ...
Diagnose                      Implication Graph                x3@3                       ω1               x2@2   ω5      ...
Diagnose                            Implication Graph                             Reason  ω6:                 x3@3    Side...
Diagnose                          Implication Graph                           Reason  ω6:    ω4:        x3@3    Side¬x8 ¬x...
Diagnose                          Implication Graph                           Reason  ω6:    ω4:        x3@3    Side¬x8 ¬x...
Diagnose                            Implication Graph                             Reason  ω6:    ω4:          x3@3    Side...
Diagnose                             Implication Graph                              Reason  ω6:    ω4:           x3@3    S...
Diagnose                             Implication Graph                              Reason  ω6:    ω4:           x3@3    S...
Diagnose                             Implication Graph                              Reason  ω6:    ω4:           x3@3    S...
Diagnose                                   Implication Graph                                    Reason  ω6:    ω4:        ...
Diagnose                                   Implication Graph                                    Reason  ω6:    ω4:        ...
Backtrack                   Implication Graph  Learnt clause:    ¬x2 ¬x7               x3@3                               ...
Backtrack             Implication Graphx1               x3@3x2                      ω1               x2@2   ω5            ...
Backtrack             Implication Graphx1               x3@3x2                      ω1               x2@2   ω5            ...
Backtrack             Implication Graphx1               x3@3x2                      ω1               x2@2                 ...
Backtrack             Implication Graphx1               x3@3x2                      ω1               x2@2                 ...
Backtrack             Implication Graphx1               x3@3x2                      ω1          x2@2                 x1@1 ...
Backtrack             Implication Graphx1               x3@3x2                      ω1          x2@2                 x1@1 ...
Backtrack             Implication Graphx1               x3@3x2                                 x2@2                 x1@1x3...
Backtrack             Implication Graphx1               x3@3x2                                 x2@2                 x1@1x3...
Backtrack             Implication Graphx1x2                                 x2@2                 x1@1x3x4Clause DB     • ω...
Deduce                Implication Graphx1x2                                 x2@2                 x1@1x3x4Clause DB     • ω...
Deduce                Implication Graphx1                                          ω8x2                                 x2...
Decide                Implication Graphx1                                          ω8x2                                 x2...
Decide                   Implication Graphx1                  x3@3                                             ω8x2       ...
Decide                   Implication Graphx1                  x3@3                                             ω8x2       ...
Deduce                   Implication Graphx1                  x3@3                                             ω8x2       ...
Deduce                   Implication Graphx1                  x3@3                                              ω8x2      ...
Deduce                   Implication Graphx1                  x3@3                                              ω8x2      ...
Deduce                   Implication Graphx1                  x3@3                                                   ω8x2 ...
Deduce                   Implication Graphx1                  x3@3                                                   ω8x2 ...
Diagnose                      Implication Graph                x3@3                                               ω8      ...
Diagnose                          Implication Graph                           Reason   ω3:              x3@3    Side¬x5 ¬x...
Diagnose                          Implication Graph                           Reason   ω3:      ω2:     x3@3    Side¬x5 ¬x...
Diagnose                          Implication Graph                           Reason   ω3:      ω2:     x3@3    Side¬x5 ¬x...
Diagnose                          Implication Graph                           Reason   ω3:      ω2:     x3@3    Side¬x5 ¬x...
Diagnose                            Implication Graph                             Reason   ω3:      ω2:       x3@3    Side...
Diagnose                            Implication Graph                             Reason   ω3:      ω2:       x3@3    Side...
Diagnose                            Implication Graph                             Reason   ω3:      ω2:       x3@3    Side...
Diagnose                                   Implication Graph                                    Reason   ω3:      ω2:     ...
Diagnose                                   Implication Graph                                    Reason   ω3:      ω2:     ...
Backtrack                   Implication Graph  Learnt clause:  ¬x1 ¬x4 x7              x3@3                               ...
Backtrack                Implication Graphx1                  x3@3                                                   ω8x2 ...
Backtrack                Implication Graphx1                                             ω8x2                             ...
Deduce               Implication Graphx1                                             ω8x2                                 ...
Deduce               Implication Graphx1                                                ω8x2                              ...
Decide               Implication Graphx1                                                ω8x2                              ...
Decide               Implication Graphx1                  x3@3                                                ω8x2        ...
Decide              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Decide              Implication Graphx1                 x3@3                                               ω8x2           ...
Decide              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Deduce              Implication Graphx1                 x3@3                                               ω8x2           ...
Diagnose                      Implication Graph                x3@3                                            ω8         ...
Diagnose                              Implication Graph ω7:                 x3@3¬x8 x9                                    ...
Diagnose                            Implication Graph ω7:     ω6:       x3@3¬x8 x9 ¬x8 ¬x9                                ...
Diagnose                            Implication Graph ω7:     ω6:       x3@3¬x8 x9 ¬x8 ¬x9                                ...
Diagnose                               Implication Graph ω7:     ω6:          x3@3¬x8 x9 ¬x8 ¬x9                          ...
Diagnose                                     Implication Graph ω7:     ω6:                x3@3¬x8 x9 ¬x8 ¬x9              ...
Diagnose                                     Implication Graph ω7:     ω6:                x3@3¬x8 x9 ¬x8 ¬x9              ...
Backtrack                   Implication Graph  Learnt clause:       ¬x8                x3@3                               ...
Backtrack             Implication Graphx1               x3@3                                             ω8x2             ...
Backtrack             Implication Graphx1x2x3 x3 x3x4 x4 x5      x8Clause DB     • ω1: ¬x1   ¬x4    x5   • ω6: ¬x8    ¬x9 ...
Deduce              Implication Graphx1x2x3 x3 x3x4 x4 x5        x8Clause DB       • ω1: ¬x1   ¬x4    x5   • ω6: ¬x8    ¬x...
Deduce              Implication Graphx1x2x3 x3 x3x4 x4 x5           ¬x8@0        x8Clause DB       • ω1: ¬x1   ¬x4     x5 ...
Decide              Implication Graphx1x2x3 x3 x3x4 x4 x5           ¬x8@0        x8Clause DB       • ω1: ¬x1   ¬x4     x5 ...
Decide              Implication Graphx1            x1x2                 x1@1x3 x3 x3x4 x4 x5           ¬x8@0        x8Clau...
Decide              Implication Graphx1            x1x2            x2                      x2@2                   x1@1x3 x...
Deduce              Implication Graphx1           x1x2           x2                       x2@2                   x1@1x3 x3...
Deduce              Implication Graphx1           x1                                             ω8x2           x2        ...
Deduce              Implication Graphx1           x1                                                ω8x2           x2     ...
Decide              Implication Graphx1            x1                                                ω8x2            x2   ...
Decide              Implication Graphx1            x1   x3@3                                                ω8x2          ...
Decide              Implication Graphx1            x1   x3@3                                                ω8x2          ...
Deduce              Implication Graphx1           x1    x3@3                                                ω8x2          ...
Deduce              Implication Graphx1           x1    x3@3                                                ω8x2          ...
Decide              Implication Graphx1            x1   x3@3                                                ω8x2          ...
Decide              Implication Graphx1            x1   x3@3                                                ω8x2          ...
Implication Graphx1       x1      x3@3                                              ω8x2       x2                         ...
Implication Graphx1        x1         x3@3                                                  ω8x2        x2                ...
Implication Graphx1       x1      x3@3                                              ω8x2       x2                         ...
Implication Graphx1       x1      x3@3                                              ω8x2       x2                         ...
Implication Graphx1       x1      x3@3                                              ω8x2       x2                         ...
Implication GraphFound a model                  x3@3                                               ω8     M=              ...
fin.
References• J. P. Marques-Silva and K. A. Sakallah,  "GRASP: a search algorithm for  propositional satisfiability," Compute...
Upcoming SlideShare
Loading in …5
×

How a CDCL SAT solver works

24,224 views

Published on

Demonstration of CDCL SAT solver working on a small example problem.

Published in: Technology

How a CDCL SAT solver works

  1. 1. How a CDCL SAT Solver works Masahiro Sakai Twitter: @masahiro_sakai
  2. 2. Abstract• Demonstrating how a modern SAT solver works on a small example.• Target Algorithm • Conflict-Driven Clause Learning (CDCL) • 1-UIP learning + far-backtracking • details are omitted efficient data (decision heuristics, structure, etc.,)
  3. 3. An Example Problem• ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9• ω2: ¬x4 x6 • ω7: ¬x8 x9• ω3: ¬x5 ¬x6 x7• ω4: ¬x7 x8• ω5: ¬x2 ¬x7 x9
  4. 4. Decide Implication GraphClause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  5. 5. Decide Implication Graphx1 x1@1Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  6. 6. Decide Implication Graphx1x2 x2@2 x1@1Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  7. 7. Decide Implication Graphx1 x3@3x2 x2@2 x1@1x3Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  8. 8. Decide Implication Graphx1 x3@3x2 x2@2 x1@1x3 x4@4x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  9. 9. Deduce Implication Graphx1 x3@3x2 x2@2 x1@1x3 x4@4x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  10. 10. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω1 x4@4x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  11. 11. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω1 x4@4x4 ω2 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  12. 12. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω3 ω1 x4@4 x7@4x4 ω2 ω3 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  13. 13. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω3 ω1 x4@4 x7@4x4 ω2 ω3 ω4 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  14. 14. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 ω5 x1@1 x5@4 x9@4x3 ω3 ω5 ω1 x4@4 x7@4x4 ω2 ω3 ω4 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  15. 15. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 ω5 x1@1 x5@4 x9@4x3 ω3 ω5 ω6 ω1 x4@4 x7@4x4 ω2 ω3 ω4 ω6 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  16. 16. Deduce Implication Graphx1 x3@3x2 ω1 x2@2 ω5 x1@1 x5@4 x9@4x3 ω3 ω5 ω6 ω1 x4@4 x7@4x4 ω2 ω3 ω4 ω6 x6@4 x8@4Clause DB Conflict • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  17. 17. Diagnose Implication Graph x3@3 ω1 x2@2 ω5 x1@1 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  18. 18. Diagnose Implication Graph Reason ω6: x3@3 Side¬x8 ¬x9 ω1 x2@2 ω5 x1@1 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  19. 19. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5 x1@1 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  20. 20. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5 x1@1 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  21. 21. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 x1@1 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  22. 22. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 ω5: x1@1 ¬x2 ¬x7 x9 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  23. 23. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 ω5: x1@1 ¬x2 ¬x7 x9 x5@4 x9@4 ω3 ω5 ω6 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  24. 24. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 ω5: x1@1 ¬x2 ¬x7 x9 x5@4 x9@4 ω3 ω5 ω6 ¬x2 ¬x7 ω1 x4@4 x7@4 ω2 ω3 ω4 ω6 x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  25. 25. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 ω5: x1@1 ¬x2 ¬x7 x9 x5@4 x9@4 ω3 ω5 ω6 ¬x2 ¬x7 ω1 x4@4 x7@4 It contains one literal in the current ω3 ω6 ω2 ω4 decision level (i.e. 4). x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  26. 26. Diagnose Implication Graph Reason ω6: ω4: x3@3 Side¬x8 ¬x9 ¬x7 x8 ω1 x2@2 ω5¬x7 ¬x9 ω5: x1@1 ¬x2 ¬x7 x9 x5@4 x9@4 ω3 ω5 ω6 ¬x2 ¬x7 ω1 x4@4 x7@4 It contains one literal in the current ω3 ω6 ω2 ω4 decision level (i.e. 4). x6@4 x8@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9 New clause is learnt !
  27. 27. Backtrack Implication Graph Learnt clause: ¬x2 ¬x7 x3@3 ω1 x2@2 ω5x2 was set at level 2 x1@1x7 was set at level 4 x5@4 x9@4 ω3 ω5 ω6Assertion level of thisclause (which is the ω1second highest level) x4@4 x7@4is 2. ω6 ω2 ω3 ω4 Backtrack to level 2! x6@4 x8@4 Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  28. 28. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 ω5 x1@1 x5@4 x9@4x3 ω3 ω5 ω6 ω1 x4@4 x7@4x4 ω2 ω3 ω4 ω6 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  29. 29. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 ω5 x1@1 x5@4 x9@4x3 ω3 ω5 ω1 x4@4 x7@4x4 ω2 ω3 ω4 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  30. 30. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω3 ω1 x4@4 x7@4x4 ω2 ω3 ω4 x6@4 x8@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  31. 31. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω3 ω1 x4@4 x7@4x4 ω2 ω3 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  32. 32. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω1 x4@4x4 ω2 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  33. 33. Backtrack Implication Graphx1 x3@3x2 ω1 x2@2 x1@1 x5@4x3 ω1 x4@4x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  34. 34. Backtrack Implication Graphx1 x3@3x2 x2@2 x1@1x3 x4@4x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  35. 35. Backtrack Implication Graphx1 x3@3x2 x2@2 x1@1x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  36. 36. Backtrack Implication Graphx1x2 x2@2 x1@1x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  37. 37. Deduce Implication Graphx1x2 x2@2 x1@1x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  38. 38. Deduce Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  39. 39. Decide Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  40. 40. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1x3 x3x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  41. 41. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1x3 x3 x4@4x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  42. 42. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1x3 x3 x4@4x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  43. 43. Deduce Implication Graphx1 x3@3 ω8x2 ω1 x2@2 ¬x7@2 x1@1 x5@4x3 x3 ω1 x4@4x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  44. 44. Deduce Implication Graphx1 x3@3 ω8x2 ω1 x2@2 ¬x7@2 x1@1 x5@4x3 x3 ω1 x4@4x4 x4 ω2 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  45. 45. Deduce Implication Graphx1 x3@3 ω8x2 ω1 x2@2 ¬x7@2 x1@1 x5@4x3 x3 ω3 ω3 ω1 x4@4x4 x4 ω2 ω3 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  46. 46. Deduce Implication Graphx1 x3@3 ω8x2 ω1 x2@2 ¬x7@2 x1@1 x5@4x3 x3 ω3 ω3 ω1 x4@4x4 x4 ω2 ω3 x6@4Clause DB Conflict • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  47. 47. Diagnose Implication Graph x3@3 ω8 ω1 x2@2 ¬x7@2 x1@1 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  48. 48. Diagnose Implication Graph Reason ω3: x3@3 Side¬x5 ¬x6 x7 ω8 ω1 x2@2 ¬x7@2 x1@1 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  49. 49. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2 x1@1 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  50. 50. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2 x1@1 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  51. 51. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 x1@1 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  52. 52. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 ω1: x1@1 ¬x1 ¬x4 x5 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  53. 53. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 ω1: x1@1 ¬x1 ¬x4 x5 x5@4 ω3 ω3 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  54. 54. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 ω1: x1@1 ¬x1 ¬x4 x5 x5@4 ω3 ω3 ¬x1 ¬x4 x7 ω1 x4@4 ω2 ω3 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  55. 55. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 ω1: x1@1 ¬x1 ¬x4 x5 x5@4 ω3 ω3 ¬x1 ¬x4 x7 ω1 x4@4 It contains one literal in the current ω3 decision level (i.e. 4). ω2 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω5: ¬x2 ¬x7 x9
  56. 56. Diagnose Implication Graph Reason ω3: ω2: x3@3 Side¬x5 ¬x6 x7 ¬x4 x6 ω8 ω1 x2@2 ¬x7@2¬x4 ¬x5 x7 ω1: x1@1 ¬x1 ¬x4 x5 x5@4 ω3 ω3 ¬x1 ¬x4 x7 ω1 x4@4 It contains one literal in the current ω3 decision level (i.e. 4). ω2 Conflict x6@4 Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 New clause is learnt !
  57. 57. Backtrack Implication Graph Learnt clause: ¬x1 ¬x4 x7 x3@3 ω8 ω1 x2@2 ¬x7@2x1 was set at level 1 x1@1x4 was set at level 4 x5@4x7 was set at level 2 ω3 ω3 ω1Assertion level of this x4@4clause is 2. ω2 ω3 Backtrack to level 2! x6@4 Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  58. 58. Backtrack Implication Graphx1 x3@3 ω8x2 ω1 x2@2 ¬x7@2 x1@1 x5@4x3 x3 ω3 ω3 ω1 x4@4x4 x4 ω2 ω3 x6@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  59. 59. Backtrack Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1x3 x3x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  60. 60. Deduce Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1x3 x3x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  61. 61. Deduce Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 ¬x4@2x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  62. 62. Decide Implication Graphx1 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 ¬x4@2x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  63. 63. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 ¬x4@2x4 x4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  64. 64. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 ¬x4@2x4 x4 x5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  65. 65. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 ¬x4@2x4 x4 x5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  66. 66. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 ω3 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  67. 67. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 ω3 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  68. 68. Decide Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x8@5 ω3 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  69. 69. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x8@5 ω3 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  70. 70. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ω6 ¬x6@4x4 x4 x5 x8@5 ¬x9@5 ω3 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  71. 71. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ω6 ¬x6@4x4 x4 x5 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  72. 72. Deduce Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ω6 ¬x6@4x4 x4 x5 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 x8Clause DB Conflict • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  73. 73. Diagnose Implication Graph x3@3 ω8 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3 ¬x4@2 ω6 ¬x6@4 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  74. 74. Diagnose Implication Graph ω7: x3@3¬x8 x9 ω8 x2@2 ¬x7@2 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2 ω6 ¬x6@4 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  75. 75. Diagnose Implication Graph ω7: ω6: x3@3¬x8 x9 ¬x8 ¬x9 ω8 x2@2 ¬x7@2 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2 ω6 ¬x6@4 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  76. 76. Diagnose Implication Graph ω7: ω6: x3@3¬x8 x9 ¬x8 ¬x9 ω8 x2@2 ¬x7@2 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2 ω6 ¬x6@4 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  77. 77. Diagnose Implication Graph ω7: ω6: x3@3¬x8 x9 ¬x8 ¬x9 ω8 x2@2 ¬x7@2 ¬x8 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2 ω6 ¬x6@4 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  78. 78. Diagnose Implication Graph ω7: ω6: x3@3¬x8 x9 ¬x8 ¬x9 ω8 x2@2 ¬x7@2 ¬x8 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2It contains one literal ω6 ¬x6@4 in the current x8@5 ¬x9@5 ω3 decision level (i.e. 5). ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9
  79. 79. Diagnose Implication Graph ω7: ω6: x3@3¬x8 x9 ¬x8 ¬x9 ω8 x2@2 ¬x7@2 ¬x8 x1@1 ω9 Reason ω9 ω3 Side ¬x4@2It contains one literal ω6 ¬x6@4 in the current x8@5 ¬x9@5 ω3 decision level (i.e. 5). ω7 ω7 x5@4 Conflict Side Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 •New ¬x2 ¬x7 learnt ! ω8: clause is • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  80. 80. Backtrack Implication Graph Learnt clause: ¬x8 x3@3 ω8 x2@2 ¬x7@2x8 was set at level 5 x1@1 ω9 ω9 ω3Assertion level of this ¬x4@2clause (which is thesecond highest level) ω6 ¬x6@4is 0 by convention. x8@5 ¬x9@5 ω3 Backtrack to level 0 ω7 ω7 x5@4 (root level) Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  81. 81. Backtrack Implication Graphx1 x3@3 ω8x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 ¬x4@2 ω6 ¬x6@4x4 x4 x5 x8@5 ¬x9@5 ω3 ω7 ω7 x5@4 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  82. 82. Backtrack Implication Graphx1x2x3 x3 x3x4 x4 x5 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  83. 83. Deduce Implication Graphx1x2x3 x3 x3x4 x4 x5 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  84. 84. Deduce Implication Graphx1x2x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  85. 85. Decide Implication Graphx1x2x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  86. 86. Decide Implication Graphx1 x1x2 x1@1x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  87. 87. Decide Implication Graphx1 x1x2 x2 x2@2 x1@1x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  88. 88. Deduce Implication Graphx1 x1x2 x2 x2@2 x1@1x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  89. 89. Deduce Implication Graphx1 x1 ω8x2 x2 x2@2 ¬x7@2 x1@1x3 x3 x3x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  90. 90. Deduce Implication Graphx1 x1 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 ¬x4@2x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  91. 91. Decide Implication Graphx1 x1 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 ¬x4@2x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  92. 92. Decide Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 x3 ¬x4@2x4 x4 x5 ¬x8@0 x8Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  93. 93. Decide Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 x3 ¬x4@2x4 x4 x5 x5 ¬x8@0 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  94. 94. Deduce Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9x3 x3 x3 x3 ¬x4@2x4 x4 x5 x5 ¬x8@0 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  95. 95. Deduce Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  96. 96. Decide Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  97. 97. Decide Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  98. 98. Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  99. 99. Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 All variables are ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4assigned withoutClause DB • ω1: •¬x1 ¬x4 x5 ω6: ¬x8 ¬x9 • • conflict ω2: ω3: • • ¬x4 ¬x5 x6 ¬x6 x7 ω7: ¬x8 ω8: ¬x2 x9 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  100. 100. Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  101. 101. Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4Clause DB Satisfiable • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  102. 102. Implication Graphx1 x1 x3@3 ω8x2 x2 x2@2 ¬x7@2 x1@1 ω9 ω9 ω3x3 x3 x3 x3 ¬x4@2 ¬x6@4x4 x4 x5 x5 ¬x8@0 ω3 x8 x9 x9@5 x5@4Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  103. 103. Implication GraphFound a model x3@3 ω8 M= x2@2 ¬x7@2 x1@1 ω9 { x1, x2, x3, ω9 ω3 ¬x4@2 ¬x4, x5, ¬x6 ¬x6@4 ¬x8@0 ω3¬x7, ¬x8, x9 } x9@5 x5@4 Clause DB • ω1: ¬x1 ¬x4 x5 • ω6: ¬x8 ¬x9 • ω2: ¬x4 x6 • ω7: ¬x8 x9 • ω3: ¬x5 ¬x6 x7 • ω8: ¬x2 ¬x7 • ω4: ¬x7 x8 • ω9: ¬x1 ¬x4 x7 • ω5: ¬x2 ¬x7 x9 • ω10: ¬x8
  104. 104. fin.
  105. 105. References• J. P. Marques-Silva and K. A. Sakallah, "GRASP: a search algorithm for propositional satisfiability," Computers, IEEE Transactions on, vol. 48, no. 5, pp. 506-521, May 1999.• Handbook of Satisfiability, A. Biere, M. Heule, H. Van Maaren, and T. Walsh, Eds. IOS Press, Feb. 2009.

×