Skip to content

Commit

Permalink
change functionality to not track ite terms for congruence closure
Browse files Browse the repository at this point in the history
  • Loading branch information
NikolajBjorner committed Nov 24, 2022
1 parent 15dc7b7 commit 5fe2ff8
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions src/sat/smt/euf_internalize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -468,12 +468,13 @@ namespace euf {

euf::enode* solver::mk_enode(expr* e, unsigned num, enode* const* args) {

//
// Don't track congruences of Boolean connectives or arguments.
// The assignments to associated literals is sufficient
//

if (si.is_bool_op(e))
num = 0;

enode* n = m_egraph.mk(e, m_generation, num, args);
if (si.is_bool_op(e))
m_egraph.set_cgc_enabled(n, false);

//
// (if p th el) (non-Boolean case) produces clauses
Expand All @@ -484,6 +485,10 @@ namespace euf {
//
if (m.is_ite(e))
num = 0;

enode* n = m_egraph.mk(e, m_generation, num, args);
if (si.is_bool_op(e))
m_egraph.set_cgc_enabled(n, false);

//
// To track congruences of Boolean children under non-Boolean
Expand Down

0 comments on commit 5fe2ff8

Please sign in to comment.