mirror of
https://github.com/Z3Prover/z3
synced 2025-12-06 03:52:24 +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
52
src/muz/spacer/spacer_mev_array.h
Normal file
52
src/muz/spacer/spacer_mev_array.h
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/*++
|
||||
Copyright (c) 2011 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
spacer_mev_array.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Utilities to evaluate arrays in the model.
|
||||
|
||||
Author:
|
||||
based on model_evaluator in muz/pdr/pdr_util.h
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#ifndef _SPACER_MEV_ARRAY_H_
|
||||
#define _SPACER_MEV_ARRAY_H_
|
||||
|
||||
#include"ast.h"
|
||||
#include"rewriter_types.h"
|
||||
#include"params.h"
|
||||
#include "array_decl_plugin.h"
|
||||
|
||||
/**
|
||||
* based on model_evaluator in muz/pdr/pdr_util.h
|
||||
*/
|
||||
class model_evaluator_array_util {
|
||||
ast_manager& m;
|
||||
array_util m_array;
|
||||
|
||||
void eval_exprs(model& mdl, expr_ref_vector& es);
|
||||
|
||||
bool extract_array_func_interp(model& mdl, expr* a, vector<expr_ref_vector>& stores, expr_ref& else_case);
|
||||
|
||||
public:
|
||||
|
||||
model_evaluator_array_util (ast_manager& m):
|
||||
m (m),
|
||||
m_array (m)
|
||||
{}
|
||||
|
||||
/**
|
||||
* best effort evaluator of extensional array equality.
|
||||
*/
|
||||
void eval_array_eq(model& mdl, app* e, expr* arg1, expr* arg2, expr_ref& res);
|
||||
|
||||
void eval(model& mdl, expr* e, expr_ref& r, bool model_completion = true);
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue