mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	try exponential delay in grobner
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
This commit is contained in:
		
							parent
							
								
									1e476b411f
								
							
						
					
					
						commit
						b21d48ee23
					
				
					 2 changed files with 16 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -47,9 +47,22 @@ namespace nla {
 | 
			
		|||
        if (m_quota == 0)
 | 
			
		||||
            m_quota = c().params().arith_nl_gr_q();                    
 | 
			
		||||
 | 
			
		||||
        bool const use_exp_delay = c().params().arith_nl_grobner_exp_delay();
 | 
			
		||||
 | 
			
		||||
        if (m_quota == 1) {
 | 
			
		||||
            m_delay_base++;
 | 
			
		||||
            m_delay = m_delay_base;
 | 
			
		||||
            if (use_exp_delay) {
 | 
			
		||||
                constexpr unsigned delay_cap = 1000000;
 | 
			
		||||
                if (m_delay_base == 0)
 | 
			
		||||
                    m_delay_base = 1;
 | 
			
		||||
                else if (m_delay_base < delay_cap) {
 | 
			
		||||
                    m_delay_base *= 2;
 | 
			
		||||
                    if (m_delay_base > delay_cap)
 | 
			
		||||
                        m_delay_base = delay_cap;
 | 
			
		||||
                }
 | 
			
		||||
                m_delay = m_delay_base;
 | 
			
		||||
            }
 | 
			
		||||
            else
 | 
			
		||||
                m_delay = ++m_delay_base;
 | 
			
		||||
            m_quota = c().params().arith_nl_gr_q();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -80,6 +80,7 @@ def_module_params(module_name='smt',
 | 
			
		|||
                          ('arith.nl.grobner_cnfl_to_report', UINT, 1, 'grobner\'s maximum number of conflicts to report'),
 | 
			
		||||
                          ('arith.nl.grobner_propagate_quotients', BOOL, True, 'detect conflicts x*y + z = 0 where x doesn\'t divide z'),
 | 
			
		||||
                          ('arith.nl.grobner_gcd_test', BOOL, True, 'detect gcd conflicts for polynomial powers x^k - y = 0'),
 | 
			
		||||
                          ('arith.nl.grobner_exp_delay', BOOL, False, 'use exponential delay between grobner basis attempts'),
 | 
			
		||||
                          ('arith.nl.gr_q', UINT, 10, 'grobner\'s quota'),
 | 
			
		||||
                          ('arith.nl.grobner_subs_fixed', UINT, 1, '0 - no subs, 1 - substitute, 2 - substitute fixed zeros only'),   
 | 
			
		||||
                          ('arith.nl.grobner_expand_terms', BOOL, True, 'expand terms before computing grobner basis'),
 | 
			
		||||
| 
						 | 
				
			
			@ -140,4 +141,3 @@ def_module_params(module_name='smt',
 | 
			
		|||
                          ('dt_lazy_splits', UINT, 1, 'How lazy datatype splits are performed: 0- eager, 1- lazy for infinite types, 2- lazy'),
 | 
			
		||||
                          ('qsat_use_qel', BOOL, True, 'Use QEL for lite quantifier elimination and model-based projection in QSAT')
 | 
			
		||||
                          ))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue