internal static StringBuilder ToBuilder(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     StringBuilder builder)
 {
     BoolExpression.CompactStringVisitor compactStringVisitor = new BoolExpression.CompactStringVisitor(builder);
     return(expression.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>)compactStringVisitor));
 }
 internal static DbExpression AsCqt(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     DbExpression row)
 {
     BoolExpression.AsCqtVisitor asCqtVisitor = new BoolExpression.AsCqtVisitor(row);
     return(expression.Accept <DbExpression>((Visitor <DomainConstraint <BoolLiteral, Constant>, DbExpression>)asCqtVisitor));
 }
 internal static IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > GetTerms(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     bool allowAllOperators)
 {
     BoolExpression.TermVisitor termVisitor = new BoolExpression.TermVisitor(allowAllOperators);
     return(expression.Accept <IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >((Visitor <DomainConstraint <BoolLiteral, Constant>, IEnumerable <TermExpr <DomainConstraint <BoolLiteral, Constant> > > >)termVisitor));
 }
 internal static BoolExpr <DomainConstraint <BoolLiteral, Constant> > FixRange(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     MemberDomainMap memberDomainMap)
 {
     BoolExpression.FixRangeVisitor fixRangeVisitor = new BoolExpression.FixRangeVisitor(memberDomainMap);
     return(expression.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)fixRangeVisitor));
 }
 internal static StringBuilder AsUserString(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     StringBuilder builder,
     string blockAlias)
 {
     BoolExpression.AsUserStringVisitor userStringVisitor = new BoolExpression.AsUserStringVisitor(builder, blockAlias);
     return(expression.Accept <StringBuilder>((Visitor <DomainConstraint <BoolLiteral, Constant>, StringBuilder>)userStringVisitor));
 }
 internal static void GetRequiredSlots(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     MemberProjectionIndex projectedSlotMap,
     bool[] requiredSlots)
 {
     BoolExpression.RequiredSlotsVisitor requiredSlotsVisitor = new BoolExpression.RequiredSlotsVisitor(projectedSlotMap, requiredSlots);
     expression.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)requiredSlotsVisitor);
 }
 internal static BoolExpr <DomainConstraint <BoolLiteral, Constant> > RemapExtentTreeNodes(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression,
     MemberDomainMap memberDomainMap,
     Dictionary <MemberPath, MemberPath> remap)
 {
     BoolExpression.RemapBoolVisitor remapBoolVisitor = new BoolExpression.RemapBoolVisitor(memberDomainMap, remap);
     return(expression.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)remapBoolVisitor));
 }
 internal static BoolExpr <DomainConstraint <BoolLiteral, Constant> > ToDnf(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expr,
     bool isNnf)
 {
     if (!isNnf)
     {
         expr = FragmentQueryKBChaseSupport.Normalizer.ToNnfAndSplitRange(expr);
     }
     return(expr.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)FragmentQueryKBChaseSupport.Normalizer.DnfTreeVisitor.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(expression);
     return(expression.Accept(Simplifier <DomainConstraint <T_Variable, T_Element> > .Instance));
 }
 internal BoolExpr <DomainConstraint <BoolLiteral, Constant> > Chase(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression)
 {
     return(expression.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >) this._visitor));
 }
 internal static int EstimateNnfAndSplitTermCount(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expr)
 {
     return(expr.Accept <int>((Visitor <DomainConstraint <BoolLiteral, Constant>, int>)FragmentQueryKBChaseSupport.Normalizer.NonNegatedNnfSplitCounter.Instance));
 }
 internal static BoolExpr <DomainConstraint <BoolLiteral, Constant> > ToNnfAndSplitRange(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expr)
 {
     return(expr.Accept <BoolExpr <DomainConstraint <BoolLiteral, Constant> > >((Visitor <DomainConstraint <BoolLiteral, Constant>, BoolExpr <DomainConstraint <BoolLiteral, Constant> > >)FragmentQueryKBChaseSupport.Normalizer.NonNegatedTreeVisitor.Instance));
 }
 internal static int CountTerms(BoolExpr <T_Identifier> expression)
 {
     return(expression.Accept <int>((Visitor <T_Identifier, int>)TermCounter <T_Identifier> ._instance));
 }
 internal static bool IsFinal(
     BoolExpr <DomainConstraint <BoolLiteral, Constant> > expression)
 {
     BoolExpression.IsFinalVisitor isFinalVisitor = new BoolExpression.IsFinalVisitor();
     return(expression.Accept <bool>((Visitor <DomainConstraint <BoolLiteral, Constant>, bool>)isFinalVisitor));
 }