mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-31 19:52:29 +00:00 
			
		
		
		
	using a queue for disequality propagaiton was a regression: values of numerals can change along the same stack so prior passing the filter does not mean it passes later.
This commit is contained in:
		
							parent
							
								
									79b4357442
								
							
						
					
					
						commit
						c41b6da6bb
					
				
					 2 changed files with 3 additions and 5 deletions
				
			
		|  | @ -1114,12 +1114,11 @@ namespace arith { | |||
| 
 | ||||
|     bool solver::check_delayed_eqs() { | ||||
|         bool found_diseq = false; | ||||
|         if (m_delayed_eqs_qhead == m_delayed_eqs.size()) | ||||
|         if (m_delayed_eqs.empty()) | ||||
|             return true; | ||||
|         force_push(); | ||||
|         ctx.push(value_trail<unsigned>(m_delayed_eqs_qhead)); | ||||
|         for (; m_delayed_eqs_qhead < m_delayed_eqs.size(); ++ m_delayed_eqs_qhead) { | ||||
|             auto p = m_delayed_eqs[m_delayed_eqs_qhead]; | ||||
|         for (unsigned i; i < m_delayed_eqs.size(); ++i) { | ||||
|             auto p = m_delayed_eqs[i]; | ||||
|             auto const& e = p.first; | ||||
|             if (p.second) | ||||
|                 new_eq_eh(e); | ||||
|  |  | |||
|  | @ -218,7 +218,6 @@ namespace arith { | |||
|         svector<euf::enode_pair>                      m_equalities;      // asserted rows corresponding to equalities.
 | ||||
|         svector<theory_var>                           m_definitions;     // asserted rows corresponding to definitions
 | ||||
|         svector<std::pair<euf::th_eq, bool>>          m_delayed_eqs; | ||||
|         unsigned                                      m_delayed_eqs_qhead = 0; | ||||
| 
 | ||||
|         literal_vector  m_asserted; | ||||
|         expr* m_not_handled{ nullptr }; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue