mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 03:32:28 +00:00 
			
		
		
		
	build fix
This commit is contained in:
		
							parent
							
								
									daf7e9e3ef
								
							
						
					
					
						commit
						7c2fe46eb7
					
				
					 7 changed files with 46 additions and 49 deletions
				
			
		|  | @ -76,11 +76,11 @@ namespace sat { | ||||||
|         else if (st.is_asserted()) |         else if (st.is_asserted()) | ||||||
|             out << "a"; |             out << "a"; | ||||||
|          |          | ||||||
|         switch (st.orig) { |         if (st.is_ba()) | ||||||
|         case status::orig::ba:       return out << " ba"; |             out << " ba"; | ||||||
|         case status::orig::euf:      return out << " euf"; |         else if (st.is_euf()) | ||||||
|         default: return out; |             out << " euf"; | ||||||
|         } |         return out;         | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void drat::dump(unsigned n, literal const* c, status st) { |     void drat::dump(unsigned n, literal const* c, status st) { | ||||||
|  | @ -94,32 +94,25 @@ namespace sat { | ||||||
|         char* lastd = digits + sizeof(digits); |         char* lastd = digits + sizeof(digits); | ||||||
|          |          | ||||||
|         unsigned len = 0; |         unsigned len = 0; | ||||||
|         switch (st.st) { |         if (st.is_asserted()) { | ||||||
|         case status::st::asserted: |  | ||||||
|             buffer[len++] = 'a'; |             buffer[len++] = 'a'; | ||||||
|             buffer[len++] = ' ';            |             buffer[len++] = ' ';            | ||||||
|             break; |         } | ||||||
|         case status::st::deleted: |         else if (st.is_deleted()) { | ||||||
|             buffer[len++] = 'd'; |             buffer[len++] = 'd'; | ||||||
|             buffer[len++] = ' '; |             buffer[len++] = ' '; | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|         } |         } | ||||||
|         switch (st.orig) { | 
 | ||||||
|         case status::orig::euf: |         if (st.is_euf()) { | ||||||
|             buffer[len++] = 'e'; |             buffer[len++] = 'e'; | ||||||
|             buffer[len++] = 'u'; |             buffer[len++] = 'u'; | ||||||
|             buffer[len++] = 'f'; |             buffer[len++] = 'f'; | ||||||
|             buffer[len++] = ' '; |             buffer[len++] = ' '; | ||||||
|             break; |         } | ||||||
|         case status::orig::ba: |         else if (st.is_ba()) { | ||||||
|             buffer[len++] = 'b'; |             buffer[len++] = 'b'; | ||||||
|             buffer[len++] = 'a'; |             buffer[len++] = 'a'; | ||||||
|             buffer[len++] = ' '; |             buffer[len++] = ' '; | ||||||
|             break; |  | ||||||
|         default: |  | ||||||
|             break; |  | ||||||
|         } |         } | ||||||
|         for (unsigned i = 0; i < n; ++i) { |         for (unsigned i = 0; i < n; ++i) { | ||||||
|             literal lit = c[i]; |             literal lit = c[i]; | ||||||
|  | @ -160,12 +153,11 @@ namespace sat { | ||||||
| 
 | 
 | ||||||
|     void drat::bdump(unsigned n, literal const* c, status st) { |     void drat::bdump(unsigned n, literal const* c, status st) { | ||||||
|         unsigned char ch = 0; |         unsigned char ch = 0; | ||||||
|         switch (st.st) { |         if (st.is_redundant()) | ||||||
|         case status::st::asserted: return; |             ch = 'a';  | ||||||
|         case status::st::redundant: ch = 'a'; break; |         else if (st.is_deleted()) | ||||||
|         case status::st::deleted: ch = 'd'; break; |             ch = 'd';  | ||||||
|         default: UNREACHABLE(); break; |         else return; | ||||||
|         } |  | ||||||
|         char buffer[10000]; |         char buffer[10000]; | ||||||
|         int len = 0; |         int len = 0; | ||||||
|         buffer[len++] = ch; |         buffer[len++] = ch; | ||||||
|  | @ -497,7 +489,7 @@ namespace sat { | ||||||
|                 clause& c = *m_proof[i]; |                 clause& c = *m_proof[i]; | ||||||
|                 unsigned j = 0; |                 unsigned j = 0; | ||||||
|                 for (; j < c.size() && c[j] != ~l; ++j) {} |                 for (; j < c.size() && c[j] != ~l; ++j) {} | ||||||
|                 if (st.orig == status::orig::sat && j != c.size()) { |                 if (st.is_sat() && j != c.size()) { | ||||||
|                     lits.append(j, c.begin()); |                     lits.append(j, c.begin()); | ||||||
|                     lits.append(c.size() - j - 1, c.begin() + j + 1); |                     lits.append(c.size() - j - 1, c.begin() + j + 1); | ||||||
|                     if (!is_drup(lits.size(), lits.c_ptr()))  |                     if (!is_drup(lits.size(), lits.c_ptr()))  | ||||||
|  |  | ||||||
|  | @ -501,7 +501,7 @@ namespace sat { | ||||||
|     clause * solver::mk_nary_clause(unsigned num_lits, literal * lits, sat::status st) { |     clause * solver::mk_nary_clause(unsigned num_lits, literal * lits, sat::status st) { | ||||||
|         m_stats.m_mk_clause++; |         m_stats.m_mk_clause++; | ||||||
|         clause * r = alloc_clause(num_lits, lits, st.is_redundant()); |         clause * r = alloc_clause(num_lits, lits, st.is_redundant()); | ||||||
|         SASSERT(!st.is_learned() || r->is_learned()); |         SASSERT(!st.is_redundant() || r->is_learned()); | ||||||
|         bool reinit = attach_nary_clause(*r); |         bool reinit = attach_nary_clause(*r); | ||||||
|         if (reinit && !st.is_redundant()) push_reinit_stack(*r); |         if (reinit && !st.is_redundant()) push_reinit_stack(*r); | ||||||
|         if (st.is_redundant()) { |         if (st.is_redundant()) { | ||||||
|  |  | ||||||
|  | @ -254,26 +254,31 @@ namespace sat { | ||||||
| 
 | 
 | ||||||
|     class status { |     class status { | ||||||
|     public: |     public: | ||||||
|         enum class st { asserted, redundant, deleted } st; |         enum class st { asserted, redundant, deleted }; | ||||||
|         enum class orig { sat, ba, euf } orig; |         enum class orig { sat, ba, euf }; | ||||||
|         status(enum st s, enum orig o) : st(s), orig(o) {}; |         st m_st; | ||||||
|         status(status const& s) : st(s.st), orig(s.orig) {} |         orig m_orig; | ||||||
|         status(status&& s) noexcept { st = st::asserted; orig = orig::sat; std::swap(st, s.st); std::swap(orig, s.orig); } |     public: | ||||||
|  |         status(enum st s, enum orig o) : m_st(s), m_orig(o) {}; | ||||||
|  |         status(status const& s) : m_st(s.m_st), m_orig(s.m_orig) {} | ||||||
|  |         status(status&& s) noexcept { m_st = st::asserted; m_orig = orig::sat; std::swap(m_st, s.m_st); std::swap(m_orig, s.m_orig); } | ||||||
|         static status redundant() { return status(status::st::redundant, status::orig::sat); } |         static status redundant() { return status(status::st::redundant, status::orig::sat); } | ||||||
|         static status asserted() { return status(status::st::asserted, status::orig::sat); } |         static status asserted() { return status(status::st::asserted, status::orig::sat); } | ||||||
|         static status deleted() { return status(status::st::deleted, status::orig::sat); } |         static status deleted() { return status(status::st::deleted, status::orig::sat); } | ||||||
| 
 | 
 | ||||||
|         static status euf_learned() { return status(status::st::redundant, status::orig::euf); } |         static status euf(bool redundant) { return status(redundant ? st::redundant : st::asserted, orig::euf); } | ||||||
|         static status euf_asserted() { return status(status::st::asserted, status::orig::euf); } |  | ||||||
| 
 | 
 | ||||||
|         static status ba(bool redundant) { return redundant ? ba_redundant() : ba_asserted(); } |         static status ba(bool redundant) { return redundant ? ba_redundant() : ba_asserted(); } | ||||||
|         static status ba_redundant() { return status(status::st::redundant, status::orig::ba); } |         static status ba_redundant() { return status(status::st::redundant, status::orig::ba); } | ||||||
|         static status ba_asserted() { return status(status::st::asserted, status::orig::ba); } |         static status ba_asserted() { return status(status::st::asserted, status::orig::ba); } | ||||||
| 
 | 
 | ||||||
|         bool is_redundant() const { return st::redundant == st; } |         bool is_redundant() const { return st::redundant == m_st; } | ||||||
|         bool is_asserted() const { return st::asserted == st; } |         bool is_asserted() const { return st::asserted == m_st; } | ||||||
|         bool is_deleted() const { return st::deleted == st; } |         bool is_deleted() const { return st::deleted == m_st; } | ||||||
|         bool operator==(status const& s) const { return s.orig == orig && s.st == st; } | 
 | ||||||
|  |         bool is_sat() const { return orig::sat == m_orig; } | ||||||
|  |         bool is_ba() const { return orig::ba == m_orig; } | ||||||
|  |         bool is_euf() const { return orig::euf == m_orig; } | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1598,7 +1598,7 @@ namespace sat { | ||||||
|         TRACE("ba", tout << m_lemma << "\n";); |         TRACE("ba", tout << m_lemma << "\n";); | ||||||
| 
 | 
 | ||||||
|         if (get_config().m_drat && m_solver) { |         if (get_config().m_drat && m_solver) { | ||||||
|             s().m_drat.add(m_lemma, sat::status::ba_redundant()); |             s().m_drat.add(m_lemma, sat::status::ba(true)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         s().m_lemma.reset(); |         s().m_lemma.reset(); | ||||||
|  | @ -2140,7 +2140,7 @@ namespace sat { | ||||||
|             for (literal lit : r)  |             for (literal lit : r)  | ||||||
|                 lits.push_back(~lit); |                 lits.push_back(~lit); | ||||||
|             lits.push_back(l); |             lits.push_back(l); | ||||||
|             s().m_drat.add(lits, sat::status::ba_redundant()); |             s().m_drat.add(lits, sat::status::ba(true)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -2923,7 +2923,7 @@ namespace sat { | ||||||
|         } |         } | ||||||
|         if (all_units && sz < k) { |         if (all_units && sz < k) { | ||||||
|             if (c.lit() == null_literal) { |             if (c.lit() == null_literal) { | ||||||
|                 s().mk_clause(0, nullptr, status::ba_redundant());             |                 s().mk_clause(0, nullptr, status::ba(c.learned())); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 literal lit = ~c.lit(); |                 literal lit = ~c.lit(); | ||||||
|  |  | ||||||
|  | @ -194,7 +194,7 @@ namespace euf { | ||||||
|         } |         } | ||||||
|         expr_ref eq(m.mk_eq(a, b), m); |         expr_ref eq(m.mk_eq(a, b), m); | ||||||
|         lits.push_back(s.internalize(eq, false, false, true)); |         lits.push_back(s.internalize(eq, false, false, true)); | ||||||
|         s.s().mk_clause(lits, sat::status::euf_learned()); |         s.s().mk_clause(lits, sat::status::euf(true)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     void ackerman::add_eq(expr* a, expr* b, expr* c) { |     void ackerman::add_eq(expr* a, expr* b, expr* c) { | ||||||
|  | @ -205,6 +205,6 @@ namespace euf { | ||||||
|         lits[0] = s.internalize(eq1, true, false, true); |         lits[0] = s.internalize(eq1, true, false, true); | ||||||
|         lits[1] = s.internalize(eq2, true, false, true); |         lits[1] = s.internalize(eq2, true, false, true); | ||||||
|         lits[2] = s.internalize(eq3, false, false, true); |         lits[2] = s.internalize(eq3, false, false, true); | ||||||
|         s.s().mk_clause(3, lits, sat::status::euf_learned()); |         s.s().mk_clause(3, lits, sat::status::euf(true)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -103,8 +103,8 @@ namespace euf { | ||||||
|         if (lit.sign()) { |         if (lit.sign()) { | ||||||
|             sat::bool_var v = si.add_bool_var(n->get_owner()); |             sat::bool_var v = si.add_bool_var(n->get_owner()); | ||||||
|             sat::literal lit2 = literal(v, false); |             sat::literal lit2 = literal(v, false); | ||||||
|             s().mk_clause(~lit, lit2, sat::status::euf_asserted()); |             s().mk_clause(~lit, lit2, sat::status::euf(false)); | ||||||
|             s().mk_clause(lit, ~lit2, sat::status::euf_asserted()); |             s().mk_clause(lit, ~lit2, sat::status::euf(false)); | ||||||
|             lit = lit2; |             lit = lit2; | ||||||
|         } |         } | ||||||
|         sat::bool_var v = lit.var(); |         sat::bool_var v = lit.var(); | ||||||
|  | @ -132,7 +132,7 @@ namespace euf { | ||||||
|         if (sz <= 1) |         if (sz <= 1) | ||||||
|             return; |             return; | ||||||
| 
 | 
 | ||||||
|         sat::status st = m_is_redundant ? sat::status::euf_learned() : sat::status::euf_asserted(); |         sat::status st = sat::status::euf(m_is_redundant); | ||||||
|         static const unsigned distinct_max_args = 32; |         static const unsigned distinct_max_args = 32; | ||||||
|         if (sz <= distinct_max_args) { |         if (sz <= distinct_max_args) { | ||||||
|             sat::literal_vector lits; |             sat::literal_vector lits; | ||||||
|  | @ -175,7 +175,7 @@ namespace euf { | ||||||
|         SASSERT(m.is_distinct(e)); |         SASSERT(m.is_distinct(e)); | ||||||
|         static const unsigned distinct_max_args = 32; |         static const unsigned distinct_max_args = 32; | ||||||
|         unsigned sz = e->get_num_args(); |         unsigned sz = e->get_num_args(); | ||||||
|         sat::status st = m_is_redundant ? sat::status::euf_learned() : sat::status::euf_asserted(); |         sat::status st = sat::status::euf(m_is_redundant); | ||||||
|         if (sz <= 1) { |         if (sz <= 1) { | ||||||
|             s().mk_clause(0, nullptr, st); |             s().mk_clause(0, nullptr, st); | ||||||
|             return; |             return; | ||||||
|  | @ -209,7 +209,7 @@ namespace euf { | ||||||
| 
 | 
 | ||||||
|     void solver::axiomatize_basic(enode* n) { |     void solver::axiomatize_basic(enode* n) { | ||||||
|         expr* e = n->get_owner(); |         expr* e = n->get_owner(); | ||||||
|         sat::status st = m_is_redundant ? sat::status::euf_learned() : sat::status::euf_asserted(); |         sat::status st = sat::status::euf(m_is_redundant); | ||||||
|         if (m.is_ite(e)) {         |         if (m.is_ite(e)) {         | ||||||
|             app* a = to_app(e); |             app* a = to_app(e); | ||||||
|             expr* c = a->get_arg(0); |             expr* c = a->get_arg(0); | ||||||
|  |  | ||||||
|  | @ -49,7 +49,7 @@ namespace euf { | ||||||
|             for (literal lit : r) lits.push_back(~lit); |             for (literal lit : r) lits.push_back(~lit); | ||||||
|             if (l != sat::null_literal) |             if (l != sat::null_literal) | ||||||
|                 lits.push_back(l); |                 lits.push_back(l); | ||||||
|             s().get_drat().add(lits, sat::status::euf_learned()); |             s().get_drat().add(lits, sat::status::euf(true)); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue