mirror of
https://github.com/Z3Prover/z3
synced 2025-11-21 05:06:39 +00:00
63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
/**++
|
|
Copyright (c) 2017 Microsoft Corporation and Matteo Marescotti
|
|
|
|
Module Name:
|
|
|
|
spacer_callback.h
|
|
|
|
Abstract:
|
|
|
|
SPACER plugin for handling events
|
|
|
|
Author:
|
|
|
|
Matteo Marescotti
|
|
|
|
Notes:
|
|
|
|
--*/
|
|
|
|
#pragma once
|
|
|
|
#include "muz/spacer/spacer_context.h"
|
|
#include "muz/base/dl_engine_base.h"
|
|
|
|
|
|
namespace spacer {
|
|
|
|
class user_callback : public spacer_callback {
|
|
private:
|
|
void *m_state;
|
|
const datalog::t_new_lemma_eh m_new_lemma_eh;
|
|
const datalog::t_predecessor_eh m_predecessor_eh;
|
|
const datalog::t_unfold_eh m_unfold_eh;
|
|
|
|
public:
|
|
user_callback(context &context,
|
|
void *state,
|
|
const datalog::t_new_lemma_eh new_lemma_eh,
|
|
const datalog::t_predecessor_eh predecessor_eh,
|
|
const datalog::t_unfold_eh unfold_eh) :
|
|
spacer_callback(context),
|
|
m_state(state),
|
|
m_new_lemma_eh(new_lemma_eh),
|
|
m_predecessor_eh(predecessor_eh),
|
|
m_unfold_eh(unfold_eh) {}
|
|
|
|
inline bool new_lemma() override { return m_new_lemma_eh != nullptr; }
|
|
|
|
void new_lemma_eh(expr *lemma, unsigned level) override;
|
|
|
|
inline bool predecessor() override { return m_predecessor_eh != nullptr; }
|
|
|
|
void predecessor_eh() override;
|
|
|
|
inline bool unfold() override { return m_unfold_eh != nullptr; }
|
|
|
|
void unfold_eh() override;
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|