public abstract class AbstractNumeralFormulaManager<TFormulaInfo,TType,TEnv,ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula,TFuncDecl> extends Object implements NumeralFormulaManager<ParamFormulaType,ResultFormulaType>
NumeralFormulaManager. It handles all the unwrapping and wrapping
from Formula instances to solver-specific formula representations, such that the concrete
class needs to handle only its own internal types.NumeralFormulaManager.getFormulaType() must be safe to be called from the constructor
(the default implementations of IntegerFormulaManager and
RationalFormulaManager satisfy this).| Modifier and Type | Class and Description |
|---|---|
static class |
AbstractNumeralFormulaManager.NonLinearArithmetic |
| Modifier and Type | Field and Description |
|---|---|
protected FormulaCreator<TFormulaInfo,TType,TEnv,TFuncDecl> |
formulaCreator |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractNumeralFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv,TFuncDecl> pCreator,
AbstractNumeralFormulaManager.NonLinearArithmetic pNonLinearArithmetic) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetFormulaTypeprotected final FormulaCreator<TFormulaInfo,TType,TEnv,TFuncDecl> formulaCreator
protected AbstractNumeralFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv,TFuncDecl> pCreator, AbstractNumeralFormulaManager.NonLinearArithmetic pNonLinearArithmetic)
protected ResultFormulaType wrap(TFormulaInfo pTerm)
protected abstract boolean isNumeral(TFormulaInfo val)
public ResultFormulaType makeNumber(long i)
makeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeNumberImpl(long i)
public ResultFormulaType makeNumber(BigInteger i)
makeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeNumberImpl(BigInteger i)
public ResultFormulaType makeNumber(String i)
makeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeNumberImpl(String i)
public ResultFormulaType makeNumber(Rational pRational)
makeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected TFormulaInfo makeNumberImpl(Rational pRational)
public ResultFormulaType makeNumber(double pNumber)
NumeralFormulaManagermakeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeNumberImpl(double pNumber)
public ResultFormulaType makeNumber(BigDecimal pNumber)
NumeralFormulaManagermakeNumber in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeNumberImpl(BigDecimal pNumber)
protected final TFormulaInfo decimalAsInteger(BigDecimal val)
makeNumber(BigDecimal) when the current theory supports only integers and
division by constants.public ResultFormulaType makeVariable(String pVar)
NumeralFormulaManagerPlease make sure that the given name is valid in SMT-LIB2. Take a look at FormulaManager.isValidName(java.lang.String) for further information.
This method does not quote or unquote the given name, but uses the plain name "AS IS".
Formula.toString() can return a different String than the given one.
makeVariable in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo makeVariableImpl(String i)
public ResultFormulaType negate(ParamFormulaType pNumber)
negate in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo negate(TFormulaInfo pParam1)
public ResultFormulaType add(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
add in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo add(TFormulaInfo pParam1, TFormulaInfo pParam2)
public ResultFormulaType sum(List<ParamFormulaType> operands)
sum in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected TFormulaInfo sumImpl(List<TFormulaInfo> operands)
public ResultFormulaType subtract(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
subtract in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo subtract(TFormulaInfo pParam1, TFormulaInfo pParam2)
public ResultFormulaType divide(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
divide in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected TFormulaInfo divide(TFormulaInfo pParam1, TFormulaInfo pParam2)
pParam1 - the dividendpParam2 - the divisorpublic ResultFormulaType modulo(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
protected TFormulaInfo modulo(TFormulaInfo pParam1, TFormulaInfo pParam2)
pParam1 - the dividendpParam2 - the divisorpublic BooleanFormula modularCongruence(ParamFormulaType pNumber1, ParamFormulaType pNumber2, long pModulo)
public BooleanFormula modularCongruence(ParamFormulaType pNumber1, ParamFormulaType pNumber2, BigInteger pModulo)
protected TFormulaInfo modularCongruence(TFormulaInfo a, TFormulaInfo b, BigInteger m)
a - first operandb - second operandm - the modulusa = b (mod m)protected TFormulaInfo modularCongruence(TFormulaInfo a, TFormulaInfo b, long m)
a - first operandb - second operandm - the modulusa = b (mod m)public ResultFormulaType multiply(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
multiply in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected TFormulaInfo multiply(TFormulaInfo pParam1, TFormulaInfo pParam2)
pParam1 - first factorpParam2 - second factorpublic BooleanFormula equal(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
equal in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo equal(TFormulaInfo pParam1, TFormulaInfo pParam2)
public BooleanFormula distinct(List<ParamFormulaType> pNumbers)
NumeralFormulaManagerdistinct in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo distinctImpl(List<TFormulaInfo> pNumbers)
public BooleanFormula greaterThan(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
greaterThan in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo greaterThan(TFormulaInfo pParam1, TFormulaInfo pParam2)
public BooleanFormula greaterOrEquals(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
greaterOrEquals in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo greaterOrEquals(TFormulaInfo pParam1, TFormulaInfo pParam2)
public BooleanFormula lessThan(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
lessThan in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo lessThan(TFormulaInfo pParam1, TFormulaInfo pParam2)
public BooleanFormula lessOrEquals(ParamFormulaType pNumber1, ParamFormulaType pNumber2)
lessOrEquals in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo lessOrEquals(TFormulaInfo pParam1, TFormulaInfo pParam2)
protected final FormulaCreator<TFormulaInfo,TType,TEnv,TFuncDecl> getFormulaCreator()
protected final TType toSolverType(FormulaType<?> formulaType)