mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	handle better cancellation for parallel, switch between cube mode and base level mode in smt.threads, expose parameters to control theory_bv and phase caching
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									fae206b738
								
							
						
					
					
						commit
						ca3ec22b7a
					
				
					 18 changed files with 261 additions and 149 deletions
				
			
		| 
						 | 
				
			
			@ -11,6 +11,8 @@ def_module_params(module_name='smt',
 | 
			
		|||
                          ('restricted_quasi_macros', BOOL, False, 'try to find universally quantified formulas that are restricted quasi-macros'),
 | 
			
		||||
                          ('ematching', BOOL, True, 'E-Matching based quantifier instantiation'),
 | 
			
		||||
                          ('phase_selection', UINT, 3, 'phase selection heuristic: 0 - always false, 1 - always true, 2 - phase caching, 3 - phase caching conservative, 4 - phase caching conservative 2, 5 - random, 6 - number of occurrences, 7 - theory'),
 | 
			
		||||
	                  ('phase_caching_on', UINT, 400, 'number of conflicts while phase caching is on'),
 | 
			
		||||
	                  ('phase_caching_off', UINT, 100, 'number of conflicts while phase caching is off'),
 | 
			
		||||
                          ('restart_strategy', UINT, 1, '0 - geometric, 1 - inner-outer-geometric, 2 - luby, 3 - fixed, 4 - arithmetic'),
 | 
			
		||||
                          ('restart_factor', DOUBLE, 1.1, 'when using geometric (or inner-outer-geometric) progression of restarts, it specifies the constant used to multiply the current restart threshold'),
 | 
			
		||||
                          ('case_split', UINT, 1, '0 - case split based on variable activity, 1 - similar to 0, but delay case splits created during the search, 2 - similar to 0, but cache the relevancy, 3 - case split based on relevancy (structural splitting), 4 - case split on relevancy and activity, 5 - case split on relevancy and current goal, 6 - activity-based case split with theory-aware branching activity'),
 | 
			
		||||
| 
						 | 
				
			
			@ -20,8 +22,10 @@ def_module_params(module_name='smt',
 | 
			
		|||
                          ('refine_inj_axioms', BOOL, True, 'refine injectivity axioms'),
 | 
			
		||||
                          ('max_conflicts', UINT, UINT_MAX, 'maximum number of conflicts before giving up.'),
 | 
			
		||||
                          ('restart.max', UINT, UINT_MAX, 'maximal number of restarts.'),
 | 
			
		||||
	                  ('cube_depth', UINT, 1, 'cube depth.'),
 | 
			
		||||
                          ('threads', UINT, 1, 'maximal number of parallel threads.'),
 | 
			
		||||
                          ('threads.max_conflicts', UINT, 400, 'maximal number of conflicts between rounds of cubing for parallel SMT'),
 | 
			
		||||
                          ('threads.cube_frequency', UINT, 2, 'frequency for using cubing'), 
 | 
			
		||||
                          ('mbqi', BOOL, True, 'model based quantifier instantiation (MBQI)'),
 | 
			
		||||
                          ('mbqi.max_cexs', UINT, 1, 'initial maximal number of counterexamples used in MBQI, each counterexample generates a quantifier instantiation'),
 | 
			
		||||
                          ('mbqi.max_cexs_incr', UINT, 0, 'increment for MBQI_MAX_CEXS, the increment is performed after each round of MBQI'),
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +44,8 @@ def_module_params(module_name='smt',
 | 
			
		|||
                          ('induction', BOOL, False, 'enable generation of induction lemmas'),
 | 
			
		||||
                          ('bv.reflect', BOOL, True, 'create enode for every bit-vector term'),
 | 
			
		||||
                          ('bv.enable_int2bv', BOOL, True, 'enable support for int2bv and bv2int operators'),
 | 
			
		||||
	                  ('bv.eq_axioms', BOOL, True, 'add dynamic equality axioms'),
 | 
			
		||||
                          ('bv.watch_diseq', BOOL, False, 'use watch lists instead of eager axioms for bit-vectors'),
 | 
			
		||||
                          ('arith.random_initial_value', BOOL, False, 'use random initial values in the simplex-based procedure for linear arithmetic'),
 | 
			
		||||
                          ('arith.cheap_eqs', BOOL, True, 'false - do not run, true - run cheap equality heuristic'),
 | 
			
		||||
                          ('arith.solver', UINT, 6, 'arithmetic solver: 0 - no solver, 1 - bellman-ford based solver (diff. logic only), 2 - simplex based solver, 3 - floyd-warshall based solver (diff. logic only) and no theory combination 4 - utvpi, 5 - infinitary lra, 6 - lra solver'),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue