3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-03 21:09:11 +00:00

Logging facility for spacer plus minor improvements (#3368)

* [spacer] logging solver events

New option fp.spacer.trace_file='file.log' enables logging solving events
into a file.

These events are useful for debugging the solver, but also for visualizing
the solving process in a variety of ways

* [spacer] allow setting logic for solvers used by spacer

* [spacer] option to set arithmetic solver explicitly

* [spacer] improve of dumping solver_pool state for debugging

* fix propagate_ineqs to handle strict inequality

Co-authored-by: Nham Van Le <nv3le@precious3.eng.uwaterloo.ca>
This commit is contained in:
Arie Gurfinkel 2020-03-16 23:31:44 -04:00 committed by GitHub
parent f06deca7e0
commit 6180a5276d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 143 additions and 58 deletions

View file

@ -24,6 +24,8 @@ Notes:
#define _SPACER_CONTEXT_H_
#include <queue>
#include <fstream>
#include "util/scoped_ptr_vector.h"
#include "muz/spacer/spacer_manager.h"
#include "muz/spacer/spacer_prop_solver.h"
@ -899,7 +901,7 @@ enum spacer_children_order {
};
class context {
friend class pred_transformer;
struct stats {
unsigned m_num_queries;
unsigned m_num_reuse_reach;
@ -982,6 +984,7 @@ class context {
unsigned m_blast_term_ite_inflation;
scoped_ptr_vector<spacer_callback> m_callbacks;
json_marshaller m_json_marshaller;
std::fstream* m_trace_stream;
// Solve using gpdr strategy
lbool gpdr_solve_core();
@ -991,6 +994,12 @@ class context {
model &mdl,
pob_ref_buffer &out);
// progress logging
void log_enter_level(unsigned lvl);
void log_propagate();
void log_expand_pob(pob &);
void log_add_lemma(pred_transformer &, lemma&);
// Functions used by search.
lbool solve_core(unsigned from_lvl = 0);
bool is_requeue(pob &n);