public abstract class AbstractUnsafeFormulaManager<TFormulaInfo,TType,TEnv> extends Object implements UnsafeFormulaManager
| Modifier | Constructor and Description |
|---|---|
protected |
AbstractUnsafeFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv> creator) |
| Modifier and Type | Method and Description |
|---|---|
List<Formula> |
getAllArgs(Formula pF) |
Formula |
getArg(Formula pF,
int pN) |
protected abstract TFormulaInfo |
getArg(TFormulaInfo pT,
int n) |
int |
getArity(Formula pF) |
protected abstract int |
getArity(TFormulaInfo pT) |
protected FormulaCreator<TFormulaInfo,TType,TEnv> |
getFormulaCreator() |
String |
getName(Formula pF)
Returns the name of the formula (or function)
|
protected abstract String |
getName(TFormulaInfo pT) |
BooleanFormula |
getQuantifiedBody(Formula pQuantifiedFormula)
Deprecated.
|
protected abstract TFormulaInfo |
getQuantifiedBody(TFormulaInfo pT) |
boolean |
isAtom(Formula pF)
Deprecated.
|
protected abstract boolean |
isAtom(TFormulaInfo pT) |
boolean |
isBoundVariable(Formula pF) |
protected abstract boolean |
isBoundVariable(TFormulaInfo pT) |
boolean |
isFreeVariable(Formula pF) |
protected abstract boolean |
isFreeVariable(TFormulaInfo pT) |
boolean |
isNumber(Formula pF) |
protected abstract boolean |
isNumber(TFormulaInfo pT) |
boolean |
isQuantification(Formula pF)
Deprecated.
|
protected abstract boolean |
isQuantification(TFormulaInfo pT) |
boolean |
isUF(Formula pF) |
protected abstract boolean |
isUF(TFormulaInfo pT) |
boolean |
isVariable(Formula pF) |
protected abstract boolean |
isVariable(TFormulaInfo pT) |
protected abstract TFormulaInfo |
replaceArgs(TFormulaInfo pT,
List<TFormulaInfo> newArgs) |
<T extends Formula> |
replaceArgs(T pF,
List<Formula> pArgs)
Replaces the arguments of the given formula
|
protected abstract TFormulaInfo |
replaceArgsAndName(TFormulaInfo pT,
String newName,
List<TFormulaInfo> newArgs) |
<T extends Formula> |
replaceArgsAndName(T f,
String newName,
List<Formula> args)
Replaces the name and the arguments of the given formula.
|
BooleanFormula |
replaceQuantifiedBody(BooleanFormula pF,
BooleanFormula pNewBody)
Replace the body of a quantified formula.
|
protected abstract TFormulaInfo |
replaceQuantifiedBody(TFormulaInfo pF,
TFormulaInfo pBody) |
<T extends Formula> |
splitNumeralEqualityIfPossible(T pF)
If the given formula is a numeral (i.e., non-boolean) equality "x = y",
return a list
x<=y, x>=y. |
protected abstract List<? extends TFormulaInfo> |
splitNumeralEqualityIfPossible(TFormulaInfo pF) |
protected <T1 extends Formula,T2 extends Formula> |
substituteUsingLists(T1 pF,
Map<T2,T2> pFromToMapping)
Default implementation for
UnsafeFormulaManager.substitute(Formula, Map) for solvers that provide
an internal substitute operation that takes two lists instead of a map. |
protected TFormulaInfo |
substituteUsingListsImpl(TFormulaInfo pF,
List<TFormulaInfo> substituteFrom,
List<TFormulaInfo> substituteTo)
Backend for
substituteUsingLists(Formula, Map). |
protected <T1 extends Formula,T2 extends Formula> |
substituteUsingMap(T1 pF,
Map<T2,T2> pFromToMapping)
Default implementation for
UnsafeFormulaManager.substitute(Formula, Map). |
protected TFormulaInfo |
substituteUsingMapImpl(TFormulaInfo expr,
Map<TFormulaInfo,TFormulaInfo> memoization) |
protected TType |
toSolverType(FormulaType<?> formulaType) |
<R> R |
visit(FormulaVisitor<R> visitor,
Formula input) |
protected abstract <R> R |
visit(FormulaVisitor<R> visitor,
Formula input,
TFormulaInfo f) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitsubstituteprotected AbstractUnsafeFormulaManager(FormulaCreator<TFormulaInfo,TType,TEnv> creator)
@Deprecated public boolean isAtom(Formula pF)
isAtom in interface UnsafeFormulaManagerprotected abstract boolean isAtom(TFormulaInfo pT)
public int getArity(Formula pF)
getArity in interface UnsafeFormulaManagerprotected abstract int getArity(TFormulaInfo pT)
public Formula getArg(Formula pF, int pN)
getArg in interface UnsafeFormulaManagerprotected abstract TFormulaInfo getArg(TFormulaInfo pT, int n)
public List<Formula> getAllArgs(Formula pF)
getAllArgs in interface UnsafeFormulaManagerpublic boolean isVariable(Formula pF)
isVariable in interface UnsafeFormulaManagerprotected abstract boolean isVariable(TFormulaInfo pT)
public boolean isFreeVariable(Formula pF)
isFreeVariable in interface UnsafeFormulaManagerprotected abstract boolean isFreeVariable(TFormulaInfo pT)
public boolean isBoundVariable(Formula pF)
isBoundVariable in interface UnsafeFormulaManagerprotected abstract boolean isBoundVariable(TFormulaInfo pT)
@Deprecated public boolean isQuantification(Formula pF)
isQuantification in interface UnsafeFormulaManagerprotected abstract boolean isQuantification(TFormulaInfo pT)
@Deprecated public BooleanFormula getQuantifiedBody(Formula pQuantifiedFormula)
UnsafeFormulaManagerPrecondition: UnsafeFormulaManager.isQuantification(Formula) returns true for this formula.
getQuantifiedBody in interface UnsafeFormulaManagerprotected abstract TFormulaInfo getQuantifiedBody(TFormulaInfo pT)
public boolean isNumber(Formula pF)
isNumber in interface UnsafeFormulaManagerpublic BooleanFormula replaceQuantifiedBody(BooleanFormula pF, BooleanFormula pNewBody)
UnsafeFormulaManagerPrecondition: UnsafeFormulaManager.isQuantification(Formula) returns true for the first parameter.
replaceQuantifiedBody in interface UnsafeFormulaManagerprotected abstract TFormulaInfo replaceQuantifiedBody(TFormulaInfo pF, TFormulaInfo pBody)
protected abstract boolean isNumber(TFormulaInfo pT)
public boolean isUF(Formula pF)
isUF in interface UnsafeFormulaManagerprotected abstract boolean isUF(TFormulaInfo pT)
public String getName(Formula pF)
UnsafeFormulaManagergetName in interface UnsafeFormulaManagerprotected abstract String getName(TFormulaInfo pT)
public <T extends Formula> T replaceArgsAndName(T f, String newName, List<Formula> args)
UnsafeFormulaManagerreplaceArgsAndName in interface UnsafeFormulaManagerprotected abstract TFormulaInfo replaceArgsAndName(TFormulaInfo pT, String newName, List<TFormulaInfo> newArgs)
public <T extends Formula> T replaceArgs(T pF, List<Formula> pArgs)
UnsafeFormulaManagerreplaceArgs in interface UnsafeFormulaManagerprotected abstract TFormulaInfo replaceArgs(TFormulaInfo pT, List<TFormulaInfo> newArgs)
public <T extends Formula> List<T> splitNumeralEqualityIfPossible(T pF)
UnsafeFormulaManagerx<=y, x>=y.
Otherwise, return the unchanged formula. Note: 1) Returned list always has one or two elements. 2) Conjunction over the returned list is equivalent to the input formula.
splitNumeralEqualityIfPossible in interface UnsafeFormulaManagerprotected abstract List<? extends TFormulaInfo> splitNumeralEqualityIfPossible(TFormulaInfo pF)
protected final <T1 extends Formula,T2 extends Formula> T1 substituteUsingMap(T1 pF, Map<T2,T2> pFromToMapping)
UnsafeFormulaManager.substitute(Formula, Map).protected TFormulaInfo substituteUsingMapImpl(TFormulaInfo expr, Map<TFormulaInfo,TFormulaInfo> memoization)
protected final <T1 extends Formula,T2 extends Formula> T1 substituteUsingLists(T1 pF, Map<T2,T2> pFromToMapping)
UnsafeFormulaManager.substitute(Formula, Map) for solvers that provide
an internal substitute operation that takes two lists instead of a map.
If this is called, one needs to overwrite substituteUsingLists(Formula, Map).
protected TFormulaInfo substituteUsingListsImpl(TFormulaInfo pF, List<TFormulaInfo> substituteFrom, List<TFormulaInfo> substituteTo)
substituteUsingLists(Formula, Map).pF - The formula to change.substituteFrom - The list of parts that should be replaced.substituteTo - The list of replacement parts, in same order.public <R> R visit(FormulaVisitor<R> visitor, Formula input)
visit in interface UnsafeFormulaManagerprotected abstract <R> R visit(FormulaVisitor<R> visitor, Formula input, TFormulaInfo f)
protected final FormulaCreator<TFormulaInfo,TType,TEnv> getFormulaCreator()
protected final TType toSolverType(FormulaType<?> formulaType)