View Javadoc

1   /*
2    * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2006 Daniel Le Berre
3    * 
4    * Based on the original minisat specification from:
5    * 
6    * An extensible SAT solver. Niklas E?n and Niklas S?rensson. Proceedings of the
7    * Sixth International Conference on Theory and Applications of Satisfiability
8    * Testing, LNCS 2919, pp 502-518, 2003.
9    * 
10   * This library is free software; you can redistribute it and/or modify it under
11   * the terms of the GNU Lesser General Public License as published by the Free
12   * Software Foundation; either version 2.1 of the License, or (at your option)
13   * any later version.
14   * 
15   * This library is distributed in the hope that it will be useful, but WITHOUT
16   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
18   * details.
19   * 
20   * You should have received a copy of the GNU Lesser General Public License
21   * along with this library; if not, write to the Free Software Foundation, Inc.,
22   * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23   * 
24   */
25  package org.sat4j.minisat.core;
26  
27  import java.io.Serializable;
28  
29  /**
30   * Interface to the solver main steps. Useful for integrating search
31   * visualization or debugging.
32   * 
33   * @author daniel
34   * 
35   */
36  public interface SearchListener extends Serializable {
37  
38      /**
39       * decision variable
40       * 
41       * @param p
42       */
43      void assuming(int p);
44  
45      /**
46       * Unit propagation
47       * 
48       * @param p
49       */
50      void propagating(int p);
51  
52      /**
53       * backtrack on a decision variable
54       * 
55       * @param p
56       */
57      void backtracking(int p);
58  
59      /**
60       * adding forced variable (conflict driven assignment)
61       */
62      void adding(int p);
63  
64      /**
65       * learning a new clause
66       * 
67       * @param c
68       */
69      void learn(Constr c);
70  
71      /**
72       * delete a clause
73       */
74      void delete(int[] clause);
75  
76      /**
77       * a conflict has been found.
78       * 
79       */
80      void conflictFound();
81  
82      /**
83       * a solution is found.
84       * 
85       */
86      void solutionFound();
87  
88      /**
89       * starts a propagation
90       */
91      void beginLoop();
92  
93      /**
94       * Start the search.
95       * 
96       */
97      void start();
98  
99      /**
100      * End the search.
101      * 
102      * @param result
103      *            the result of the search.
104      */
105     void end(Lbool result);
106 }