dReal4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
naive_cnfizer.h
1 #pragma once
2 
4 #include "dreal/util/nnfizer.h"
5 
6 namespace dreal {
7 /// Transforms a symbolic formula @p f into a CNF formula by
8 /// preserving its semantics.
9 ///
10 /// @note This transform can increase the size exponentially. We are
11 /// using this transformation in TseitinCnfizer when we process the
12 /// nested formula in a universally quantified formula.
13 class NaiveCnfizer {
14  public:
15  /// Convert @p f into its CNF form.
16  Formula Convert(const Formula& f) const;
17 
18  private:
19  Formula Visit(const Formula& f) const;
20  Formula VisitFalse(const Formula& f) const;
21  Formula VisitTrue(const Formula& f) const;
22  Formula VisitVariable(const Formula& f) const;
23  Formula VisitEqualTo(const Formula& f) const;
24  Formula VisitNotEqualTo(const Formula& f) const;
25  Formula VisitGreaterThan(const Formula& f) const;
26  Formula VisitGreaterThanOrEqualTo(const Formula& f) const;
27  Formula VisitLessThan(const Formula& f) const;
28  Formula VisitLessThanOrEqualTo(const Formula& f) const;
29  Formula VisitConjunction(const Formula& f) const;
30  Formula VisitDisjunction(const Formula& f) const;
31  Formula VisitNegation(const Formula& f) const;
32  Formula VisitForall(const Formula& f) const;
33 
34  const Nnfizer nnfizer_{};
35 
36  // Makes VisitFormula a friend of this class so that it can use private
37  // operator()s.
38  friend Formula drake::symbolic::VisitFormula<Formula>(const NaiveCnfizer*,
39  const Formula&);
40 };
41 } // namespace dreal
Sum type of symbolic::Expression and symbolic::Formula.
Definition: api.cc:9
Transforms a symbolic formula f into a CNF formula by preserving its semantics.
Definition: naive_cnfizer.h:13
Formula Convert(const Formula &f) const
Convert f into its CNF form.
Definition: naive_cnfizer.cc:18
A class implementing NNF (Negation Normal Form) conversion.
Definition: nnfizer.h:12
This is the header file that we consolidate Drake&#39;s symbolic classes and expose them inside of dreal ...
Represents a symbolic form of a first-order logic formula.
Definition: symbolic_formula.h:101