mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 19:52:29 +00:00 
			
		
		
		
	add virtual destructors, fix operator code for API methods complement and intersection per note by Loris d'Antoni
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									a17e957362
								
							
						
					
					
						commit
						e092232f67
					
				
					 10 changed files with 38 additions and 33 deletions
				
			
		|  | @ -155,9 +155,9 @@ extern "C" { | |||
|     MK_UNARY(Z3_mk_re_plus, mk_c(c)->get_seq_fid(), OP_RE_PLUS, SKIP); | ||||
|     MK_UNARY(Z3_mk_re_star, mk_c(c)->get_seq_fid(), OP_RE_STAR, SKIP); | ||||
|     MK_UNARY(Z3_mk_re_option, mk_c(c)->get_seq_fid(), OP_RE_OPTION, SKIP); | ||||
|     MK_UNARY(Z3_mk_re_complement, mk_c(c)->get_seq_fid(), OP_RE_OPTION, SKIP); | ||||
|     MK_UNARY(Z3_mk_re_complement, mk_c(c)->get_seq_fid(), OP_RE_COMPLEMENT, SKIP); | ||||
|     MK_NARY(Z3_mk_re_union, mk_c(c)->get_seq_fid(), OP_RE_UNION, SKIP); | ||||
|     MK_NARY(Z3_mk_re_intersect, mk_c(c)->get_seq_fid(), OP_RE_UNION, SKIP); | ||||
|     MK_NARY(Z3_mk_re_intersect, mk_c(c)->get_seq_fid(), OP_RE_INTERSECT, SKIP); | ||||
|     MK_NARY(Z3_mk_re_concat, mk_c(c)->get_seq_fid(), OP_RE_CONCAT, SKIP); | ||||
|     MK_BINARY(Z3_mk_re_range, mk_c(c)->get_seq_fid(), OP_RE_RANGE, SKIP); | ||||
| 
 | ||||
|  |  | |||
|  | @ -26,6 +26,7 @@ Revision History: | |||
| template<class T> | ||||
| class positive_boolean_algebra { | ||||
| public: | ||||
|     virtual ~positive_boolean_algebra() {} | ||||
|     virtual T mk_false() = 0; | ||||
|     virtual T mk_true() = 0; | ||||
|     virtual T mk_and(T x, T y) = 0; | ||||
|  | @ -38,6 +39,7 @@ public: | |||
| template<class T> | ||||
| class boolean_algebra : public positive_boolean_algebra<T> { | ||||
| public: | ||||
|     virtual ~boolean_algebra() {} | ||||
|     virtual T mk_not(T x) = 0;	 | ||||
|     //virtual lbool are_equivalent(T x, T y) = 0;
 | ||||
|     //virtual T simplify(T x) = 0;    
 | ||||
|  |  | |||
|  | @ -35,6 +35,8 @@ class subpaving_tactic : public tactic { | |||
|         display_var_proc(expr2var & e2v):m_inv(e2v.m()) { | ||||
|             e2v.mk_inv(m_inv); | ||||
|         } | ||||
| 
 | ||||
|         virtual ~display_var_proc() {} | ||||
|          | ||||
|         ast_manager & m() const { return m_inv.get_manager(); } | ||||
|          | ||||
|  |  | |||
|  | @ -51,6 +51,7 @@ public: | |||
|     virtual result operator()(goal const & g) { | ||||
|         return is_unbounded(g); | ||||
|     } | ||||
|     virtual ~is_unbounded_probe() {} | ||||
| }; | ||||
| 
 | ||||
| probe * mk_is_unbounded_probe() { | ||||
|  | @ -109,11 +110,11 @@ class add_bounds_tactic : public tactic { | |||
|             void operator()(quantifier*) {} | ||||
|         }; | ||||
|          | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & g,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             mc = 0; pc = 0; core = 0; | ||||
|             tactic_report report("add-bounds", *g); | ||||
|             bound_manager bm(m); | ||||
|  |  | |||
|  | @ -312,11 +312,11 @@ class diff_neq_tactic : public tactic { | |||
|             return md; | ||||
|         } | ||||
| 
 | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & g,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             SASSERT(g->is_well_sorted()); | ||||
|             m_produce_models = g->models_enabled(); | ||||
|             mc = 0; pc = 0; core = 0; result.reset(); | ||||
|  |  | |||
|  | @ -1549,11 +1549,11 @@ class fm_tactic : public tactic { | |||
|                 throw tactic_exception(TACTIC_MAX_MEMORY_MSG); | ||||
|         } | ||||
|          | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & g,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             SASSERT(g->is_well_sorted()); | ||||
|             mc = 0; pc = 0; core = 0; | ||||
|             tactic_report report("fm", *g); | ||||
|  |  | |||
|  | @ -188,11 +188,11 @@ class lia2pb_tactic : public tactic { | |||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & g,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             SASSERT(g->is_well_sorted()); | ||||
|             fail_if_proof_generation("lia2pb", g); | ||||
|             m_produce_models      = g->models_enabled(); | ||||
|  |  | |||
|  | @ -80,11 +80,11 @@ class normalize_bounds_tactic : public tactic { | |||
|             return false; | ||||
|         } | ||||
|          | ||||
|         virtual void operator()(goal_ref const & in,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & in,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             mc = 0; pc = 0; core = 0; | ||||
|             bool produce_models = in->models_enabled(); | ||||
|             bool produce_proofs = in->proofs_enabled(); | ||||
|  |  | |||
|  | @ -885,11 +885,11 @@ private: | |||
|             r.erase("elim_and");             | ||||
|         } | ||||
|          | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|                                 expr_dependency_ref & core) { | ||||
|         void operator()(goal_ref const & g,  | ||||
|                         goal_ref_buffer & result,  | ||||
|                         model_converter_ref & mc,  | ||||
|                         proof_converter_ref & pc, | ||||
|                         expr_dependency_ref & core) { | ||||
|             TRACE("pb2bv", g->display(tout);); | ||||
|             SASSERT(g->is_well_sorted()); | ||||
|             fail_if_proof_generation("pb2bv", g); | ||||
|  |  | |||
|  | @ -819,7 +819,7 @@ class elim_uncnstr_tactic : public tactic { | |||
|             m_rw = alloc(rw, m(), produce_proofs, m_vars, m_mc.get(), m_max_memory, m_max_steps);             | ||||
|         } | ||||
| 
 | ||||
|         virtual void operator()(goal_ref const & g,  | ||||
|         void operator()(goal_ref const & g,  | ||||
|                                 goal_ref_buffer & result,  | ||||
|                                 model_converter_ref & mc,  | ||||
|                                 proof_converter_ref & pc, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue