Z3
Data Structures | Public Member Functions | Friends
model Class Reference
+ Inheritance diagram for model:

Data Structures

struct  translate
 

Public Member Functions

 model (context &c)
 
 model (context &c, Z3_model m)
 
 model (model const &s)
 
 model (model &src, context &dst, translate)
 
 ~model () override
 
 operator Z3_model () const
 
modeloperator= (model const &s)
 
expr eval (expr const &n, bool model_completion=false) const
 
unsigned num_consts () const
 
unsigned num_funcs () const
 
func_decl get_const_decl (unsigned i) const
 
func_decl get_func_decl (unsigned i) const
 
unsigned size () const
 
func_decl operator[] (int i) const
 
expr get_const_interp (func_decl c) const
 
func_interp get_func_interp (func_decl f) const
 
bool has_interp (func_decl f) const
 
func_interp add_func_interp (func_decl &f, expr &else_val)
 
void add_const_interp (func_decl &f, expr &value)
 
unsigned num_sorts () const
 
sort get_sort (unsigned i) const
 Return the uninterpreted sort at position i. More...
 
expr_vector sort_universe (sort const &s) const
 
std::string to_string () const
 
- Public Member Functions inherited from object
 object (context &c)
 
virtual ~object ()=default
 
contextctx () const
 
Z3_error_code check_error () const
 

Friends

std::ostream & operator<< (std::ostream &out, model const &m)
 

Additional Inherited Members

- Protected Attributes inherited from object
contextm_ctx
 

Detailed Description

Definition at line 2712 of file z3++.h.

Constructor & Destructor Documentation

model ( context c)
inline

Definition at line 2720 of file z3++.h.

2720 :object(c) { init(Z3_mk_model(c)); }
Z3_model Z3_API Z3_mk_model(Z3_context c)
Create a fresh model object. It has reference count 0.
object(context &c)
Definition: z3++.h:538
model ( context c,
Z3_model  m 
)
inline

Definition at line 2721 of file z3++.h.

2721 :object(c) { init(m); }
object(context &c)
Definition: z3++.h:538
model ( model const &  s)
inline

Definition at line 2722 of file z3++.h.

2722 :object(s) { init(s.m_model); }
object(context &c)
Definition: z3++.h:538
model ( model src,
context dst,
translate   
)
inline

Definition at line 2723 of file z3++.h.

2723 : object(dst) { init(Z3_model_translate(src.ctx(), src, dst)); }
object(context &c)
Definition: z3++.h:538
Z3_model Z3_API Z3_model_translate(Z3_context c, Z3_model m, Z3_context dst)
translate model from context c to context dst.
~model ( )
inlineoverride

Definition at line 2724 of file z3++.h.

2724 { Z3_model_dec_ref(ctx(), m_model); }
context & ctx() const
Definition: z3++.h:540
void Z3_API Z3_model_dec_ref(Z3_context c, Z3_model m)
Decrement the reference counter of the given model.

Member Function Documentation

void add_const_interp ( func_decl f,
expr value 
)
inline

Definition at line 2783 of file z3++.h.

2783  {
2784  Z3_add_const_interp(ctx(), m_model, f, value);
2785  check_error();
2786  }
void Z3_API Z3_add_const_interp(Z3_context c, Z3_model m, Z3_func_decl f, Z3_ast a)
Add a constant interpretation.
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
func_interp add_func_interp ( func_decl f,
expr else_val 
)
inline

Definition at line 2777 of file z3++.h.

2777  {
2778  Z3_func_interp r = Z3_add_func_interp(ctx(), m_model, f, else_val);
2779  check_error();
2780  return func_interp(ctx(), r);
2781  }
Z3_error_code check_error() const
Definition: z3++.h:541
Z3_func_interp Z3_API Z3_add_func_interp(Z3_context c, Z3_model m, Z3_func_decl f, Z3_ast default_value)
Create a fresh func_interp object, add it to a model for a specified function. It has reference count...
context & ctx() const
Definition: z3++.h:540
expr eval ( expr const &  n,
bool  model_completion = false 
) const
inline

Definition at line 2734 of file z3++.h.

2734  {
2735  check_context(*this, n);
2736  Z3_ast r = 0;
2737  bool status = Z3_model_eval(ctx(), m_model, n, model_completion, &r);
2738  check_error();
2739  if (status == false && ctx().enable_exceptions())
2740  Z3_THROW(exception("failed to evaluate expression"));
2741  return expr(ctx(), r);
2742  }
#define Z3_THROW(x)
Definition: z3++.h:134
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
bool Z3_API Z3_model_eval(Z3_context c, Z3_model m, Z3_ast t, bool model_completion, Z3_ast *v)
Evaluate the AST node t in the given model. Return true if succeeded, and store the result in v...
friend void check_context(object const &a, object const &b)
Definition: z3++.h:544
func_decl get_const_decl ( unsigned  i) const
inline

Definition at line 2746 of file z3++.h.

Referenced by model::operator[]().

2746 { Z3_func_decl r = Z3_model_get_const_decl(ctx(), m_model, i); check_error(); return func_decl(ctx(), r); }
Z3_func_decl Z3_API Z3_model_get_const_decl(Z3_context c, Z3_model m, unsigned i)
Return the i-th constant in the given model.
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
expr get_const_interp ( func_decl  c) const
inline

Definition at line 2757 of file z3++.h.

2757  {
2758  check_context(*this, c);
2759  Z3_ast r = Z3_model_get_const_interp(ctx(), m_model, c);
2760  check_error();
2761  return expr(ctx(), r);
2762  }
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
Z3_ast Z3_API Z3_model_get_const_interp(Z3_context c, Z3_model m, Z3_func_decl a)
Return the interpretation (i.e., assignment) of constant a in the model m. Return NULL...
friend void check_context(object const &a, object const &b)
Definition: z3++.h:544
func_decl get_func_decl ( unsigned  i) const
inline

Definition at line 2747 of file z3++.h.

Referenced by model::operator[]().

2747 { Z3_func_decl r = Z3_model_get_func_decl(ctx(), m_model, i); check_error(); return func_decl(ctx(), r); }
Z3_func_decl Z3_API Z3_model_get_func_decl(Z3_context c, Z3_model m, unsigned i)
Return the declaration of the i-th function in the given model.
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
func_interp get_func_interp ( func_decl  f) const
inline

Definition at line 2763 of file z3++.h.

2763  {
2764  check_context(*this, f);
2765  Z3_func_interp r = Z3_model_get_func_interp(ctx(), m_model, f);
2766  check_error();
2767  return func_interp(ctx(), r);
2768  }
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
Z3_func_interp Z3_API Z3_model_get_func_interp(Z3_context c, Z3_model m, Z3_func_decl f)
Return the interpretation of the function f in the model m. Return NULL, if the model does not assign...
friend void check_context(object const &a, object const &b)
Definition: z3++.h:544
sort get_sort ( unsigned  i) const
inline

Return the uninterpreted sort at position i.

Precondition
i < num_sorts()

Definition at line 2798 of file z3++.h.

2798  {
2799  Z3_sort s = Z3_model_get_sort(ctx(), m_model, i);
2800  check_error();
2801  return sort(ctx(), s);
2802  }
Z3_sort Z3_API Z3_model_get_sort(Z3_context c, Z3_model m, unsigned i)
Return a uninterpreted sort that m assigns an interpretation.
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
bool has_interp ( func_decl  f) const
inline

Definition at line 2772 of file z3++.h.

2772  {
2773  check_context(*this, f);
2774  return Z3_model_has_interp(ctx(), m_model, f);
2775  }
context & ctx() const
Definition: z3++.h:540
friend void check_context(object const &a, object const &b)
Definition: z3++.h:544
bool Z3_API Z3_model_has_interp(Z3_context c, Z3_model m, Z3_func_decl a)
Test if there exists an interpretation (i.e., assignment) for a in the model m.
unsigned num_consts ( ) const
inline

Definition at line 2744 of file z3++.h.

Referenced by model::operator[](), and model::size().

2744 { return Z3_model_get_num_consts(ctx(), m_model); }
context & ctx() const
Definition: z3++.h:540
unsigned Z3_API Z3_model_get_num_consts(Z3_context c, Z3_model m)
Return the number of constants assigned by the given model.
unsigned num_funcs ( ) const
inline

Definition at line 2745 of file z3++.h.

Referenced by model::size().

2745 { return Z3_model_get_num_funcs(ctx(), m_model); }
context & ctx() const
Definition: z3++.h:540
unsigned Z3_API Z3_model_get_num_funcs(Z3_context c, Z3_model m)
Return the number of function interpretations in the given model.
unsigned num_sorts ( ) const
inline

Definition at line 2788 of file z3++.h.

2788  {
2789  unsigned r = Z3_model_get_num_sorts(ctx(), m_model);
2790  check_error();
2791  return r;
2792  }
unsigned Z3_API Z3_model_get_num_sorts(Z3_context c, Z3_model m)
Return the number of uninterpreted sorts that m assigns an interpretation to.
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
operator Z3_model ( ) const
inline

Definition at line 2725 of file z3++.h.

2725 { return m_model; }
model& operator= ( model const &  s)
inline

Definition at line 2726 of file z3++.h.

2726  {
2727  Z3_model_inc_ref(s.ctx(), s.m_model);
2728  Z3_model_dec_ref(ctx(), m_model);
2729  object::operator=(s);
2730  m_model = s.m_model;
2731  return *this;
2732  }
context & ctx() const
Definition: z3++.h:540
void Z3_API Z3_model_dec_ref(Z3_context c, Z3_model m)
Decrement the reference counter of the given model.
void Z3_API Z3_model_inc_ref(Z3_context c, Z3_model m)
Increment the reference counter of the given model.
func_decl operator[] ( int  i) const
inline

Definition at line 2749 of file z3++.h.

2749  {
2750  assert(0 <= i);
2751  return static_cast<unsigned>(i) < num_consts() ? get_const_decl(i) : get_func_decl(i - num_consts());
2752  }
func_decl get_const_decl(unsigned i) const
Definition: z3++.h:2746
func_decl get_func_decl(unsigned i) const
Definition: z3++.h:2747
unsigned num_consts() const
Definition: z3++.h:2744
unsigned size ( ) const
inline

Definition at line 2748 of file z3++.h.

2748 { return num_consts() + num_funcs(); }
unsigned num_consts() const
Definition: z3++.h:2744
unsigned num_funcs() const
Definition: z3++.h:2745
expr_vector sort_universe ( sort const &  s) const
inline

Definition at line 2804 of file z3++.h.

2804  {
2805  check_context(*this, s);
2806  Z3_ast_vector r = Z3_model_get_sort_universe(ctx(), m_model, s);
2807  check_error();
2808  return expr_vector(ctx(), r);
2809  }
Z3_ast_vector Z3_API Z3_model_get_sort_universe(Z3_context c, Z3_model m, Z3_sort s)
Return the finite set of distinct values that represent the interpretation for sort s...
Z3_error_code check_error() const
Definition: z3++.h:541
context & ctx() const
Definition: z3++.h:540
friend void check_context(object const &a, object const &b)
Definition: z3++.h:544
ast_vector_tpl< expr > expr_vector
Definition: z3++.h:77
std::string to_string ( ) const
inline

Definition at line 2813 of file z3++.h.

Referenced by z3::operator<<().

2813 { return m_model ? std::string(Z3_model_to_string(ctx(), m_model)) : "null"; }
context & ctx() const
Definition: z3++.h:540
Z3_string Z3_API Z3_model_to_string(Z3_context c, Z3_model m)
Convert the given model into a string.

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  out,
model const &  m 
)
friend

Definition at line 2815 of file z3++.h.

2815 { return out << m.to_string(); }