Exemplo n.º 1
0
void Z3Sort::AddFuncDecl(Z3_func_decl Decl) const
{
    Z3_inc_ref(*Ctx, Z3_func_decl_to_ast(*Ctx, Decl));
    string Name(Z3_get_symbol_string(*Ctx, Z3_get_decl_name(*Ctx, Decl)));
    auto it = FuncDecls.find(Name);
    if (it != FuncDecls.end()) {
        Z3_dec_ref(*Ctx, Z3_func_decl_to_ast(*Ctx, it->second));
    }
    FuncDecls[Name] = Decl;
}
Exemplo n.º 2
0
void display_function_interpretations(Z3_context c, FILE * out, Z3_model m) 
{
  unsigned num_functions, i;
  
  fprintf(out, "function interpretations:\n");
    
  num_functions = Z3_get_model_num_funcs(c, m);
  for (i = 0; i < num_functions; i++) {
    Z3_func_decl fdecl;
    Z3_symbol name;
    Z3_ast func_else;
    unsigned num_entries, j;
        
    fdecl = Z3_get_model_func_decl(c, m, i);
    name = Z3_get_decl_name(c, fdecl);
    display_symbol(c, out, name);
    fprintf(out, " = {");
    num_entries = Z3_get_model_func_num_entries(c, m, i);
    for (j = 0; j < num_entries; j++) {
      unsigned num_args, k;
      if (j > 0) {
	fprintf(out, ", ");
      }
      num_args = Z3_get_model_func_entry_num_args(c, m, i, j);
      fprintf(out, "(");
      for (k = 0; k < num_args; k++) {
	if (k > 0) {
	  fprintf(out, ", ");
	}
	display_solver_term((SOLVER_CONTEXT)c, out,(SOLVER_TERM)Z3_get_model_func_entry_arg(c, m, i, j, k));
      }
      fprintf(out, "|->");
      display_solver_term((SOLVER_CONTEXT)c, out,(SOLVER_TERM)Z3_get_model_func_entry_value(c, m, i, j));
      fprintf(out, ")");
    }
    if (num_entries > 0) {
      fprintf(out, ", ");
    }
    fprintf(out, "(else|->");
    func_else = Z3_get_model_func_else(c, m, i);
    display_solver_term((SOLVER_CONTEXT)c, out, (SOLVER_TERM)func_else);
    fprintf(out, ")}\n");
  }
}
Exemplo n.º 3
0
void display_model(Z3_context c, FILE * out, Z3_model m){  
  unsigned num_constants;
  unsigned i;

  num_constants = Z3_get_model_num_constants(c, m);
  for (i = 0; i < num_constants; i++) {
    Z3_symbol name;
    Z3_func_decl cnst = Z3_get_model_constant(c, m, i);
    Z3_ast a, v;
    Z3_bool ok;
    name = Z3_get_decl_name(c, cnst);
    display_symbol(c, out, name);
    fprintf(out, " = ");
    a = Z3_mk_app(c, cnst, 0, 0);
    v = a;
    ok = Z3_eval(c, m, a, &v);
    display_solver_term((SOLVER_CONTEXT)c, out, (SOLVER_TERM)v);
    fprintf(out, "\n");
  }

  //  display_function_interpretations(c, out, m);

}