A Z3 expression is used to represent formulas and terms. For Z3, a formula is any expression of sort Boolean. Every expression has a sort. More...
#include <z3++.h>
Data Structures | |
| class | iterator |
Public Member Functions | |
| expr (context &c) | |
| expr (context &c, Z3_ast n) | |
| sort | get_sort () const |
| Return the sort of this expression. | |
| bool | is_bool () const |
| Return true if this is a Boolean expression. | |
| bool | is_int () const |
| Return true if this is an integer expression. | |
| bool | is_real () const |
| Return true if this is a real expression. | |
| bool | is_complex () const |
| Return true if this expression is Complex. | |
| bool | is_arith () const |
| Return true if this is an Integer, Real, or Complex expression. | |
| bool | is_bv () const |
| Return true if this is a Bit-vector expression. | |
| bool | is_array () const |
| Return true if this is a Array expression. | |
| bool | is_datatype () const |
| Return true if this is a Datatype expression. | |
| bool | is_relation () const |
| Return true if this is a Relation expression. | |
| bool | is_seq () const |
| Return true if this is a sequence expression. | |
| bool | is_re () const |
| Return true if this is a regular expression. | |
| bool | is_finite_field () const |
| Return true if this is a Finite-domain expression. | |
| bool | is_finite_domain () const |
| bool | is_fpa () const |
| Return true if this is a FloatingPoint expression. . | |
| bool | is_numeral () const |
| Return true if this expression is a numeral. Specialized functions also return representations for the numerals as small integers, 64 bit integers or rational or decimal strings. | |
| bool | is_numeral_i64 (int64_t &i) const |
| bool | is_numeral_u64 (uint64_t &i) const |
| bool | is_numeral_i (int &i) const |
| bool | is_numeral_u (unsigned &i) const |
| bool | is_numeral (std::string &s) const |
| bool | is_numeral (std::string &s, unsigned precision) const |
| bool | is_numeral (double &d) const |
| bool | as_binary (std::string &s) const |
| double | as_double () const |
| uint64_t | as_uint64 () const |
| int64_t | as_int64 () const |
| bool | is_app () const |
| Return true if this expression is an application. | |
| bool | is_const () const |
| Return true if this expression is a constant (i.e., an application with 0 arguments). | |
| bool | is_quantifier () const |
| Return true if this expression is a quantifier. | |
| bool | is_forall () const |
| Return true if this expression is a universal quantifier. | |
| bool | is_exists () const |
| Return true if this expression is an existential quantifier. | |
| bool | is_lambda () const |
| Return true if this expression is a lambda expression. | |
| bool | is_var () const |
| Return true if this expression is a variable. | |
| bool | is_algebraic () const |
| Return true if expression is an algebraic number. | |
| bool | is_well_sorted () const |
| Return true if this expression is well sorted (aka type correct). | |
| expr | mk_is_inf () const |
| Return Boolean expression to test for whether an FP expression is inf. | |
| expr | mk_is_nan () const |
| Return Boolean expression to test for whether an FP expression is a NaN. | |
| expr | mk_is_normal () const |
| Return Boolean expression to test for whether an FP expression is a normal. | |
| expr | mk_is_subnormal () const |
| Return Boolean expression to test for whether an FP expression is a subnormal. | |
| expr | mk_is_zero () const |
| Return Boolean expression to test for whether an FP expression is a zero. | |
| expr | mk_to_ieee_bv () const |
| Convert this fpa into an IEEE BV. | |
| expr | mk_from_ieee_bv (sort const &s) const |
| Convert this IEEE BV into a fpa. | |
| std::string | get_decimal_string (int precision) const |
| Return string representation of numeral or algebraic number This method assumes the expression is numeral or algebraic. | |
| expr | algebraic_lower (unsigned precision) const |
| expr | algebraic_upper (unsigned precision) const |
| expr_vector | algebraic_poly () const |
| Return coefficients for p of an algebraic number (root-obj p i). | |
| unsigned | algebraic_i () const |
| Return i of an algebraic number (root-obj p i). | |
| unsigned | id () const |
| retrieve unique identifier for expression. | |
| int | get_numeral_int () const |
| Return int value of numeral, throw if result cannot fit in machine int. | |
| unsigned | get_numeral_uint () const |
| Return uint value of numeral, throw if result cannot fit in machine uint. | |
| int64_t | get_numeral_int64 () const |
Return int64_t value of numeral, throw if result cannot fit in int64_t. | |
| uint64_t | get_numeral_uint64 () const |
Return uint64_t value of numeral, throw if result cannot fit in uint64_t. | |
| Z3_lbool | bool_value () const |
| expr | numerator () const |
| expr | denominator () const |
| bool | is_string_value () const |
Return true if this expression is a string literal. The string can be accessed using get_string() and get_escaped_string(). | |
| std::string | get_string () const |
| for a string value expression return an escaped string value. | |
| std::u32string | get_u32string () const |
| for a string value expression return an unespaced string value. | |
| operator Z3_app () const | |
| func_decl | decl () const |
| Return the declaration associated with this application. This method assumes the expression is an application. | |
| unsigned | num_args () const |
| Return the number of arguments in this application. This method assumes the expression is an application. | |
| expr | arg (unsigned i) const |
| Return the i-th argument of this application. This method assumes the expression is an application. | |
| expr_vector | args () const |
| Return a vector of all the arguments of this application. This method assumes the expression is an application. | |
| expr | update (expr_vector const &args) const |
| Update the arguments of this application. Return a new expression with the same function declaration and updated arguments. The number of new arguments must match the current number of arguments. | |
| expr | update_field (func_decl const &field_access, expr const &new_value) const |
| Update a datatype field. Return a new datatype expression with the specified field updated to the new value. The remaining fields are unchanged. | |
| expr | body () const |
| Return the 'body' of this quantifier. | |
| bool | is_true () const |
| bool | is_false () const |
| bool | is_not () const |
| bool | is_and () const |
| bool | is_or () const |
| bool | is_xor () const |
| bool | is_implies () const |
| bool | is_eq () const |
| bool | is_ite () const |
| bool | is_distinct () const |
| expr | rotate_left (unsigned i) const |
| expr | rotate_right (unsigned i) const |
| expr | ext_rotate_left (expr const &n) const |
| expr | ext_rotate_right (expr const &n) const |
| expr | repeat (unsigned i) const |
| expr | extract (unsigned hi, unsigned lo) const |
| expr | bit2bool (unsigned i) const |
| unsigned | lo () const |
| unsigned | hi () const |
| expr | extract (expr const &offset, expr const &length) const |
| sequence and regular expression operations. | |
| expr | replace (expr const &src, expr const &dst) const |
| expr | unit () const |
| expr | contains (expr const &s) const |
| expr | at (expr const &index) const |
| expr | nth (expr const &index) const |
| expr | length () const |
| expr | power (expr const &n) const |
| expr | stoi () const |
| expr | itos () const |
| expr | ubvtos () const |
| expr | sbvtos () const |
| expr | char_to_int () const |
| expr | char_to_bv () const |
| expr | char_from_bv () const |
| expr | is_digit () const |
| expr | loop (unsigned lo) |
| create a looping regular expression. | |
| expr | loop (unsigned lo, unsigned hi) |
| expr | operator[] (expr const &index) const |
| expr | operator[] (expr_vector const &index) const |
| expr | simplify () const |
| Return a simplified version of this expression. | |
| expr | simplify (params const &p) const |
Return a simplified version of this expression. The parameter p is a set of parameters for the Z3 simplifier. | |
| expr | substitute (expr_vector const &src, expr_vector const &dst) |
| Apply substitution. Replace src expressions by dst. | |
| expr | substitute (expr_vector const &dst) |
| Apply substitution. Replace bound variables by expressions. | |
| expr | substitute (func_decl_vector const &funs, expr_vector const &bodies) |
| Apply function substitution by macro definitions. | |
| iterator | begin () |
| iterator | end () |
| Public Member Functions inherited from ast | |
| ast (context &c) | |
| ast (context &c, Z3_ast n) | |
| ast (ast const &s) | |
| ~ast () override | |
| operator Z3_ast () const | |
| operator bool () const | |
| ast & | operator= (ast const &s) |
| Z3_ast_kind | kind () const |
| unsigned | hash () const |
| std::string | to_string () const |
| Public Member Functions inherited from object | |
| object (context &c) | |
| virtual | ~object ()=default |
| context & | ctx () const |
| Z3_error_code | check_error () const |
Friends | |
| expr | operator! (expr const &a) |
| Return an expression representing not(a). | |
| expr | operator&& (expr const &a, expr const &b) |
| Return an expression representing a and b. | |
| expr | operator&& (expr const &a, bool b) |
Return an expression representing a and b. The C++ Boolean value b is automatically converted into a Z3 Boolean constant. | |
| expr | operator&& (bool a, expr const &b) |
Return an expression representing a and b. The C++ Boolean value a is automatically converted into a Z3 Boolean constant. | |
| expr | operator|| (expr const &a, expr const &b) |
| Return an expression representing a or b. | |
| expr | operator|| (expr const &a, bool b) |
Return an expression representing a or b. The C++ Boolean value b is automatically converted into a Z3 Boolean constant. | |
| expr | operator|| (bool a, expr const &b) |
Return an expression representing a or b. The C++ Boolean value a is automatically converted into a Z3 Boolean constant. | |
| expr | implies (expr const &a, expr const &b) |
| expr | implies (expr const &a, bool b) |
| expr | implies (bool a, expr const &b) |
| expr | mk_or (expr_vector const &args) |
| expr | mk_xor (expr_vector const &args) |
| expr | mk_and (expr_vector const &args) |
| expr | ite (expr const &c, expr const &t, expr const &e) |
| Create the if-then-else expression ite(c, t, e). | |
| expr | distinct (expr_vector const &args) |
| expr | concat (expr const &a, expr const &b) |
| expr | concat (expr_vector const &args) |
| expr | operator== (expr const &a, expr const &b) |
| expr | operator== (expr const &a, int b) |
| expr | operator== (int a, expr const &b) |
| expr | operator!= (expr const &a, expr const &b) |
| expr | operator!= (expr const &a, int b) |
| expr | operator!= (int a, expr const &b) |
| expr | operator+ (expr const &a, expr const &b) |
| expr | operator+ (expr const &a, int b) |
| expr | operator+ (int a, expr const &b) |
| expr | sum (expr_vector const &args) |
| expr | operator* (expr const &a, expr const &b) |
| expr | operator* (expr const &a, int b) |
| expr | operator* (int a, expr const &b) |
| expr | pw (expr const &a, expr const &b) |
| expr | pw (expr const &a, int b) |
| expr | pw (int a, expr const &b) |
| expr | mod (expr const &a, expr const &b) |
| expr | mod (expr const &a, int b) |
| expr | mod (int a, expr const &b) |
| expr | rem (expr const &a, expr const &b) |
| expr | rem (expr const &a, int b) |
| expr | rem (int a, expr const &b) |
| expr | is_int (expr const &e) |
| expr | operator/ (expr const &a, expr const &b) |
| expr | operator/ (expr const &a, int b) |
| expr | operator/ (int a, expr const &b) |
| expr | operator- (expr const &a) |
| expr | operator- (expr const &a, expr const &b) |
| expr | operator- (expr const &a, int b) |
| expr | operator- (int a, expr const &b) |
| expr | operator<= (expr const &a, expr const &b) |
| expr | operator<= (expr const &a, int b) |
| expr | operator<= (int a, expr const &b) |
| expr | operator>= (expr const &a, expr const &b) |
| expr | operator>= (expr const &a, int b) |
| expr | operator>= (int a, expr const &b) |
| expr | operator< (expr const &a, expr const &b) |
| expr | operator< (expr const &a, int b) |
| expr | operator< (int a, expr const &b) |
| expr | operator> (expr const &a, expr const &b) |
| expr | operator> (expr const &a, int b) |
| expr | operator> (int a, expr const &b) |
| expr | pble (expr_vector const &es, int const *coeffs, int bound) |
| expr | pbge (expr_vector const &es, int const *coeffs, int bound) |
| expr | pbeq (expr_vector const &es, int const *coeffs, int bound) |
| expr | atmost (expr_vector const &es, unsigned bound) |
| expr | atleast (expr_vector const &es, unsigned bound) |
| expr | operator& (expr const &a, expr const &b) |
| expr | operator& (expr const &a, int b) |
| expr | operator& (int a, expr const &b) |
| expr | operator^ (expr const &a, expr const &b) |
| expr | operator^ (expr const &a, int b) |
| expr | operator^ (int a, expr const &b) |
| expr | operator| (expr const &a, expr const &b) |
| expr | operator| (expr const &a, int b) |
| expr | operator| (int a, expr const &b) |
| expr | nand (expr const &a, expr const &b) |
| expr | nor (expr const &a, expr const &b) |
| expr | xnor (expr const &a, expr const &b) |
| expr | min (expr const &a, expr const &b) |
| expr | max (expr const &a, expr const &b) |
| expr | bv2int (expr const &a, bool is_signed) |
| bit-vector and integer conversions. | |
| expr | int2bv (unsigned n, expr const &a) |
| expr | bvadd_no_overflow (expr const &a, expr const &b, bool is_signed) |
| bit-vector overflow/underflow checks | |
| expr | bvadd_no_underflow (expr const &a, expr const &b) |
| expr | bvsub_no_overflow (expr const &a, expr const &b) |
| expr | bvsub_no_underflow (expr const &a, expr const &b, bool is_signed) |
| expr | bvsdiv_no_overflow (expr const &a, expr const &b) |
| expr | bvneg_no_overflow (expr const &a) |
| expr | bvmul_no_overflow (expr const &a, expr const &b, bool is_signed) |
| expr | bvmul_no_underflow (expr const &a, expr const &b) |
| expr | bvredor (expr const &a) |
| expr | bvredand (expr const &a) |
| expr | abs (expr const &a) |
| expr | sqrt (expr const &a, expr const &rm) |
| expr | fp_eq (expr const &a, expr const &b) |
| expr | operator~ (expr const &a) |
| expr | fma (expr const &a, expr const &b, expr const &c, expr const &rm) |
| FloatingPoint fused multiply-add. | |
| expr | fpa_fp (expr const &sgn, expr const &exp, expr const &sig) |
| Create an expression of FloatingPoint sort from three bit-vector expressions. | |
| expr | fpa_to_sbv (expr const &t, unsigned sz) |
| Conversion of a floating-point term into a signed bit-vector. | |
| expr | fpa_to_ubv (expr const &t, unsigned sz) |
| Conversion of a floating-point term into an unsigned bit-vector. | |
| expr | sbv_to_fpa (expr const &t, sort s) |
| Conversion of a signed bit-vector term into a floating-point. | |
| expr | ubv_to_fpa (expr const &t, sort s) |
| Conversion of an unsigned bit-vector term into a floating-point. | |
| expr | fpa_to_fpa (expr const &t, sort s) |
| Conversion of a floating-point term into another floating-point. | |
| expr | round_fpa_to_closest_integer (expr const &t) |
| Round a floating-point term into its closest integer. | |
| expr | range (expr const &lo, expr const &hi) |
Additional Inherited Members | |
| Protected Attributes inherited from ast | |
| Z3_ast | m_ast |
| Protected Attributes inherited from object | |
| context * | m_ctx |
A Z3 expression is used to represent formulas and terms. For Z3, a formula is any expression of sort Boolean. Every expression has a sort.
|
inline |
Definition at line 1005 of file z3++.h.
Referenced by abs, algebraic_lower(), algebraic_upper(), arg(), func_entry::arg(), z3::array_default(), z3::array_ext(), z3::as_array(), goal::as_expr(), at(), atleast, atmost, bit2bool(), body(), context::bool_val(), bv2int, context::bv_val(), context::bv_val(), context::bv_val(), context::bv_val(), context::bv_val(), context::bv_val(), bvadd_no_overflow, bvadd_no_underflow, bvmul_no_overflow, bvmul_no_underflow, bvneg_no_overflow, bvredand, bvredor, bvsdiv_no_overflow, bvsub_no_overflow, bvsub_no_underflow, char_from_bv(), char_to_bv(), char_to_int(), z3::complex(), concat, concat, solver::congruence_explain(), solver::congruence_next(), solver::congruence_root(), context::constant(), contains(), denominator(), distinct, func_interp::else_value(), z3::empty(), model::eval(), z3::exists(), z3::exists(), z3::exists(), z3::exists(), z3::exists(), ext_rotate_left(), ext_rotate_right(), extract(), extract(), z3::finite_set_empty(), fma, z3::foldl(), z3::foldli(), z3::forall(), z3::forall(), z3::forall(), z3::forall(), z3::forall(), fp_eq, fpa_fp, context::fpa_inf(), context::fpa_nan(), context::fpa_rounding_mode(), fpa_to_fpa, fpa_to_sbv, fpa_to_ubv, context::fpa_val(), context::fpa_val(), fixedpoint::get_answer(), model::get_const_interp(), fixedpoint::get_cover_delta(), parameter::get_expr(), z3::imag_part(), implies, implies, implies, z3::indexof(), int2bv, context::int_val(), context::int_val(), context::int_val(), context::int_val(), context::int_val(), is_digit(), is_int, ite, expr::iterator::iterator(), itos(), z3::lambda(), z3::lambda(), z3::lambda(), z3::lambda(), z3::lambda(), z3::last_indexof(), length(), loop(), loop(), optimize::lower(), z3::map(), z3::mapi(), max, min, mk_and, mk_from_ieee_bv(), mk_is_inf(), mk_is_nan(), mk_is_normal(), mk_is_subnormal(), mk_is_zero(), mk_or, mk_to_ieee_bv(), mk_xor, mod, mod, mod, nand, nor, nth(), context::num_val(), numerator(), operator!, operator!=, operator!=, operator!=, operator&, operator&, operator&, operator&&, operator&&, operator&&, cast_ast< expr >::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), func_decl::operator()(), expr::iterator::operator*(), operator*, operator*, operator*, operator+, operator+, operator+, operator-, operator-, operator-, operator-, operator/, operator/, operator/, operator<, operator<, operator<, operator<=, operator<=, operator<=, operator==, operator==, operator==, operator>, operator>, operator>, operator>=, operator>=, operator>=, operator[](), operator[](), goal::operator[](), operator^, operator^, operator^, operator|, operator|, operator|, operator||, operator||, operator||, operator~, pbeq, pbge, pble, power(), z3::prefixof(), solver::proof(), pw, pw, pw, z3::qe_lite(), z3::qe_model_project(), z3::qe_model_project_skolem(), z3::qe_model_project_with_witness(), range, z3::re_diff(), z3::re_empty(), z3::re_full(), z3::re_intersect(), z3::real_part(), context::real_val(), context::real_val(), context::real_val(), context::real_val(), context::real_val(), context::real_val(), rem, rem, rem, repeat(), replace(), rotate_left(), rotate_right(), round_fpa_to_closest_integer, sbv_to_fpa, sbvtos(), z3::select(), z3::select(), z3::set_intersect(), z3::set_union(), simplify(), simplify(), sqrt, stoi(), z3::store(), z3::store(), context::string_val(), context::string_val(), context::string_val(), context::string_val(), substitute(), substitute(), substitute(), z3::suffixof(), sum, z3::to_expr(), z3::to_real(), ubv_to_fpa, ubvtos(), unit(), update(), update_field(), optimize::upper(), func_entry::value(), context::variable(), and xnor.
|
inline |
|
inline |
|
inline |
Retrieve lower and upper bounds for algebraic numerals based on a decimal precision
Definition at line 1215 of file z3++.h.
|
inline |
Return coefficients for p of an algebraic number (root-obj p i).
Definition at line 1232 of file z3++.h.
|
inline |
Definition at line 1222 of file z3++.h.
|
inline |
Return the i-th argument of this application. This method assumes the expression is an application.
Definition at line 1403 of file z3++.h.
Referenced by AstRef::__bool__(), args(), and expr::iterator::operator*().
|
inline |
Return a vector of all the arguments of this application. This method assumes the expression is an application.
Definition at line 1410 of file z3++.h.
Referenced by concat, distinct, mk_and, mk_or, mk_xor, operator!=, operator&&, operator*, operator+, operator-, operator||, sum, and update().
|
inline |
Definition at line 1084 of file z3++.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return the 'body' of this quantifier.
Definition at line 1444 of file z3++.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return the declaration associated with this application. This method assumes the expression is an application.
Definition at line 1388 of file z3++.h.
Referenced by hi(), is_and(), is_distinct(), is_eq(), is_false(), is_implies(), is_ite(), is_not(), is_or(), is_true(), is_xor(), and lo().
|
inline |
Definition at line 1340 of file z3++.h.
Definition at line 1623 of file z3++.h.
Definition at line 1624 of file z3++.h.
sequence and regular expression operations.
Definition at line 1685 of file z3++.h.
|
inline |
|
inline |
Return string representation of numeral or algebraic number This method assumes the expression is numeral or algebraic.
Definition at line 1207 of file z3++.h.
|
inline |
Return int value of numeral, throw if result cannot fit in machine int.
It only makes sense to use this function if the caller can ensure that the result is an integer or if exceptions are enabled. If exceptions are disabled, then use the is_numeral_i function.
Definition at line 1264 of file z3++.h.
|
inline |
Return int64_t value of numeral, throw if result cannot fit in int64_t.
Definition at line 1300 of file z3++.h.
|
inline |
Return uint value of numeral, throw if result cannot fit in machine uint.
It only makes sense to use this function if the caller can ensure that the result is an integer or if exceptions are enabled. If exceptions are disabled, then use the is_numeral_u function.
Definition at line 1283 of file z3++.h.
|
inline |
Return uint64_t value of numeral, throw if result cannot fit in uint64_t.
Definition at line 1317 of file z3++.h.
|
inline |
Return the sort of this expression.
Definition at line 1011 of file z3++.h.
Referenced by z3::ashr(), z3::ashr(), concat, concat, is_arith(), is_array(), is_bool(), is_bv(), is_complex(), is_datatype(), is_finite_domain(), is_finite_field(), is_fpa(), is_int(), is_re(), is_real(), is_relation(), is_seq(), z3::lshr(), z3::lshr(), mod, mod, operator!=, operator!=, operator&, operator&, operator*, operator*, operator+, operator+, operator-, operator-, operator/, operator/, operator<, operator<, operator<=, operator<=, operator==, operator==, operator>, operator>, operator>=, operator>=, operator^, operator^, operator|, operator|, pw, pw, rem, rem, z3::sdiv(), z3::sdiv(), z3::select(), optimize::set_initial_value(), solver::set_initial_value(), z3::sge(), z3::sge(), z3::sgt(), z3::sgt(), z3::shl(), z3::shl(), z3::sle(), z3::sle(), z3::slt(), z3::slt(), z3::smod(), z3::smod(), z3::srem(), z3::srem(), z3::store(), z3::store(), z3::store(), z3::udiv(), z3::udiv(), z3::uge(), z3::uge(), z3::ugt(), z3::ugt(), z3::ule(), z3::ule(), z3::ult(), z3::ult(), z3::urem(), and z3::urem().
|
inline |
for a string value expression return an escaped string value.
Definition at line 1359 of file z3++.h.
|
inline |
for a string value expression return an unespaced string value.
Definition at line 1371 of file z3++.h.
|
inline |
Definition at line 1638 of file z3++.h.
|
inline |
|
inline |
Return true if expression is an algebraic number.
Definition at line 1124 of file z3++.h.
Referenced by algebraic_i(), algebraic_lower(), algebraic_poly(), algebraic_upper(), and get_decimal_string().
|
inline |
|
inline |
Return true if this expression is an application.
Definition at line 1094 of file z3++.h.
Referenced by end(), hi(), is_and(), is_const(), is_distinct(), is_eq(), is_false(), is_implies(), is_ite(), is_not(), is_or(), is_true(), is_xor(), lo(), and operator Z3_app().
|
inline |
Return true if this is an Integer, Real, or Complex expression.
Definition at line 1030 of file z3++.h.
Referenced by max, min, operator!=, operator!=, operator*, operator+, operator-, operator-, operator/, operator<, operator<=, operator==, operator==, operator>, and operator>=.
|
inline |
Return true if this is a Array expression.
Definition at line 1038 of file z3++.h.
Referenced by operator[]().
|
inline |
Return true if this is a Boolean expression.
Definition at line 1016 of file z3++.h.
Referenced by optimize::add(), optimize::add(), optimize::add(), solver::add(), solver::add(), optimize::add_soft(), optimize::add_soft(), implies, ite, nand, nor, operator!, operator&, operator&&, operator^, operator|, operator||, and xnor.
|
inline |
Return true if this is a Bit-vector expression.
Definition at line 1034 of file z3++.h.
Referenced by bvredand, bvredor, fpa_fp, max, min, mk_from_ieee_bv(), mod, operator!=, operator!=, operator*, operator+, operator-, operator-, operator/, operator<, operator<=, operator==, operator==, operator>, operator>=, sbv_to_fpa, and ubv_to_fpa.
|
inline |
|
inline |
Return true if this expression is a constant (i.e., an application with 0 arguments).
Definition at line 1098 of file z3++.h.
Referenced by solver::add().
|
inline |
Return true if this is a Datatype expression.
Definition at line 1042 of file z3++.h.
Referenced by update_field().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return true if this is a Finite-domain expression.
Definition at line 1064 of file z3++.h.
Referenced by operator!=, operator!=, operator*, operator+, operator-, operator-, operator==, and operator==.
|
inline |
|
inline |
Return true if this is a FloatingPoint expression. .
Definition at line 1069 of file z3++.h.
Referenced by fma, fp_eq, fpa_to_fpa, fpa_to_sbv, fpa_to_ubv, max, min, mk_is_inf(), mk_is_nan(), mk_is_normal(), mk_is_subnormal(), mk_is_zero(), mk_to_ieee_bv(), operator!=, operator!=, z3::operator!=(), z3::operator!=(), operator*, operator+, operator-, operator-, operator/, operator<, operator<=, operator==, operator==, z3::operator==(), z3::operator==(), operator>, operator>=, rem, round_fpa_to_closest_integer, and sqrt.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return true if this expression is a numeral. Specialized functions also return representations for the numerals as small integers, 64 bit integers or rational or decimal strings.
Definition at line 1076 of file z3++.h.
Referenced by as_binary(), as_double(), denominator(), get_decimal_string(), get_numeral_int64(), get_numeral_uint(), get_numeral_uint64(), and numerator().
|
inline |
Definition at line 1083 of file z3++.h.
Referenced by is_numeral().
|
inline |
Definition at line 1081 of file z3++.h.
Referenced by is_numeral().
|
inline |
Definition at line 1082 of file z3++.h.
Referenced by is_numeral().
|
inline |
Definition at line 1079 of file z3++.h.
Referenced by get_numeral_int().
|
inline |
Definition at line 1077 of file z3++.h.
Referenced by as_int64(), and get_numeral_int64().
|
inline |
Definition at line 1080 of file z3++.h.
Referenced by get_numeral_uint().
|
inline |
Definition at line 1078 of file z3++.h.
Referenced by as_uint64(), and get_numeral_uint64().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Return true if this is a sequence expression.
Definition at line 1050 of file z3++.h.
Referenced by operator+, and operator[]().
|
inline |
Return true if this expression is a string literal. The string can be accessed using get_string() and get_escaped_string().
Definition at line 1352 of file z3++.h.
Referenced by get_string(), and get_u32string().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 1637 of file z3++.h.
|
inline |
create a looping regular expression.
Definition at line 1774 of file z3++.h.
|
inline |
Definition at line 1779 of file z3++.h.
Convert this IEEE BV into a fpa.
Definition at line 1194 of file z3++.h.
|
inline |
Return Boolean expression to test for whether an FP expression is inf.
Definition at line 1134 of file z3++.h.
|
inline |
Return Boolean expression to test for whether an FP expression is a NaN.
Definition at line 1144 of file z3++.h.
|
inline |
Return Boolean expression to test for whether an FP expression is a normal.
Definition at line 1154 of file z3++.h.
|
inline |
Return Boolean expression to test for whether an FP expression is a subnormal.
Definition at line 1164 of file z3++.h.
|
inline |
Return Boolean expression to test for whether an FP expression is a zero.
Definition at line 1174 of file z3++.h.
|
inline |
Convert this fpa into an IEEE BV.
Definition at line 1184 of file z3++.h.
Definition at line 1712 of file z3++.h.
Referenced by operator[]().
|
inline |
Return the number of arguments in this application. This method assumes the expression is an application.
Definition at line 1395 of file z3++.h.
Referenced by AstRef::__bool__(), args(), end(), and is_const().
|
inline |
Definition at line 1332 of file z3++.h.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Apply substitution. Replace bound variables by expressions.
Definition at line 4737 of file z3++.h.
|
inline |
Apply substitution. Replace src expressions by dst.
Definition at line 4724 of file z3++.h.
|
inline |
Apply function substitution by macro definitions.
Definition at line 4747 of file z3++.h.
|
inline |
|
inline |
|
inline |
Update the arguments of this application. Return a new expression with the same function declaration and updated arguments. The number of new arguments must match the current number of arguments.
Definition at line 4763 of file z3++.h.
Update a datatype field. Return a new datatype expression with the specified field updated to the new value. The remaining fields are unchanged.
| field_access | The accessor function declaration for the field to update |
| new_value | The new value for the field |
Definition at line 4773 of file z3++.h.
Definition at line 2249 of file z3++.h.
Referenced by abs.
|
friend |
Definition at line 2705 of file z3++.h.
Referenced by atleast.
|
friend |
Definition at line 2697 of file z3++.h.
Referenced by atmost.
bit-vector overflow/underflow checks
Definition at line 2501 of file z3++.h.
Referenced by bvadd_no_overflow.
Definition at line 2504 of file z3++.h.
Referenced by bvadd_no_underflow.
Definition at line 2519 of file z3++.h.
Referenced by bvmul_no_overflow.
Definition at line 2522 of file z3++.h.
Referenced by bvmul_no_underflow.
Definition at line 2516 of file z3++.h.
Referenced by bvneg_no_overflow.
Definition at line 2243 of file z3++.h.
Referenced by bvredand.
Definition at line 2237 of file z3++.h.
Referenced by bvredor.
Definition at line 2513 of file z3++.h.
Referenced by bvsdiv_no_overflow.
Definition at line 2507 of file z3++.h.
Referenced by bvsub_no_overflow.
Definition at line 2510 of file z3++.h.
Referenced by bvsub_no_underflow.
Definition at line 2731 of file z3++.h.
|
friend |
Definition at line 2749 of file z3++.h.
|
friend |
Definition at line 2722 of file z3++.h.
Referenced by distinct.
FloatingPoint fused multiply-add.
Definition at line 2285 of file z3++.h.
Referenced by fma.
Definition at line 2276 of file z3++.h.
Referenced by fp_eq.
Create an expression of FloatingPoint sort from three bit-vector expressions.
Definition at line 2293 of file z3++.h.
Referenced by fpa_fp.
Conversion of a floating-point term into another floating-point.
Definition at line 2329 of file z3++.h.
Referenced by fpa_to_fpa.
Conversion of a floating-point term into a signed bit-vector.
Definition at line 2301 of file z3++.h.
Referenced by fpa_to_sbv.
Conversion of a floating-point term into an unsigned bit-vector.
Definition at line 2308 of file z3++.h.
Referenced by fpa_to_ubv.
Definition at line 2221 of file z3++.h.
Referenced by max.
Definition at line 2205 of file z3++.h.
Referenced by min.
|
friend |
Definition at line 2809 of file z3++.h.
Referenced by mk_and.
|
friend |
Definition at line 2803 of file z3++.h.
Referenced by mk_or.
|
friend |
Definition at line 1865 of file z3++.h.
Definition at line 2202 of file z3++.h.
Referenced by nand.
Definition at line 2203 of file z3++.h.
Referenced by nor.
Definition at line 1961 of file z3++.h.
Referenced by operator!=, operator!=, and operator!=.
Definition at line 2190 of file z3++.h.
Return an expression representing a and b.
Definition at line 1925 of file z3++.h.
Referenced by operator&&, operator&&, and operator&&.
Definition at line 2007 of file z3++.h.
Definition at line 1973 of file z3++.h.
Definition at line 2077 of file z3++.h.
Referenced by operator-, operator-, operator-, and operator-.
Definition at line 2097 of file z3++.h.
Definition at line 2055 of file z3++.h.
Definition at line 2146 of file z3++.h.
Definition at line 2121 of file z3++.h.
Referenced by operator<=, operator<=, and operator<=.
Definition at line 1950 of file z3++.h.
Referenced by operator==, operator==, and operator==.
Definition at line 2168 of file z3++.h.
Definition at line 2035 of file z3++.h.
Referenced by operator>=, operator>=, and operator>=.
Definition at line 2194 of file z3++.h.
Definition at line 2198 of file z3++.h.
Return an expression representing a or b.
Definition at line 1937 of file z3++.h.
Referenced by operator||, operator||, and operator||.
|
friend |
Definition at line 2689 of file z3++.h.
Referenced by pbeq.
|
friend |
Definition at line 2681 of file z3++.h.
Referenced by pbge.
|
friend |
Definition at line 2673 of file z3++.h.
Referenced by pble.
Definition at line 4631 of file z3++.h.
Referenced by range.
Definition at line 1881 of file z3++.h.
Round a floating-point term into its closest integer.
Definition at line 2336 of file z3++.h.
Referenced by round_fpa_to_closest_integer.
Conversion of a signed bit-vector term into a floating-point.
Definition at line 2315 of file z3++.h.
Referenced by sbv_to_fpa.
Definition at line 2269 of file z3++.h.
Referenced by sqrt.
|
friend |
Conversion of an unsigned bit-vector term into a floating-point.
Definition at line 2322 of file z3++.h.
Referenced by ubv_to_fpa.
Definition at line 2204 of file z3++.h.
Referenced by xnor.