internal static Vertex TranslateToRobdd(BoolExpr <T_Identifier> expr, ConversionContext <T_Identifier> context) { Debug.Assert(null != expr, "must provide an expression"); ToDecisionDiagramConverter <T_Identifier> converter = new ToDecisionDiagramConverter <T_Identifier>(context); return(expr.Accept(converter)); }
internal static List <TermExpr <T_Identifier> > GetTerms(BoolExpr <T_Identifier> expression) { Debug.Assert(null != expression, "expression must be given"); LeafVisitor <T_Identifier> visitor = new LeafVisitor <T_Identifier>(); expression.Accept(visitor); return(visitor._terms); }
internal static int CountTerms(BoolExpr <T_Identifier> expression) { Debug.Assert(null != expression); return(expression.Accept(s_instance)); }
internal static BoolExpr <DomainConstraint <T_Variable, T_Element> > EliminateNot <T_Variable, T_Element>(BoolExpr <DomainConstraint <T_Variable, T_Element> > expression) { return(expression.Accept(NonNegatedDomainConstraintTreeVisitor <T_Variable, T_Element> .Instance)); }
internal override BoolExpr <T_Identifier> LocalSimplify(BoolExpr <T_Identifier> expression) { return(expression.Accept(Simplifier <T_Identifier> .Instance)); }
internal override BoolExpr <DomainConstraint <T_Variable, T_Element> > LocalSimplify(BoolExpr <DomainConstraint <T_Variable, T_Element> > expression) { expression = NegationPusher.EliminateNot <T_Variable, T_Element>(expression); return(expression.Accept(Simplifier <DomainConstraint <T_Variable, T_Element> > .Instance)); }