mirror of
https://github.com/Z3Prover/z3
synced 2025-08-23 19:47:52 +00:00
gc-ing definitions leads to unsoundness when they are not replayed. Instead of attempting to replay definitions theory internalization is irredundant by default. This is also the old solver behavior where TH_LEMMA is essentially never used, but is valid for top-level theory lemmas.
36 lines
873 B
C++
36 lines
873 B
C++
/*++
|
|
Copyright (c) 2020 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
sat_internalizer.h
|
|
|
|
Abstract:
|
|
|
|
Header for SMT theories over SAT solver
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2020-08-25
|
|
|
|
--*/
|
|
#pragma once
|
|
|
|
#include "util/sat_literal.h"
|
|
|
|
namespace sat {
|
|
class sat_internalizer {
|
|
public:
|
|
virtual ~sat_internalizer() = default;
|
|
virtual bool is_bool_op(expr* e) const = 0;
|
|
virtual literal internalize(expr* e) = 0;
|
|
virtual bool_var to_bool_var(expr* e) = 0;
|
|
virtual bool_var add_bool_var(expr* e) = 0;
|
|
virtual bool is_cached(app* t, literal l) const = 0;
|
|
virtual void cache(app* t, literal l) = 0;
|
|
virtual void uncache(literal l) = 0;
|
|
virtual void push() = 0;
|
|
virtual void pop(unsigned n) = 0;
|
|
virtual void set_expr2var_replay(obj_map<expr, sat::bool_var>* r) = 0;
|
|
};
|
|
}
|