![JAR search and dependency download from the Maven repository](/logo.png)
org.sat4j.pb.tools.ImplicationRHS Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.sat4j.pb Show documentation
Show all versions of org.sat4j.pb Show documentation
The pb library contains algorithms for solving pseudo boolean optimization problems.
The newest version!
/*******************************************************************************
* SAT4J: a SATisfiability library for Java Copyright (C) 2004-2008 Daniel Le Berre
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU Lesser General Public License Version 2.1 or later (the
* "LGPL"), in which case the provisions of the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of the LGPL, and not to allow others to use your version of
* this file under the terms of the EPL, indicate your decision by deleting
* the provisions above and replace them with the notice and other provisions
* required by the LGPL. If you do not delete the provisions above, a recipient
* may use your version of this file under the terms of the EPL or the LGPL.
*******************************************************************************/
package org.sat4j.pb.tools;
import org.sat4j.core.Vec;
import org.sat4j.specs.ContradictionException;
import org.sat4j.specs.IConstr;
import org.sat4j.specs.IVec;
import org.sat4j.specs.IVecInt;
/**
* That class represents the RHS of an implication.
*
* @author daniel
*
* @param
* @param
*/
public class ImplicationRHS {
private final IVecInt clause;
private final DependencyHelper helper;
private final IVec toName = new Vec();
public ImplicationRHS(DependencyHelper helper, IVecInt clause) {
this.clause = clause;
this.helper = helper;
}
/**
* Build an implication with a conjunction of literals in the RHS.
*
* @param thing
* a domain object that will appear positively.
* @return a RHS conjunction of literals.
* @throws ContradictionException
*/
public ImplicationAnd implies(T thing) throws ContradictionException {
ImplicationAnd and = new ImplicationAnd(helper, clause);
and.and(thing);
return and;
}
/**
* Build an implication with a disjunction of literals in the RHS.
*
* @param thing
* a domain object
* @return an object used to name the constraint. The constraint MUST BE
* NAMED.
* @throws ContradictionException
*/
public ImplicationNamer implies(T... things)
throws ContradictionException {
for (T t : things) {
clause.push(helper.getIntValue(t));
}
toName.push(helper.solver.addClause(clause));
return new ImplicationNamer(helper, toName);
}
/**
* Build an implication with a conjunction of literals in the RHS.
*
* @param thing
* a domain object that will appear negatively.
* @return a RHS conjunction of literals.
* @throws ContradictionException
*/
public ImplicationAnd impliesNot(T thing)
throws ContradictionException {
ImplicationAnd and = new ImplicationAnd(helper, clause);
and.andNot(thing);
return and;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy