1 /******************************************************************************* 2 * SAT4J: a SATisfiability library for Java Copyright (C) 2004, 2012 Artois University and CNRS 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 original MiniSat specification from: 20 * 21 * An extensible SAT solver. Niklas Een and Niklas Sorensson. Proceedings of the 22 * Sixth International Conference on Theory and Applications of Satisfiability 23 * Testing, LNCS 2919, pp 502-518, 2003. 24 * 25 * See www.minisat.se for the original solver in C++. 26 * 27 * Contributors: 28 * CRIL - initial API and implementation 29 *******************************************************************************/ 30 package org.sat4j.minisat.core; 31 32 import org.sat4j.specs.ILogAble; 33 import org.sat4j.specs.ISolver; 34 35 /** 36 * Abstraction for Conflict Driven Clause Learning Solver. 37 * 38 * Allows to easily access the various options available to setup the solver. 39 * 40 * @author daniel 41 * 42 * @param <D> 43 */ 44 public interface ICDCL<D extends DataStructureFactory> extends ISolver, 45 UnitPropagationListener, ActivityListener, Learner { 46 47 /** 48 * Change the internal representation of the constraints. Note that the 49 * heuristics must be changed prior to calling that method. 50 * 51 * @param dsf 52 * the internal factory 53 */ 54 void setDataStructureFactory(D dsf); 55 56 /** 57 * 58 * @since 2.2 59 * @deprecated renamed into setLearningStrategy() 60 * @see #setLearningStrategy(LearningStrategy) 61 */ 62 @Deprecated 63 void setLearner(LearningStrategy<D> learner); 64 65 /** 66 * Allow to change the learning strategy, i.e. to decide which 67 * clauses/constraints should be learned by the solver after conflict 68 * analysis. 69 * 70 * @since 2.3.3 71 */ 72 void setLearningStrategy(LearningStrategy<D> strategy); 73 74 void setSearchParams(SearchParams sp); 75 76 SearchParams getSearchParams(); 77 78 SolverStats getStats(); 79 80 void setRestartStrategy(RestartStrategy restarter); 81 82 RestartStrategy getRestartStrategy(); 83 84 /** 85 * Setup the reason simplification strategy. By default, there is no reason 86 * simplification. NOTE THAT REASON SIMPLIFICATION DOES NOT WORK WITH 87 * SPECIFIC DATA STRUCTURE FOR HANDLING BOTH BINARY AND TERNARY CLAUSES. 88 * 89 * @param simp 90 * a simplification type. 91 * 92 */ 93 void setSimplifier(SimplificationType simp); 94 95 /** 96 * Setup the reason simplification strategy. By default, there is no reason 97 * simplification. NOTE THAT REASON SIMPLIFICATION IS ONLY ALLOWED FOR WL 98 * CLAUSAL data structures. USING REASON SIMPLIFICATION ON CB CLAUSES, 99 * CARDINALITY CONSTRAINTS OR PB CONSTRAINTS MIGHT RESULT IN INCORRECT 100 * RESULTS. 101 * 102 * @param simp 103 */ 104 void setSimplifier(ISimplifier simp); 105 106 ISimplifier getSimplifier(); 107 108 /** 109 * @param lcds 110 * @since 2.1 111 */ 112 void setLearnedConstraintsDeletionStrategy( 113 LearnedConstraintsDeletionStrategy lcds); 114 115 /** 116 * 117 * @param timer 118 * when to apply constraints cleanup. 119 * @param evaluation 120 * the strategy used to evaluate learned clauses. 121 * @since 2.3.2 122 */ 123 void setLearnedConstraintsDeletionStrategy(ConflictTimer timer, 124 LearnedConstraintsEvaluationType evaluation); 125 126 /** 127 * 128 * @param evaluation 129 * the strategy used to evaluate learned clauses. 130 * @since 2.3.2 131 */ 132 void setLearnedConstraintsDeletionStrategy( 133 LearnedConstraintsEvaluationType evaluation); 134 135 IOrder getOrder(); 136 137 void setOrder(IOrder h); 138 139 void setNeedToReduceDB(boolean needToReduceDB); 140 141 void setLogger(ILogAble out); 142 143 ILogAble getLogger(); 144 }