SMT-RAT  24.02
Toolbox for Strategic and Parallel Satisfiability-Modulo-Theories Solving
ExpressionTypes.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 
5 namespace smtrat {
6 namespace expression {
7  using carl::operator<<;
8 
9  class Expression;
10  class ExpressionPool;
11 
12  struct ExpressionContent;
13  struct ITEExpression;
14  struct QuantifierExpression;
15  struct UnaryExpression;
16  struct BinaryExpression;
17  struct NaryExpression;
18 
19  std::ostream& operator<<(std::ostream& os, const Expression& expr);
20 
21  typedef std::vector<Expression> Expressions;
22 
23 
24  enum ITEType { ITE };
26  enum UnaryType { NOT };
27  enum BinaryType { };
28  enum NaryType { AND, OR, XOR, IFF };
29 
30 
31  inline std::ostream& operator<<(std::ostream& os, ITEType) {
32  return os << "ite";
33  }
34  inline std::ostream& operator<<(std::ostream& os, QuantifierType type) {
35  switch (type) {
36  case QuantifierType::EXISTS: return os << "exists";
37  case QuantifierType::FORALL: return os << "forall";
38  }
39  }
40  inline std::ostream& operator<<(std::ostream& os, UnaryType type) {
41  switch (type) {
42  case UnaryType::NOT: return os << "not";
43  }
44  }
45  inline std::ostream& operator<<(std::ostream& os, BinaryType type) {
46  switch (type) {
47  }
48  }
49  inline std::ostream& operator<<(std::ostream& os, NaryType type) {
50  switch (type) {
51  case NaryType::AND: return os << "and";
52  case NaryType::OR: return os << "or";
53  case NaryType::XOR: return os << "xor";
54  case NaryType::IFF: return os << "iff";
55  }
56  }
57 }
58 }
59 
60 namespace smtrat {
63 }
std::ostream & operator<<(std::ostream &os, const Expression &expr)
std::vector< Expression > Expressions
QuantifierType type(const std::pair< QuantifierType, std::vector< carl::Variable >> &p)
Definition: QEQuery.h:39
Class to create the formulas for axioms.
expression::Expressions Expressions
expression::Expression Expression