Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
0   89   1   -
0   23   -   0
0     -  
1    
 
  DataStructureFactory       Line # 40 0 1 - -1.0
 
No Tests
 
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   
26    package org.sat4j.minisat.core;
27   
28    import java.math.BigInteger;
29   
30    import org.sat4j.specs.ContradictionException;
31    import org.sat4j.specs.IVec;
32    import org.sat4j.specs.IVecInt;
33   
34    /**
35    * The aim of the factory is to provide a concrete implementation of clauses,
36    * cardinality constraints and pseudo boolean consraints.
37    *
38    * @author leberre
39    */
 
40    public interface DataStructureFactory<L extends ILits> {
41   
42    /**
43    * @param literals
44    * a set of literals using Dimacs format (signed non null
45    * integers).
46    * @return null if the constraint is a tautology.
47    * @throws ContradictionException
48    * the constraint is trivially unsatisfiable.
49    * @throws UnsupportedOperationException
50    * there is no concrete implementation for that constraint.
51    */
52    Constr createClause(IVecInt literals) throws ContradictionException;
53   
54    Constr createUnregisteredClause(IVecInt literals);
55   
56    void learnConstraint(Constr constr);
57   
58    Constr createCardinalityConstraint(IVecInt literals, int degree)
59    throws ContradictionException;
60   
61    Constr createPseudoBooleanConstraint(IVecInt literals,
62    IVec<BigInteger> coefs, boolean moreThan, BigInteger degree)
63    throws ContradictionException;
64   
65    Constr createUnregisteredPseudoBooleanConstraint(IVecInt literals,
66    IVec<BigInteger> coefs, BigInteger degree);
67   
68    void setUnitPropagationListener(UnitPropagationListener s);
69   
70    void setLearner(Learner l);
71   
72    void reset();
73   
74    L getVocabulary();
75   
76    /**
77    * @param p
78    * @return a vector containing all the objects to be notified of the
79    * satisfaction of that literal.
80    */
81    IVec<Propagatable> getWatchesFor(int p);
82   
83    /**
84    * @param p
85    * @param i
86    * the index of the conflicting constraint
87    */
88    void conflictDetectedInWatchesFor(int p, int i);
89    }