mirror of
https://github.com/Z3Prover/z3
synced 2025-04-23 17:15:31 +00:00
Add enumeration_sort method to C++ API. Add as_expr method to goal class in C++ API. Add enum_sort_example to C++ examples/c++/example.cpp
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
14f582eca5
commit
b2810592e6
2 changed files with 66 additions and 6 deletions
|
@ -883,6 +883,29 @@ void incremental_example3() {
|
|||
std::cout << s.check(a2) << "\n";
|
||||
}
|
||||
|
||||
void enum_sort_example() {
|
||||
std::cout << "enumeration sort example\n";
|
||||
context ctx;
|
||||
const char * enum_names[] = { "a", "b", "c" };
|
||||
func_decl_vector enum_consts(ctx);
|
||||
func_decl_vector enum_testers(ctx);
|
||||
sort s = ctx.enumeration_sort("enumT", 3, enum_names, enum_consts, enum_testers);
|
||||
// enum_consts[0] is a func_decl of arity 0.
|
||||
// we convert it to an expression using the operator()
|
||||
expr a = enum_consts[0]();
|
||||
expr b = enum_consts[1]();
|
||||
expr x = ctx.constant("x", s);
|
||||
expr test = (x==a) && (x==b);
|
||||
std::cout << "1: " << test << std::endl;
|
||||
tactic qe(ctx, "ctx-solver-simplify");
|
||||
goal g(ctx);
|
||||
g.add(test);
|
||||
expr res(ctx);
|
||||
apply_result result_of_elimination = qe.apply(g);
|
||||
goal result_goal = result_of_elimination[0];
|
||||
std::cout << "2: " << result_goal.as_expr() << std::endl;
|
||||
}
|
||||
|
||||
int main() {
|
||||
try {
|
||||
demorgan(); std::cout << "\n";
|
||||
|
@ -917,6 +940,7 @@ int main() {
|
|||
incremental_example1(); std::cout << "\n";
|
||||
incremental_example2(); std::cout << "\n";
|
||||
incremental_example3(); std::cout << "\n";
|
||||
enum_sort_example(); std::cout << "\n";
|
||||
std::cout << "done\n";
|
||||
}
|
||||
catch (exception & ex) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue