public class FormulaToDotVisitor extends Object implements FormulaVisitor<TraversalProcess>
Use in combination with FormulaManager.visitRecursively(org.sosy_lab.java_smt.api.Formula, org.sosy_lab.java_smt.api.visitors.FormulaVisitor<org.sosy_lab.java_smt.api.visitors.TraversalProcess>) to avoid visiting parts twice.
The graph will then contains shared subtrees only once.
| Constructor and Description |
|---|
FormulaToDotVisitor() |
| Modifier and Type | Method and Description |
|---|---|
String |
toString() |
TraversalProcess |
visitBoundVariable(Formula pF,
int pDeBruijnIdx)
Visit a variable bound by a quantifier.
|
TraversalProcess |
visitConstant(Formula pF,
Object pValue)
Visit a constant, such as "true"/"false" or a numeric constant like "1" or "1.0".
|
TraversalProcess |
visitFreeVariable(Formula pF,
String pName)
Visit a free variable (such as "x", "y" or "z"), not bound by a quantifier.
|
TraversalProcess |
visitFunction(Formula pF,
List<Formula> pArgs,
FunctionDeclaration<?> pFunctionDeclaration)
Visit an arbitrary, potentially uninterpreted function.
|
TraversalProcess |
visitQuantifier(BooleanFormula pF,
QuantifiedFormulaManager.Quantifier pQuantifier,
List<Formula> pBoundVariables,
BooleanFormula pBody)
Visit a quantified node.
|
public TraversalProcess visitFreeVariable(Formula pF, String pName)
FormulaVisitorvisitFreeVariable in interface FormulaVisitor<TraversalProcess>pF - Formula representing the variable.pName - Variable name.public TraversalProcess visitBoundVariable(Formula pF, int pDeBruijnIdx)
FormulaVisitorvisitBoundVariable in interface FormulaVisitor<TraversalProcess>pF - Formula representing the variable.pDeBruijnIdx - de-Bruijn index of the bound variable, which can be used to find the
matching quantifier.public TraversalProcess visitConstant(Formula pF, Object pValue)
FormulaVisitorvisitConstant in interface FormulaVisitor<TraversalProcess>pF - Formula representing the constant.pValue - The value of the constant. It is either of type Boolean or of a subtype of
Number, mostly a BigInteger, a BigDecimal, or a Rational.public TraversalProcess visitFunction(Formula pF, List<Formula> pArgs, FunctionDeclaration<?> pFunctionDeclaration)
FormulaVisitorvisitFunction in interface FormulaVisitor<TraversalProcess>pF - Input function.pArgs - List of argumentspFunctionDeclaration - Function declaration. Can be given to FormulaManager.makeApplication(org.sosy_lab.java_smt.api.FunctionDeclaration<T>, java.util.List<? extends org.sosy_lab.java_smt.api.Formula>) to construct a new instance of the same function with
different arguments.public TraversalProcess visitQuantifier(BooleanFormula pF, QuantifiedFormulaManager.Quantifier pQuantifier, List<Formula> pBoundVariables, BooleanFormula pBody)
FormulaVisitorvisitQuantifier in interface FormulaVisitor<TraversalProcess>pF - Quantifier formula.pQuantifier - Quantifier type: either FORALL or EXISTS.pBoundVariables - Variables bound by the quantifier. NOTE: not all solvers hold
metadata about bound variables. In case this is not available, this method will be called
with an empty list, yet mkQuantifier will work fine with an empty list as well.pBody - Body of the quantifier.