Clover Coverage Report
Coverage timestamp: mer. juin 27 2007 07:27:16 CEST
16   77   5   5,33
10   37   0,44   3
3     2,33  
1    
 
  ConflictMapClause       Line # 33 16 5 93,1% 0.9310345
 
  (43)
 
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.constraints.pb;
26   
27    import java.math.BigInteger;
28    import java.util.HashMap;
29    import java.util.Map;
30   
31    import org.sat4j.minisat.core.ILits;
32   
 
33    public class ConflictMapClause extends ConflictMap {
34   
 
35  125470 toggle public ConflictMapClause(Map<Integer, BigInteger> m, BigInteger d,
36    ILits voc, int level) {
37  125470 super(m, d, voc, level);
38    }
39   
 
40  125470 toggle public static IConflict createConflict(PBConstr cpb, int level) {
41  125470 Map<Integer, BigInteger> m = new HashMap<Integer, BigInteger>();
42  125470 int lit;
43  125470 BigInteger coefLit;
44  2630083 for (int i = 0; i < cpb.size(); i++) {
45  2504613 lit = cpb.get(i);
46  2504613 coefLit = cpb.getCoef(i);
47  2504613 assert cpb.get(i) != 0;
48  2504613 assert cpb.getCoef(i).signum() > 0;
49  2504613 m.put(lit, coefLit);
50    }
51  125470 return new ConflictMapClause(m, cpb.getDegree(), cpb.getVocabulary(),
52    level);
53    }
54   
55    /**
56    * reduces the constraint defined by wpb until the result of the cutting
57    * plane is a conflict. this reduction returns a clause.
58    *
59    * @param litImplied
60    * @param ind
61    * @param reducedCoefs
62    * @param wpb
63    * @return
64    */
 
65  350 toggle @Override
66    protected BigInteger reduceUntilConflict(int litImplied, int ind,
67    BigInteger[] reducedCoefs, WatchPb wpb) {
68  23883 for (int i = 0; i < reducedCoefs.length; i++)
69  23533 if (i == ind || wpb.getVocabulary().isFalsified(wpb.get(i)))
70  15100 reducedCoefs[i] = BigInteger.ONE;
71    else
72  8433 reducedCoefs[i] = BigInteger.ZERO;
73  350 coefMultCons = coefs.get(litImplied ^ 1);
74  350 coefMult = BigInteger.ONE;
75  350 return BigInteger.ONE;
76    }
77    }