mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
Add ite operator to the C++ API
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
f8f23382dc
commit
c430fe26aa
|
@ -337,6 +337,15 @@ void ite_example() {
|
||||||
std::cout << "term: " << ite << "\n";
|
std::cout << "term: " << ite << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ite_example2() {
|
||||||
|
std::cout << "if-then-else example2\n";
|
||||||
|
context c;
|
||||||
|
expr b = c.bool_const("b");
|
||||||
|
expr x = c.int_const("x");
|
||||||
|
expr y = c.int_const("y");
|
||||||
|
std::cout << (ite(b, x, y) > 0) << "\n";
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
\brief Small example using quantifiers.
|
\brief Small example using quantifiers.
|
||||||
*/
|
*/
|
||||||
|
@ -889,6 +898,7 @@ int main() {
|
||||||
error_example(); std::cout << "\n";
|
error_example(); std::cout << "\n";
|
||||||
numeral_example(); std::cout << "\n";
|
numeral_example(); std::cout << "\n";
|
||||||
ite_example(); std::cout << "\n";
|
ite_example(); std::cout << "\n";
|
||||||
|
ite_example2(); std::cout << "\n";
|
||||||
quantifier_example(); std::cout << "\n";
|
quantifier_example(); std::cout << "\n";
|
||||||
unsat_core_example1(); std::cout << "\n";
|
unsat_core_example1(); std::cout << "\n";
|
||||||
unsat_core_example2(); std::cout << "\n";
|
unsat_core_example2(); std::cout << "\n";
|
||||||
|
|
|
@ -620,6 +620,19 @@ namespace z3 {
|
||||||
return expr(a.ctx(), r);
|
return expr(a.ctx(), r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
\brief Create the if-then-else expression <tt>ite(c, t, e)</tt>
|
||||||
|
|
||||||
|
\pre c.is_bool()
|
||||||
|
*/
|
||||||
|
friend expr ite(expr const & c, expr const & t, expr const & e) {
|
||||||
|
check_context(c, t); check_context(c, e);
|
||||||
|
assert(c.is_bool());
|
||||||
|
Z3_ast r = Z3_mk_ite(c.ctx(), c, t, e);
|
||||||
|
c.check_error();
|
||||||
|
return expr(c.ctx(), r);
|
||||||
|
}
|
||||||
|
|
||||||
friend expr operator==(expr const & a, expr const & b) {
|
friend expr operator==(expr const & a, expr const & b) {
|
||||||
check_context(a, b);
|
check_context(a, b);
|
||||||
Z3_ast r = Z3_mk_eq(a.ctx(), a, b);
|
Z3_ast r = Z3_mk_eq(a.ctx(), a, b);
|
||||||
|
|
Loading…
Reference in a new issue