public abstract class BooleanFormulaTransformationVisitor extends Object implements BooleanFormulaVisitor<BooleanFormula>
This class ensures that each subtree of the formula
is visited only once.
To ensure this for subclasses, they need to call
visitIfNotSeen(BooleanFormula) or
visitIfNotSeen(List).
WARNING: transforming very large formulas with this class will lead
to StackOverflowError.
| Modifier | Constructor and Description |
|---|---|
protected |
BooleanFormulaTransformationVisitor(FormulaManager pFmgr,
Map<BooleanFormula,BooleanFormula> pCache) |
| Modifier and Type | Method and Description |
|---|---|
BooleanFormula |
visitAnd(List<BooleanFormula> pOperands)
Visit an AND-expression.
|
BooleanFormula |
visitAtom(BooleanFormula pAtom,
FunctionDeclaration<BooleanFormula> decl)
Visit an SMT atom.
|
BooleanFormula |
visitBoundVar(BooleanFormula var,
int deBruijnIdx)
Visit a boolean variable bound by a quantifier.
|
BooleanFormula |
visitConstant(boolean value)
Visit a constant with a given value.
|
BooleanFormula |
visitEquivalence(BooleanFormula pOperand1,
BooleanFormula pOperand2)
Visit an equivalence between two formulas of boolean sort:
operand1 = operand2 |
protected BooleanFormula |
visitIfNotSeen(BooleanFormula f) |
protected List<BooleanFormula> |
visitIfNotSeen(List<BooleanFormula> pOperands) |
BooleanFormula |
visitIfThenElse(BooleanFormula pCondition,
BooleanFormula pThenFormula,
BooleanFormula pElseFormula)
Visit an if-then-else expression.
|
BooleanFormula |
visitImplication(BooleanFormula pOperand1,
BooleanFormula pOperand2)
Visit an implication.
|
BooleanFormula |
visitNot(BooleanFormula pOperand)
Visit a NOT-expression.
|
BooleanFormula |
visitOr(List<BooleanFormula> pOperands)
Visit an OR-expression.
|
BooleanFormula |
visitQuantifier(QuantifiedFormulaManager.Quantifier quantifier,
BooleanFormula quantifiedAST,
List<Formula> boundVars,
BooleanFormula body)
Visit a quantifier: forall- or exists-.
|
BooleanFormula |
visitXor(BooleanFormula operand1,
BooleanFormula operand2)
Visit a XOR-expression.
|
protected BooleanFormulaTransformationVisitor(FormulaManager pFmgr, Map<BooleanFormula,BooleanFormula> pCache)
protected final BooleanFormula visitIfNotSeen(BooleanFormula f)
protected final List<BooleanFormula> visitIfNotSeen(List<BooleanFormula> pOperands)
public BooleanFormula visitConstant(boolean value)
BooleanFormulaVisitorvisitConstant in interface BooleanFormulaVisitor<BooleanFormula>BooleanFormulaManager.makeBoolean(boolean)public BooleanFormula visitBoundVar(BooleanFormula var, int deBruijnIdx)
BooleanFormulaVisitorvisitBoundVar in interface BooleanFormulaVisitor<BooleanFormula>public BooleanFormula visitAtom(BooleanFormula pAtom, FunctionDeclaration<BooleanFormula> decl)
BooleanFormulaVisitorThis is anything with a boolean sort which is not covered by the cases above.
visitAtom in interface BooleanFormulaVisitor<BooleanFormula>public BooleanFormula visitNot(BooleanFormula pOperand)
BooleanFormulaVisitorvisitNot in interface BooleanFormulaVisitor<BooleanFormula>pOperand - Negated term.BooleanFormulaManager.not(org.sosy_lab.solver.api.BooleanFormula)public BooleanFormula visitAnd(List<BooleanFormula> pOperands)
BooleanFormulaVisitorvisitAnd in interface BooleanFormulaVisitor<BooleanFormula>BooleanFormulaManager.and(org.sosy_lab.solver.api.BooleanFormula, org.sosy_lab.solver.api.BooleanFormula)public BooleanFormula visitOr(List<BooleanFormula> pOperands)
BooleanFormulaVisitorvisitOr in interface BooleanFormulaVisitor<BooleanFormula>BooleanFormulaManager.or(org.sosy_lab.solver.api.BooleanFormula, org.sosy_lab.solver.api.BooleanFormula)public BooleanFormula visitXor(BooleanFormula operand1, BooleanFormula operand2)
BooleanFormulaVisitorvisitXor in interface BooleanFormulaVisitor<BooleanFormula>BooleanFormulaManager.xor(org.sosy_lab.solver.api.BooleanFormula, org.sosy_lab.solver.api.BooleanFormula)public BooleanFormula visitEquivalence(BooleanFormula pOperand1, BooleanFormula pOperand2)
BooleanFormulaVisitoroperand1 = operand2public BooleanFormula visitImplication(BooleanFormula pOperand1, BooleanFormula pOperand2)
BooleanFormulaVisitorpublic BooleanFormula visitIfThenElse(BooleanFormula pCondition, BooleanFormula pThenFormula, BooleanFormula pElseFormula)
BooleanFormulaVisitorvisitIfThenElse in interface BooleanFormulaVisitor<BooleanFormula>BooleanFormulaManager.ifThenElse(org.sosy_lab.solver.api.BooleanFormula, T, T)public BooleanFormula visitQuantifier(QuantifiedFormulaManager.Quantifier quantifier, BooleanFormula quantifiedAST, List<Formula> boundVars, BooleanFormula body)
BooleanFormulaVisitorvisitQuantifier in interface BooleanFormulaVisitor<BooleanFormula>quantifier - Quantifier type: FORALL- or EXISTS-quantifiedAST - AST of the quantified node.
Provided because it is difficult to re-create from the parameters.boundVars - Variables bound by this quantifier.body - Body of the quantified expression.QuantifiedFormulaManager.mkQuantifier(org.sosy_lab.solver.api.QuantifiedFormulaManager.Quantifier, java.util.List<? extends org.sosy_lab.solver.api.Formula>, org.sosy_lab.solver.api.BooleanFormula),
QuantifiedFormulaManager.forall(java.util.List<? extends org.sosy_lab.solver.api.Formula>, org.sosy_lab.solver.api.BooleanFormula),
QuantifiedFormulaManager.exists(java.util.List<? extends org.sosy_lab.solver.api.Formula>, org.sosy_lab.solver.api.BooleanFormula)