mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	formatting/reviewing
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									d2ae3b4025
								
							
						
					
					
						commit
						c3fb863ad1
					
				
					 13 changed files with 570 additions and 676 deletions
				
			
		| 
						 | 
				
			
			@ -26,11 +26,10 @@ namespace spacer {
 | 
			
		|||
class iuc_solver : public solver {
 | 
			
		||||
private:
 | 
			
		||||
    struct def_manager {
 | 
			
		||||
        iuc_solver &m_parent;
 | 
			
		||||
        iuc_solver &        m_parent;
 | 
			
		||||
        expr_ref_vector     m_defs;
 | 
			
		||||
        obj_map<expr, app*> m_expr2proxy;
 | 
			
		||||
        obj_map<app, app*> m_proxy2def;
 | 
			
		||||
 | 
			
		||||
        expr_ref_vector m_defs;
 | 
			
		||||
        obj_map<app, app*>  m_proxy2def;
 | 
			
		||||
 | 
			
		||||
        def_manager(iuc_solver &parent) :
 | 
			
		||||
            m_parent(parent), m_defs(m_parent.m)
 | 
			
		||||
| 
						 | 
				
			
			@ -44,15 +43,15 @@ private:
 | 
			
		|||
    };
 | 
			
		||||
 | 
			
		||||
    friend struct def_manager;
 | 
			
		||||
    ast_manager &m;
 | 
			
		||||
    solver &m_solver;
 | 
			
		||||
    app_ref_vector m_proxies;
 | 
			
		||||
    unsigned m_num_proxies;
 | 
			
		||||
    ast_manager&        m;
 | 
			
		||||
    solver&             m_solver;
 | 
			
		||||
    app_ref_vector      m_proxies;
 | 
			
		||||
    unsigned            m_num_proxies;
 | 
			
		||||
    vector<def_manager> m_defs;
 | 
			
		||||
    def_manager m_base_defs;
 | 
			
		||||
    expr_ref_vector m_assumptions;
 | 
			
		||||
    unsigned m_first_assumption;
 | 
			
		||||
    bool m_is_proxied;
 | 
			
		||||
    def_manager         m_base_defs;
 | 
			
		||||
    expr_ref_vector     m_assumptions;
 | 
			
		||||
    unsigned            m_first_assumption;
 | 
			
		||||
    bool                m_is_proxied;
 | 
			
		||||
 | 
			
		||||
    stopwatch m_iuc_sw;
 | 
			
		||||
    stopwatch m_hyp_reduce1_sw;
 | 
			
		||||
| 
						 | 
				
			
			@ -95,7 +94,7 @@ public:
 | 
			
		|||
    /* iuc solver specific */
 | 
			
		||||
    void get_unsat_core(expr_ref_vector &core) override;
 | 
			
		||||
    virtual void get_iuc(expr_ref_vector &core);
 | 
			
		||||
    void set_split_literals(bool v) {m_split_literals = v;}
 | 
			
		||||
    void set_split_literals(bool v) { m_split_literals = v; }
 | 
			
		||||
    bool mk_proxies(expr_ref_vector &v, unsigned from = 0);
 | 
			
		||||
    void undo_proxies(expr_ref_vector &v);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -103,42 +102,40 @@ public:
 | 
			
		|||
    void pop_bg(unsigned n);
 | 
			
		||||
    unsigned get_num_bg();
 | 
			
		||||
 | 
			
		||||
    void get_full_unsat_core(ptr_vector<expr> &core)
 | 
			
		||||
    {m_solver.get_unsat_core(core);}
 | 
			
		||||
    void get_full_unsat_core(ptr_vector<expr> &core) { m_solver.get_unsat_core(core); }
 | 
			
		||||
 | 
			
		||||
    /* solver interface */
 | 
			
		||||
 | 
			
		||||
    solver* translate(ast_manager &m, params_ref const &p) override  { return m_solver.translate(m, p);}
 | 
			
		||||
    void updt_params(params_ref const &p) override   {m_solver.updt_params(p);}
 | 
			
		||||
    void reset_params(params_ref const &p) override  {m_solver.reset_params(p);}
 | 
			
		||||
    const params_ref &get_params() const override {return m_solver.get_params();}
 | 
			
		||||
    void push_params() override {m_solver.push_params();}
 | 
			
		||||
    void pop_params() override {m_solver.pop_params();}
 | 
			
		||||
    void collect_param_descrs(param_descrs &r) override  { m_solver.collect_param_descrs(r);}
 | 
			
		||||
    void set_produce_models(bool f) override  { m_solver.set_produce_models(f);}
 | 
			
		||||
    void assert_expr_core(expr *t) override  { m_solver.assert_expr(t);}
 | 
			
		||||
    void assert_expr_core2(expr *t, expr *a) override   { NOT_IMPLEMENTED_YET();}
 | 
			
		||||
    solver* translate(ast_manager &m, params_ref const &p) override  { 
 | 
			
		||||
        return m_solver.translate(m, p); 
 | 
			
		||||
    }
 | 
			
		||||
    void updt_params(params_ref const &p) override   { m_solver.updt_params(p); }
 | 
			
		||||
    void reset_params(params_ref const &p) override  { m_solver.reset_params(p); }
 | 
			
		||||
    const params_ref &get_params() const override { return m_solver.get_params(); }
 | 
			
		||||
    void push_params() override { m_solver.push_params(); }
 | 
			
		||||
    void pop_params() override { m_solver.pop_params(); }
 | 
			
		||||
    void collect_param_descrs(param_descrs &r) override  { m_solver.collect_param_descrs(r); }
 | 
			
		||||
    void set_produce_models(bool f) override  { m_solver.set_produce_models(f); }
 | 
			
		||||
    void assert_expr_core(expr *t) override  { m_solver.assert_expr(t); }
 | 
			
		||||
    void assert_expr_core2(expr *t, expr *a) override   { NOT_IMPLEMENTED_YET(); }
 | 
			
		||||
    expr_ref_vector cube(expr_ref_vector&, unsigned) override { return expr_ref_vector(m); }
 | 
			
		||||
 | 
			
		||||
    void push() override;
 | 
			
		||||
    void pop(unsigned n) override;
 | 
			
		||||
    unsigned get_scope_level() const override
 | 
			
		||||
    {return m_solver.get_scope_level();}
 | 
			
		||||
    unsigned get_scope_level() const override { return m_solver.get_scope_level(); }
 | 
			
		||||
 | 
			
		||||
    lbool check_sat(unsigned num_assumptions, expr * const *assumptions) override;
 | 
			
		||||
    lbool check_sat_cc(const expr_ref_vector &cube, vector<expr_ref_vector> const & clauses) override;
 | 
			
		||||
    void set_progress_callback(progress_callback *callback) override
 | 
			
		||||
    {m_solver.set_progress_callback(callback);}
 | 
			
		||||
    unsigned get_num_assertions() const override
 | 
			
		||||
    {return m_solver.get_num_assertions();}
 | 
			
		||||
    expr * get_assertion(unsigned idx) const override
 | 
			
		||||
    {return m_solver.get_assertion(idx);}
 | 
			
		||||
    unsigned get_num_assumptions() const override
 | 
			
		||||
    {return m_solver.get_num_assumptions();}
 | 
			
		||||
    expr * get_assumption(unsigned idx) const override
 | 
			
		||||
    {return m_solver.get_assumption(idx);}
 | 
			
		||||
    std::ostream &display(std::ostream &out, unsigned n, expr* const* es) const override
 | 
			
		||||
    { return m_solver.display(out, n, es); }
 | 
			
		||||
    void set_progress_callback(progress_callback *callback) override {
 | 
			
		||||
        m_solver.set_progress_callback(callback);
 | 
			
		||||
    }
 | 
			
		||||
    unsigned get_num_assertions() const override { return m_solver.get_num_assertions(); }
 | 
			
		||||
    expr * get_assertion(unsigned idx) const override { return m_solver.get_assertion(idx); }
 | 
			
		||||
    unsigned get_num_assumptions() const override { return m_solver.get_num_assumptions(); }
 | 
			
		||||
    expr * get_assumption(unsigned idx) const override { return m_solver.get_assumption(idx); }
 | 
			
		||||
    std::ostream &display(std::ostream &out, unsigned n, expr* const* es) const override { 
 | 
			
		||||
        return m_solver.display(out, n, es); 
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* check_sat_result interface */
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -148,13 +145,10 @@ public:
 | 
			
		|||
    void get_unsat_core(ptr_vector<expr> &r) override;
 | 
			
		||||
    void get_model_core(model_ref &m) override {m_solver.get_model(m);}
 | 
			
		||||
    proof *get_proof() override {return m_solver.get_proof();}
 | 
			
		||||
    std::string reason_unknown() const override
 | 
			
		||||
    {return m_solver.reason_unknown();}
 | 
			
		||||
    void set_reason_unknown(char const* msg) override
 | 
			
		||||
    {m_solver.set_reason_unknown(msg);}
 | 
			
		||||
    void get_labels(svector<symbol> &r) override
 | 
			
		||||
    {m_solver.get_labels(r);}
 | 
			
		||||
    ast_manager &get_manager() const override {return m;}
 | 
			
		||||
    std::string reason_unknown() const override { return m_solver.reason_unknown(); }
 | 
			
		||||
    void set_reason_unknown(char const* msg) override { m_solver.set_reason_unknown(msg); }
 | 
			
		||||
    void get_labels(svector<symbol> &r) override { m_solver.get_labels(r); }
 | 
			
		||||
    ast_manager& get_manager() const override { return m; }
 | 
			
		||||
 | 
			
		||||
    virtual void refresh();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -162,10 +156,10 @@ public:
 | 
			
		|||
        iuc_solver &m_s;
 | 
			
		||||
        expr_ref_vector &m_v;
 | 
			
		||||
    public:
 | 
			
		||||
        scoped_mk_proxy(iuc_solver &s, expr_ref_vector &v) : m_s(s), m_v(v)
 | 
			
		||||
        {m_s.mk_proxies(m_v);}
 | 
			
		||||
        ~scoped_mk_proxy()
 | 
			
		||||
        {m_s.undo_proxies(m_v);}
 | 
			
		||||
        scoped_mk_proxy(iuc_solver &s, expr_ref_vector &v) : m_s(s), m_v(v) { 
 | 
			
		||||
            m_s.mk_proxies(m_v);
 | 
			
		||||
        }
 | 
			
		||||
        ~scoped_mk_proxy() { m_s.undo_proxies(m_v); }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    class scoped_bg {
 | 
			
		||||
| 
						 | 
				
			
			@ -173,8 +167,11 @@ public:
 | 
			
		|||
        unsigned m_bg_sz;
 | 
			
		||||
    public:
 | 
			
		||||
        scoped_bg(iuc_solver &s) : m_s(s), m_bg_sz(m_s.get_num_bg()) {}
 | 
			
		||||
        ~scoped_bg()
 | 
			
		||||
        {if(m_s.get_num_bg() > m_bg_sz) { m_s.pop_bg(m_s.get_num_bg() - m_bg_sz); }}
 | 
			
		||||
        ~scoped_bg() {
 | 
			
		||||
            if (m_s.get_num_bg() > m_bg_sz) { 
 | 
			
		||||
                m_s.pop_bg(m_s.get_num_bg() - m_bg_sz); 
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue