mirror of
https://github.com/Z3Prover/z3
synced 2025-05-05 14:55:45 +00:00
checkpoint
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
4722fdfca5
commit
add684d8e9
377 changed files with 204 additions and 62 deletions
74
src/smt/mam.h
Normal file
74
src/smt/mam.h
Normal file
|
@ -0,0 +1,74 @@
|
|||
/*++
|
||||
Copyright (c) 2006 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
mam.h
|
||||
|
||||
Abstract:
|
||||
|
||||
Matching Abstract Machine
|
||||
|
||||
Author:
|
||||
|
||||
Leonardo de Moura (leonardo) 2007-02-13.
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#ifndef _MAM_H_
|
||||
#define _MAM_H_
|
||||
|
||||
#include"ast.h"
|
||||
#include"smt_types.h"
|
||||
|
||||
namespace smt {
|
||||
/**
|
||||
\brief Matching Abstract Machine (MAM)
|
||||
*/
|
||||
class mam {
|
||||
protected:
|
||||
context & m_context;
|
||||
std::ostream * m_trace_stream;
|
||||
public:
|
||||
mam(context & ctx, std::ostream *trace):
|
||||
m_context(ctx),
|
||||
m_trace_stream(trace) {
|
||||
}
|
||||
|
||||
virtual ~mam() {
|
||||
}
|
||||
|
||||
virtual void add_pattern(quantifier * q, app * mp) = 0;
|
||||
|
||||
virtual void push_scope() = 0;
|
||||
|
||||
virtual void pop_scope(unsigned num_scopes) = 0;
|
||||
|
||||
virtual void match() = 0;
|
||||
|
||||
virtual void rematch(bool use_irrelevant = false) = 0;
|
||||
|
||||
virtual bool has_work() const = 0;
|
||||
|
||||
virtual void relevant_eh(enode * n, bool lazy) = 0;
|
||||
|
||||
virtual void add_eq_eh(enode * r1, enode * r2) = 0;
|
||||
|
||||
virtual void reset() = 0;
|
||||
|
||||
virtual void display(std::ostream& out) = 0;
|
||||
|
||||
virtual void on_match(quantifier * q, app * pat, unsigned num_bindings, enode * const * bindings, unsigned max_generation, ptr_vector<enode> & used_enodes) = 0;
|
||||
|
||||
virtual bool is_shared(enode * n) const = 0;
|
||||
|
||||
#ifdef Z3DEBUG
|
||||
virtual bool check_missing_instances() = 0;
|
||||
#endif
|
||||
};
|
||||
|
||||
mam * mk_mam(context & ctx, std::ostream *trace);
|
||||
};
|
||||
|
||||
#endif /* _MAM_H_ */
|
Loading…
Add table
Add a link
Reference in a new issue