View Javadoc

1   /*******************************************************************************
2   * SAT4J: a SATisfiability library for Java Copyright (C) 2004-2008 Daniel Le Berre
3   *
4   * All rights reserved. This program and the accompanying materials
5   * are made available under the terms of the Eclipse Public License v1.0
6   * which accompanies this distribution, and is available at
7   * http://www.eclipse.org/legal/epl-v10.html
8   *
9   * Alternatively, the contents of this file may be used under the terms of
10  * either the GNU Lesser General Public License Version 2.1 or later (the
11  * "LGPL"), in which case the provisions of the LGPL are applicable instead
12  * of those above. If you wish to allow use of your version of this file only
13  * under the terms of the LGPL, and not to allow others to use your version of
14  * this file under the terms of the EPL, indicate your decision by deleting
15  * the provisions above and replace them with the notice and other provisions
16  * required by the LGPL. If you do not delete the provisions above, a recipient
17  * may use your version of this file under the terms of the EPL or the LGPL.
18  * 
19  * Based on the pseudo boolean algorithms described in:
20  * A fast pseudo-Boolean constraint solver Chai, D.; Kuehlmann, A.
21  * Computer-Aided Design of Integrated Circuits and Systems, IEEE Transactions on
22  * Volume 24, Issue 3, March 2005 Page(s): 305 - 317
23  * 
24  * and 
25  * Heidi E. Dixon, 2004. Automating Pseudo-Boolean Inference within a DPLL 
26  * Framework. Ph.D. Dissertation, University of Oregon.
27  *******************************************************************************/
28  package org.sat4j.pb.constraints.pb;
29  
30  import java.math.BigInteger;
31  
32  import org.sat4j.minisat.core.VarActivityListener;
33  
34  public interface IConflict extends IDataStructurePB {
35  
36      /**
37       * Effectue une resolution avec une contrainte PB. Met a jour le Conflict.
38       * 
39       * @param cpb
40       *            contrainte avec laquelle on va faire la resolution
41       * @param litImplied
42       *            litteral devant etre resolu
43       * @param val
44       *            TODO
45       * @return la mise a jour du degre
46       */
47      BigInteger resolve(PBConstr cpb, int litImplied, VarActivityListener val);
48  
49      BigInteger slackConflict();
50  
51      boolean isAssertive(int dl);
52  
53      /**
54       * Reduction d'une contrainte On supprime un litteral non assigne
55       * prioritairement, vrai sinon. En aucun cas on ne supprime litImplied.
56       * 
57       * @return mise a jour du degre
58       */
59      public BigInteger reduceInConstraint(WatchPb wpb,
60              final BigInteger[] coefsBis, final int indLitImplied,
61              final BigInteger degreeBis);
62  
63      /**
64       * retourne le niveau de backtrack : c'est-?-dire le niveau le plus haut
65       * pour lequel la contrainte est assertive
66       * 
67       * @param maxLevel
68       *            le plus bas niveau pour lequel la contrainte est assertive
69       * @return the highest level (smaller int) for which the constraint is
70       *         assertive.
71       */
72      public int getBacktrackLevel(int maxLevel);
73  
74      public void updateSlack(int level);
75      public boolean slackIsCorrect(int decisionLevel);
76  
77  }