public abstract class AbstractNumeralFormulaManager<TFormulaInfo,TType,TEnv,ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula> 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.| Modifier and Type | Field and Description |
|---|---|
protected FormulaCreator<TFormulaInfo,TType,TEnv> |
formulaCreator |
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractNumeralFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv> pCreator) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetFormulaTypeprotected final FormulaCreator<TFormulaInfo,TType,TEnv> formulaCreator
protected AbstractNumeralFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv> pCreator)
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)
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)
modulo in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected TFormulaInfo modulo(TFormulaInfo pParam1, TFormulaInfo pParam2)
pParam1 - the dividendpParam2 - the divisorpublic BooleanFormula modularCongruence(ParamFormulaType pNumber1, ParamFormulaType pNumber2, long pModulo)
NumeralFormulaManagermodularCongruence in interface NumeralFormulaManager<ParamFormulaType extends NumeralFormula,ResultFormulaType extends NumeralFormula>protected abstract TFormulaInfo modularCongruence(TFormulaInfo pNumber1, TFormulaInfo pNumber2, long pModulo)
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 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> getFormulaCreator()
protected final TType toSolverType(FormulaType<?> formulaType)