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

add js-model interfacing

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-08-12 18:14:06 -07:00
parent 0af00e62de
commit 3478b8b924
11 changed files with 275 additions and 59 deletions

View file

@ -62,8 +62,8 @@ namespace smt {
u_map<unsigned> m_resource2index; // resource to index into vector
enode* m_start;
enode* m_end;
enode* m_resource;
job_info(): m_is_preemptable(true), m_start(nullptr), m_end(nullptr), m_resource(nullptr) {}
enode* m_job2resource;
job_info(): m_is_preemptable(false), m_start(nullptr), m_end(nullptr), m_job2resource(nullptr) {}
};
struct res_available {
@ -88,7 +88,8 @@ namespace smt {
unsigned_vector m_jobs; // jobs allocated to run on resource
vector<res_available> m_available; // time intervals where resource is available
time_t m_end; // can't run after
res_info(): m_end(std::numeric_limits<time_t>::max()) {}
enode* m_resource;
res_info(): m_end(std::numeric_limits<time_t>::max()), m_resource(nullptr) {}
};
ast_manager& m;
@ -102,7 +103,7 @@ namespace smt {
theory_var mk_var(enode * n) override;
bool internalize_atom(app * atom, bool gate_ctx) override { return false; }
bool internalize_atom(app * atom, bool gate_ctx) override;
bool internalize_term(app * term) override;
@ -154,7 +155,11 @@ namespace smt {
time_t lct(unsigned j); // last completion time
time_t start(unsigned j); // start time of job j
time_t end(unsigned j); // end time of job j
time_t get_lo(expr* e);
time_t get_up(expr* e);
time_t get_value(expr* e);
unsigned resource(unsigned j); // resource of job j
enode* resource2enode(unsigned r);
// derived bounds
time_t ect(unsigned j, unsigned r, time_t start);
@ -201,6 +206,8 @@ namespace smt {
literal mk_le(enode* l, enode* r);
literal mk_literal(expr* e);
void internalize_cmd(expr* cmd);
std::ostream& display(std::ostream & out, res_info const& r) const;
std::ostream& display(std::ostream & out, res_available const& r) const;
std::ostream& display(std::ostream & out, job_info const& r) const;