mirror of
https://github.com/Z3Prover/z3
synced 2025-04-12 12:08:18 +00:00
43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
/*++
|
|
Copyright (c) 2007 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
expr_abstract.h
|
|
|
|
Abstract:
|
|
|
|
Abstract occurrences of constants to bound variables.
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2008-03-08
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
#ifndef EXPR_ABSTRACT_H_
|
|
#define EXPR_ABSTRACT_H_
|
|
|
|
#include "ast/ast.h"
|
|
|
|
class expr_abstractor {
|
|
ast_manager& m;
|
|
expr_ref_vector m_pinned;
|
|
ptr_vector<expr> m_stack, m_args;
|
|
obj_map<expr, expr*> m_map;
|
|
|
|
public:
|
|
expr_abstractor(ast_manager& m): m(m), m_pinned(m) {}
|
|
void operator()(unsigned base, unsigned num_bound, expr* const* bound, expr* n, expr_ref& result);
|
|
};
|
|
|
|
void expr_abstract(ast_manager& m, unsigned base, unsigned num_bound, expr* const* bound, expr* n, expr_ref& result);
|
|
inline expr_ref expr_abstract(ast_manager& m, unsigned base, unsigned num_bound, expr* const* bound, expr* n) { expr_ref r(m); expr_abstract(m, base, num_bound, bound, n, r); return r; }
|
|
expr_ref mk_forall(ast_manager& m, unsigned num_bound, app* const* bound, expr* n);
|
|
expr_ref mk_exists(ast_manager& m, unsigned num_bound, app* const* bound, expr* n);
|
|
|
|
#endif
|
|
|
|
|