mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	fix zero_ext constraint (2)
This commit is contained in:
		
							parent
							
								
									6e9f07e7c5
								
							
						
					
					
						commit
						63e81e2bb0
					
				
					 1 changed files with 8 additions and 7 deletions
				
			
		| 
						 | 
				
			
			@ -639,18 +639,19 @@ namespace polysat {
 | 
			
		|||
        unsigned const v_sz = p_sz + extra_bits;
 | 
			
		||||
        if (p.is_val())
 | 
			
		||||
            return s.sz2pdd(v_sz).mk_val(p.val());
 | 
			
		||||
        pdd const q = s.var(s.m_names.mk_name(p));
 | 
			
		||||
        constraint_dedup::bv_ext_args const args = {false, q.var(), extra_bits};
 | 
			
		||||
        pvar const p_name = s.m_names.mk_name(p);
 | 
			
		||||
        constraint_dedup::bv_ext_args const args = {false, p_name, extra_bits};
 | 
			
		||||
        auto const it = m_dedup.m_bv_ext_expr.find_iterator(args);
 | 
			
		||||
        if (it != m_dedup.m_bv_ext_expr.end())
 | 
			
		||||
            return s.var(it->m_value);
 | 
			
		||||
        pdd const v = s.var(s.add_var(v_sz));
 | 
			
		||||
        m_dedup.m_bv_ext_expr.insert(args, v.var());
 | 
			
		||||
        pvar const v = s.add_var(v_sz);
 | 
			
		||||
        pdd const V = s.var(v);
 | 
			
		||||
        m_dedup.m_bv_ext_expr.insert(args, v);
 | 
			
		||||
        // (1)  v[|p|-1:0] = p
 | 
			
		||||
        s.add_eq(q, extract(v, p.power_of_2() - 1, 0));
 | 
			
		||||
        s.add_eq(extract(V, p_sz - 1, 0), s.var(p_name));
 | 
			
		||||
        // (2)  v < 2^|p|
 | 
			
		||||
        s.add_ule(q, p.manager().max_value());
 | 
			
		||||
        return v;
 | 
			
		||||
        s.add_ule(V, p.manager().max_value());
 | 
			
		||||
        return V;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pdd constraint_manager::sign_ext(pdd const& p, unsigned extra_bits) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue