3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-12-01 01:37:13 +00:00
z3/src/muz/spacer/spacer_qe_project.h
Nikolaj Bjorner d0e20e44ff booyah
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 15:56:30 -07:00

47 lines
1.3 KiB
C++

/*++
Copyright (c) 2017 Arie Gurfinkel
Module Name:
spacer_qe_project.h
Abstract:
Model-based projection
Author:
Anvesh Komuravelli
Arie Gurfinkel (arie)
Notes:
--*/
#pragma once
#include "model/model.h"
#include "ast/expr_map.h"
namespace spacer_qe {
/**
Loos-Weispfenning model-based projection for a basic conjunction.
Lits is a vector of literals.
return vector of variables that could not be projected.
*/
expr_ref arith_project(model& model, app_ref_vector& vars, expr_ref_vector const& lits);
void arith_project(model& model, app_ref_vector& vars, expr_ref& fml);
void arith_project(model& model, app_ref_vector& vars, expr_ref& fml, expr_map& map);
void array_project_eqs (model& model, app_ref_vector& arr_vars, expr_ref& fml, app_ref_vector& aux_vars);
void reduce_array_selects (model& mdl, app_ref_vector const& arr_vars, expr_ref& fml, bool reduce_all_selects = false);
void reduce_array_selects (model& mdl, expr_ref& fml);
void array_project_selects (model& model, app_ref_vector& arr_vars, expr_ref& fml, app_ref_vector& aux_vars);
void array_project (model& model, app_ref_vector& arr_vars, expr_ref& fml, app_ref_vector& aux_vars, bool reduce_all_selects = false);
};