64#include "util/rational.h"
104#line 44 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/expr/expr_template.h"
109template <
bool ref_count>
119class TypeCheckingExceptionPrivate;
136 class SmtEnginePrivate;
154 friend class smt::SmtEnginePrivate;
165 const TypeCheckingExceptionPrivate* exc)
throw();
182 Expr getExpression() const throw();
189 void toStream(
std::ostream& out) const throw();
367 return std::vector<Expr>(begin(), end());
430 return !(*
this == it);
497 const
std::vector<
Expr>& replacements) const;
508 std::
string toString() const;
522 void toStream(
std::ostream& out,
int toDepth = -1,
bool types = false,
size_t dag = 1,
537 bool isVariable() const;
544 bool isConst() const;
562 const T& getConst() const;
610 typedef expr::ExprDag
dag;
623 void printAst(
std::ostream& out,
int indent = 0) const;
649 friend class smt::SmtEnginePrivate;
651 friend class NodeManager;
653 friend class expr::pickle::Pickler;
654 friend class prop::TheoryProxy;
655 friend class expr::ExportPrivate;
686 static const int s_iosIndex;
692 static const int s_defaultPrintDepth = -1;
706 out.iword(s_iosIndex) = d_depth;
710 long& l = out.iword(s_iosIndex);
713 if(&Options::current() != NULL) {
714 l = options::defaultExprDepth();
722 return s_defaultPrintDepth;
728 static inline void setDepth(std::ostream& out,
long depth) {
729 out.iword(s_iosIndex) = depth;
744 inline Scope(std::ostream& out,
long depth) :
747 ExprSetDepth::setDepth(out, depth);
751 ExprSetDepth::setDepth(d_out, d_oldDepth);
771 static const int s_iosIndex;
785 out.iword(s_iosIndex) = d_printTypes;
789 return out.iword(s_iosIndex);
793 out.iword(s_iosIndex) = printTypes;
804 bool d_oldPrintTypes;
808 inline Scope(std::ostream& out,
bool printTypes) :
811 ExprPrintTypes::setPrintTypes(out, printTypes);
815 ExprPrintTypes::setPrintTypes(d_out, d_oldPrintTypes);
829 static const int s_iosIndex;
835 static const size_t s_defaultDag = 1;
846 explicit ExprDag(
bool dag) : d_dag(dag ? 1 : 0) {}
853 explicit ExprDag(
int dag) : d_dag(dag < 0 ? 0 : dag) {}
857 out.iword(s_iosIndex) =
static_cast<long>(d_dag) + 1;
860 static inline size_t getDag(std::ostream& out) {
861 long& l = out.iword(s_iosIndex);
865 if(&Options::current() != NULL) {
866 l = options::defaultDagThresh() + 1;
874 return s_defaultDag + 1;
877 return static_cast<size_t>(l - 1);
880 static inline void setDag(std::ostream& out,
size_t dag) {
882 out.iword(s_iosIndex) =
static_cast<long>(dag) + 1;
897 inline Scope(std::ostream& out,
size_t dag) :
899 d_oldDag(
ExprDag::getDag(out)) {
900 ExprDag::setDag(out, dag);
904 ExprDag::setDag(d_out, d_oldDag);
918 static const int s_iosIndex;
925 static const int s_defaultOutputLanguage = language::output::LANG_AUTO;
940 out.iword(s_iosIndex) = int(d_language) + 1;
944 long& l = out.iword(s_iosIndex);
948 if(&Options::current() != NULL) {
949 l = options::outputLanguage() + 1;
951 if(l <= 0 || l > language::output::LANG_MAX) {
965 out.iword(s_iosIndex) = int(l) + 1;
983 ExprSetLanguage::setLanguage(out, language);
987 ExprSetLanguage::setLanguage(d_out, d_oldLanguage);
997#line 266 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1000#line 276 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1003#line 287 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1006#line 309 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1009#line 315 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1012#line 343 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/builtin/kinds"
1015#line 21 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/booleans/kinds"
1016template <>
bool const & Expr::getConst< bool >()
const;
1018#line 29 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/arith/kinds"
1021#line 48 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/arith/kinds"
1024#line 61 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/arith/kinds"
1027#line 15 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1030#line 24 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1033#line 77 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1036#line 83 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1039#line 89 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1042#line 95 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1045#line 101 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1048#line 107 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1051#line 113 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1054#line 127 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/bv/kinds"
1057#line 35 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/arrays/kinds"
1060#line 45 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1063#line 77 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1066#line 108 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1069#line 116 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1072#line 124 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1075#line 144 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1078#line 152 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/datatypes/kinds"
1081#line 18 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/sets/kinds"
1084#line 62 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/strings/kinds"
1087#line 68 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/theory/strings/kinds"
1091#line 938 "/opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_math_cvc4/cvc4/work/cvc4-1.4/builds/powerpc-apple-darwin10.0.0d2/production/../../../src/expr/expr_template.h"
1154 return (
size_t) e.
getId();
Representation of abstract values.
Representation of a constant array (an array in which the element is the same for all indices)
A class representing a type ascription.
[[ Add one-line brief description here ]]
A hash function for Boolean.
[[ Add one-line brief description here ]]
A class used to parameterize a type ascription.
A class to represent a chained, built-in operator.
The representation of an inductive datatype.
Exception thrown in case of failure to export.
ExportUnsupportedException(const char *msg)
ExportUnsupportedException()
Iterator type for the children of an Expr.
const_iterator operator++(int)
const_iterator & operator++()
const_iterator(const const_iterator &it)
const_iterator & operator=(const const_iterator &it)
bool operator!=(const const_iterator &it) const
bool operator==(const const_iterator &it) const
Class encapsulating CVC4 expressions and methods for constructing new expressions.
Type getType(bool check=false) const
Get the type for this Expr and optionally do type checking.
Expr notExpr() const
Returns the Boolean negation of this Expr.
Expr(const Expr &e)
Copy constructor, makes a copy of a given expression.
bool operator==(const Expr &e) const
Syntactic comparison operator.
Expr()
Default constructor, makes a null expression.
Kind getKind() const
Returns the kind of the expression (AND, PLUS ...).
Expr operator[](unsigned i) const
Returns the i'th child of this expression.
bool operator>=(const Expr &e) const
Order comparison operator.
bool operator<(const Expr &e) const
Order comparison operator.
Expr & operator=(const Expr &e)
Assignment operator, makes a copy of the given expression.
Expr impExpr(const Expr &e) const
Returns the implication of this expression and the given expression.
unsigned long getId() const
Get the ID of this expression (used for the comparison operators).
bool operator<=(const Expr &e) const
Order comparison operator.
Expr getOperator() const
Get the operator of this expression.
bool operator>(const Expr &e) const
Order comparison operator.
bool hasOperator() const
Check if this is an expression that has an operator.
Expr xorExpr(const Expr &e) const
Returns the exclusive disjunction of this expression and the given expression.
size_t getNumChildren() const
Returns the number of children of this expression.
Expr iffExpr(const Expr &e) const
Returns the Boolean equivalence of this expression and the given expression.
const_iterator begin() const
Returns an iterator to the first child of this Expr.
const_iterator end() const
Returns an iterator to one-off-the-last child of this Expr.
Expr iteExpr(const Expr &then_e, const Expr &else_e) const
Returns the if-then-else expression with this expression as the Boolean condition and the given expre...
Expr andExpr(const Expr &e) const
Returns the conjunction of this expression and the given expression.
bool operator!=(const Expr &e) const
Syntactic disequality operator.
std::vector< Expr > getChildren() const
Returns the children of this Expr.
Expr orExpr(const Expr &e) const
Returns the disjunction of this expression and the given expression.
A multi-precision rational constant.
Exception thrown in the case of type-checking errors.
TypeCheckingException(const Expr &expr, std::string message)
~TypeCheckingException()
Destructor.
TypeCheckingException(const TypeCheckingException &t)
Copy constructor.
TypeCheckingException(ExprManager *em, const TypeCheckingExceptionPrivate *exc)
Class encapsulating CVC4 expression types.
Set the dag state on the output stream for the current stack scope.
Scope(std::ostream &out, size_t dag)
IOStream manipulator to print expressions as a dag (or not).
static size_t getDag(std::ostream &out)
void applyDag(std::ostream &out)
static void setDag(std::ostream &out, size_t dag)
ExprDag(bool dag)
Construct a ExprDag with the given setting (dagification on or off).
ExprDag(int dag)
Construct a ExprDag with the given setting (letify only common subexpressions that appear more than '...
Set the print-types state on the output stream for the current stack scope.
Scope(std::ostream &out, bool printTypes)
IOStream manipulator to print type ascriptions or not.
ExprPrintTypes(bool printTypes)
Construct a ExprPrintTypes with the given setting.
static void setPrintTypes(std::ostream &out, bool printTypes)
static bool getPrintTypes(std::ostream &out)
void applyPrintTypes(std::ostream &out)
Set the expression depth on the output stream for the current stack scope.
Scope(std::ostream &out, long depth)
IOStream manipulator to set the maximum depth of Exprs when pretty-printing.
void applyDepth(std::ostream &out)
static void setDepth(std::ostream &out, long depth)
ExprSetDepth(long depth)
Construct a ExprSetDepth with the given depth.
static long getDepth(std::ostream &out)
Set a language on the output stream for the current stack scope.
Scope(std::ostream &out, OutputLanguage language)
IOStream manipulator to set the output language for Exprs.
void applyLanguage(std::ostream &out)
static OutputLanguage getLanguage(std::ostream &out)
static void setLanguage(std::ostream &out, OutputLanguage l)
ExprSetLanguage(OutputLanguage l)
Construct a ExprSetLanguage with the given setting.
Macros that should be defined everywhere during the building of the libraries and driver binary,...
A class representing a Datatype definition.
[[ Add one-line brief description here ]]
[[ Add one-line brief description here ]]
CVC4's exception base class and some associated utilities.
[[ Add one-line brief description here ]]
Definition of input and output languages.
::CVC4::UninterpretedConstant const & Expr::getConst< ::CVC4::UninterpretedConstant >() const
::CVC4::BitVectorRotateLeft const & Expr::getConst< ::CVC4::BitVectorRotateLeft >() const
::CVC4::SubrangeBounds const & Expr::getConst< ::CVC4::SubrangeBounds >() const
::CVC4::AbstractValue const & Expr::getConst< ::CVC4::AbstractValue >() const
::CVC4::AscriptionType const & Expr::getConst< ::CVC4::AscriptionType >() const
::CVC4::Record const & Expr::getConst< ::CVC4::Record >() const
::CVC4::BitVector const & Expr::getConst< ::CVC4::BitVector >() const
::CVC4::Divisible const & Expr::getConst< ::CVC4::Divisible >() const
::CVC4::Rational const & Expr::getConst< ::CVC4::Rational >() const
::CVC4::Kind const & Expr::getConst< ::CVC4::Kind >() const
::CVC4::EmptySet const & Expr::getConst< ::CVC4::EmptySet >() const
::CVC4::RecordUpdate const & Expr::getConst< ::CVC4::RecordUpdate >() const
::CVC4::BitVectorRotateRight const & Expr::getConst< ::CVC4::BitVectorRotateRight >() const
::CVC4::BitVectorSize const & Expr::getConst< ::CVC4::BitVectorSize >() const
::CVC4::Predicate const & Expr::getConst< ::CVC4::Predicate >() const
::CVC4::TypeConstant const & Expr::getConst< ::CVC4::TypeConstant >() const
::CVC4::BitVectorSignExtend const & Expr::getConst< ::CVC4::BitVectorSignExtend >() const
::CVC4::String const & Expr::getConst< ::CVC4::String >() const
::CVC4::BitVectorRepeat const & Expr::getConst< ::CVC4::BitVectorRepeat >() const
::CVC4::BitVectorBitOf const & Expr::getConst< ::CVC4::BitVectorBitOf >() const
::CVC4::BitVectorZeroExtend const & Expr::getConst< ::CVC4::BitVectorZeroExtend >() const
::CVC4::Chain const & Expr::getConst< ::CVC4::Chain >() const
::CVC4::ArrayStoreAll const & Expr::getConst< ::CVC4::ArrayStoreAll >() const
::CVC4::IntToBitVector const & Expr::getConst< ::CVC4::IntToBitVector >() const
::CVC4::RegExp const & Expr::getConst< ::CVC4::RegExp >() const
std::ostream & operator<<(std::ostream &out, const TypeCheckingException &e)
::CVC4::Datatype const & Expr::getConst< ::CVC4::Datatype >() const
::CVC4::TupleSelect const & Expr::getConst< ::CVC4::TupleSelect >() const
::CVC4::BitVectorExtract const & Expr::getConst< ::CVC4::BitVectorExtract >() const
::CVC4::TupleUpdate const & Expr::getConst< ::CVC4::TupleUpdate >() const
TypeConstant
The enumeration for the built-in atomic types.
::CVC4::RecordSelect const & Expr::getConst< ::CVC4::RecordSelect >() const
Representation of predicates for predicate subtyping.
A class representing a Record definition.
[[ Add one-line brief description here ]]
The structure representing the extraction of one Boolean bit.
The structure representing the divisibility-by-k predicate.
Representation of subrange bounds.
Representation of constants of uninterpreted sorts.