mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	
							parent
							
								
									ce4e71fbe9
								
							
						
					
					
						commit
						62ea86d5d2
					
				
					 1 changed files with 14 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -2024,13 +2024,24 @@ br_status bv_rewriter::mk_bv_nand(unsigned num, expr * const * args, expr_ref &
 | 
			
		|||
    return BR_REWRITE2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
br_status bv_rewriter::mk_bv_nor(unsigned num, expr * const * args, expr_ref & result) {
 | 
			
		||||
    result = m_util.mk_bv_not(m_util.mk_bv_or(num, args));
 | 
			
		||||
br_status bv_rewriter::mk_bv_nor(unsigned num_args, expr * const * args, expr_ref & result) {
 | 
			
		||||
    result = m_util.mk_bv_not(m_util.mk_bv_or(num_args, args));
 | 
			
		||||
    return BR_REWRITE2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
br_status bv_rewriter::mk_bv_xnor(unsigned num_args, expr * const * args, expr_ref & result) {
 | 
			
		||||
    result = m_util.mk_bv_not(m_util.mk_bv_xor(num_args, args));
 | 
			
		||||
    switch (num_args) {
 | 
			
		||||
    case 0: result = m().mk_true(); break;
 | 
			
		||||
    case 1: result = m_util.mk_bv_not(args[0]); break;
 | 
			
		||||
    case 2: result = m_util.mk_bv_not(m_util.mk_bv_xor(num_args, args)); break;
 | 
			
		||||
    default:
 | 
			
		||||
        mk_bv_xnor(2, args, result);
 | 
			
		||||
        for (unsigned i = 2; i < num_args; ++i) {
 | 
			
		||||
            expr* _args[2] = { result, args[i] };
 | 
			
		||||
            mk_bv_xnor(2, _args, result);
 | 
			
		||||
        }
 | 
			
		||||
        return BR_REWRITE_FULL;
 | 
			
		||||
    }
 | 
			
		||||
    return BR_REWRITE2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue