/**
* Author: Georg Hofferek <georg.hofferek@iaik.tugraz.at>
*/
package at.iaik.suraq.smtlib.formula;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import at.iaik.suraq.sexp.SExpression;
import at.iaik.suraq.sexp.SExpressionConstants;
import at.iaik.suraq.sexp.Token;
import at.iaik.suraq.smtlib.SMTLibObject;
/**
* A propositional term. I.e., either a propositional constant or a
* propositional variable, or a propositional if-then-else construct.
*
* @author Georg Hofferek <georg.hofferek@iaik.tugraz.at>
*
*/
public abstract class PropositionalTerm extends Term implements Formula,
Serializable {
/**
*
*/
private static final long serialVersionUID = -8802037619823735053L;
/**
* @see at.iaik.suraq.smtlib.formula.Term#getType()
*/
@Override
public SExpression getType() {
return SExpressionConstants.BOOL_TYPE;
}
/**
* @see at.iaik.suraq.smtlib.formula.Formula#removeArrayEqualitiesTerm()
*/
@Override
public Formula removeArrayEqualities() {
// Nothing to do here.
// No array equalities contained here.
return this;
}
/**
* @see at.iaik.suraq.smtlib.formula.Formula#removeArrayEqualitiesTerm()
*/
@Override
public Term removeArrayEqualitiesTerm() {
// Nothing to do here.
// No array equalities contained here.
return this;
}
/**
* @see at.iaik.suraq.smtlib.formula.Formula#simplify()
*/
@Override
public Formula simplify() {
// Nothing to do
return this;
}
@Override
public abstract PropositionalTerm flatten();
/**
* @see at.iaik.suraq.smtlib.formula.Term#uninterpretedPredicatesToAuxiliaryVariables(at.iaik.suraq.smtlib.formula.Formula,
* java.util.Set, java.util.Set)
*/
/*
* @Override public abstract PropositionalTerm
* uninterpretedPredicatesToAuxiliaryVariables( Formula topLeveFormula,
* Set<Formula> constraints, Set<Token> noDependenceVars);
*/
/**
* @see at.iaik.suraq.smtlib.formula.Term#removeDomainITE(at.iaik.suraq.smtlib.formula.Formula,
* java.util.Set, java.util.List)
*/
@Override
public abstract PropositionalTerm removeDomainITE(Formula topLevelFormula,
Set<Token> noDependenceVars, List<Formula> andPreList);
/**
* @see at.iaik.suraq.smtlib.formula.Term#removeArrayITE(at.iaik.suraq.smtlib.formula.Formula,
* java.util.Set, java.util.Collection)
*/
@Override
public abstract PropositionalTerm removeArrayITE(Formula topLevelFormula,
Set<Token> noDependenceVars, Collection<Formula> constraints);
@Override
public abstract PropositionalTerm substituteUninterpretedFunction(
Map<Token, UninterpretedFunction> substitutions,
Map<SMTLibObject, SMTLibObject> done);
}