3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00

ensure that timeouts are distinguished from other cancel events #848

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2017-08-18 14:54:54 -07:00
parent 7d8c745c89
commit 7a977f0106
10 changed files with 55 additions and 10 deletions

View file

@ -18,6 +18,24 @@ Notes:
--*/
#include "solver/check_sat_result.h"
void check_sat_result::set_reason_unknown(event_handler& eh) {
switch (eh.caller_id()) {
case UNSET_EH_CALLER: break;
case CTRL_C_EH_CALLER:
set_reason_unknown("interrupted from keyboard");
break;
case TIMEOUT_EH_CALLER:
set_reason_unknown("timeout");
break;
case RESLIMIT_EH_CALLER:
set_reason_unknown("max. resource limit exceeded");
break;
case API_INTERRUPT_EH_CALLER:
set_reason_unknown("interrupted");
break;
}
}
simple_check_sat_result::simple_check_sat_result(ast_manager & m):
m_core(m),
m_proof(m) {

View file

@ -22,6 +22,7 @@ Notes:
#include "model/model.h"
#include "util/lbool.h"
#include "util/statistics.h"
#include "util/event_handler.h"
/**
\brief Abstract interface for the result of a (check-sat) like command.
@ -57,6 +58,7 @@ public:
virtual proof * get_proof() = 0;
virtual std::string reason_unknown() const = 0;
virtual void set_reason_unknown(char const* msg) = 0;
void set_reason_unknown(event_handler& eh);
virtual void get_labels(svector<symbol> & r) = 0;
virtual ast_manager& get_manager() const = 0;

View file

@ -89,8 +89,8 @@ private:
m_solver->get_manager().limit().dec_cancel();
}
}
virtual void operator()() {
m_canceled = true;
virtual void operator()(event_handler_caller_t caller_id) {
m_canceled = true;
m_solver->get_manager().limit().inc_cancel();
}
};