mirror of
				https://github.com/Z3Prover/z3
				synced 2025-10-30 19:22:28 +00:00 
			
		
		
		
	Shuffle assumptions on every call
Order of assumptions appears to make a huge difference on what lemmas are discovered. Shuffling the assumptions ensures that the solver is never stuck with any bad order.
This commit is contained in:
		
							parent
							
								
									6422fa3739
								
							
						
					
					
						commit
						bd63458778
					
				
					 2 changed files with 5 additions and 0 deletions
				
			
		|  | @ -56,6 +56,7 @@ prop_solver::prop_solver(ast_manager &m, | |||
|     m_use_push_bg(p.spacer_keep_proxy()) | ||||
| { | ||||
| 
 | ||||
|     m_random.set_seed(p.spacer_random_seed()); | ||||
|     m_solvers[0] = solver0; | ||||
|     m_solvers[1] = solver1; | ||||
| 
 | ||||
|  | @ -363,6 +364,8 @@ lbool prop_solver::check_assumptions(const expr_ref_vector & _hard, | |||
|     hard.append(_hard.size(), _hard.c_ptr()); | ||||
|     flatten_and(hard); | ||||
| 
 | ||||
|     shuffle(hard.size(), hard.c_ptr(), m_random); | ||||
| 
 | ||||
|     m_ctx = m_contexts [solver_id == 0 ? 0 : 0 /* 1 */].get(); | ||||
| 
 | ||||
|     // can be disabled if use_push_bg == true
 | ||||
|  |  | |||
|  | @ -61,6 +61,8 @@ private: | |||
|     bool                m_use_push_bg; | ||||
|     unsigned            m_current_level;    // set when m_in_level
 | ||||
| 
 | ||||
|     random_gen          m_random; | ||||
| 
 | ||||
|     void assert_level_atoms(unsigned level); | ||||
| 
 | ||||
|     void ensure_level(unsigned lvl); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue