mirror of
https://github.com/Z3Prover/z3
synced 2025-12-01 09:39:05 +00:00
Spacer engine for HORN logic
The algorithms implemented in the engine are described in the following papers Anvesh Komuravelli, Nikolaj Bjørner, Arie Gurfinkel, Kenneth L. McMillan: Compositional Verification of Procedural Programs using Horn Clauses over Integers and Arrays. FMCAD 2015: 89-96 Nikolaj Bjørner, Arie Gurfinkel: Property Directed Polyhedral Abstraction. VMCAI 2015: 263-281 Anvesh Komuravelli, Arie Gurfinkel, Sagar Chaki: SMT-Based Model Checking for Recursive Programs. CAV 2014: 17-34
This commit is contained in:
parent
9f9dc5e19f
commit
5b9bf74787
54 changed files with 18050 additions and 3 deletions
49
src/muz/spacer/spacer_qe_project.h
Normal file
49
src/muz/spacer/spacer_qe_project.h
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
/*++
|
||||
Copyright (c) 2017 Arie Gurfinkel
|
||||
|
||||
Module Name:
|
||||
|
||||
spacer_qe_project.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Model-based projection
|
||||
|
||||
Author:
|
||||
|
||||
Anvesh Komuravelli
|
||||
Arie Gurfinkel (arie)
|
||||
|
||||
Notes:
|
||||
|
||||
--*/
|
||||
#ifndef SPACER_QE_PROJECT_H_
|
||||
#define SPACER_QE_PROJECT_H_
|
||||
|
||||
#include "model.h"
|
||||
#include "expr_map.h"
|
||||
|
||||
namespace 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);
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue