mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	add case for ite
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
		
							parent
							
								
									5365952796
								
							
						
					
					
						commit
						f422e26b3c
					
				
					 3 changed files with 11 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -2476,7 +2476,10 @@ namespace sls {
 | 
			
		|||
            return ctx.get_value(e->get_arg(0)) == ctx.get_value(e->get_arg(1));            
 | 
			
		||||
        case OP_DISTINCT:
 | 
			
		||||
            return false;
 | 
			
		||||
        case OP_ITE:
 | 
			
		||||
            return get_bool_value(e->get_arg(0)) ? get_bool_value(e->get_arg(1)) : get_bool_value(e->get_arg(2));
 | 
			
		||||
        default:
 | 
			
		||||
            verbose_stream() << mk_pp(e, m) << "\n";
 | 
			
		||||
            NOT_IMPLEMENTED_YET();
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -431,6 +431,7 @@ namespace smt {
 | 
			
		|||
        justification * js = nullptr;
 | 
			
		||||
        if (m.proofs_enabled())
 | 
			
		||||
            js = alloc(dyn_ack_cc_justification, n1, n2);
 | 
			
		||||
        verbose_stream() << "dynack-clause\n";
 | 
			
		||||
        clause * cls = m_context.mk_clause(lits.size(), lits.data(), js, CLS_TH_LEMMA, del_eh);
 | 
			
		||||
        if (!cls) {
 | 
			
		||||
            dealloc(del_eh);
 | 
			
		||||
| 
						 | 
				
			
			@ -490,6 +491,7 @@ namespace smt {
 | 
			
		|||
        ctx.mark_as_relevant(eq1);
 | 
			
		||||
        ctx.mark_as_relevant(eq2);
 | 
			
		||||
        ctx.mark_as_relevant(eq3);
 | 
			
		||||
        verbose_stream() << "dynack-transitivity\n";
 | 
			
		||||
        clause * cls = ctx.mk_clause(lits.size(), lits.data(), js, CLS_TH_LEMMA, del_eh);
 | 
			
		||||
        if (!cls) {
 | 
			
		||||
            dealloc(del_eh);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3438,6 +3438,7 @@ public:
 | 
			
		|||
            VERIFY(validate_conflict());
 | 
			
		||||
        if (params().m_arith_dump_lemmas)
 | 
			
		||||
            dump_conflict();
 | 
			
		||||
 | 
			
		||||
        if (is_conflict) {
 | 
			
		||||
            ctx().set_conflict(
 | 
			
		||||
                ctx().mk_justification(
 | 
			
		||||
| 
						 | 
				
			
			@ -3751,19 +3752,22 @@ public:
 | 
			
		|||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    unsigned m_num_dumped_lemmas = 0;
 | 
			
		||||
 | 
			
		||||
    void dump_assign_lemma(literal lit) {
 | 
			
		||||
        m_core.push_back(~lit);
 | 
			
		||||
        std::cout << "; assign lemma " << (m_num_dumped_lemmas++) << "\n";
 | 
			
		||||
        ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), lit);
 | 
			
		||||
        m_core.pop_back();
 | 
			
		||||
        std::cout << "(reset)\n";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void dump_conflict() {
 | 
			
		||||
        std::cout << "; conflict " << (m_num_dumped_lemmas++) << "\n";
 | 
			
		||||
        ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data());
 | 
			
		||||
        std::cout << "(reset)\n";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void dump_eq(enode* x, enode* y) {
 | 
			
		||||
        std::cout << "; equality propagation " << (m_num_dumped_lemmas++) << "\n";
 | 
			
		||||
        ctx().display_lemma_as_smt_problem(std::cout, m_core.size(), m_core.data(), m_eqs.size(), m_eqs.data(), false_literal, symbol::null, x, y);
 | 
			
		||||
        std::cout << "(reset)\n";
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue