n = d_equalityEngine.getRepresentative( n );
if( d_reps.find( n )==d_reps.end() ){
d_reps[n] = ret;
+ d_rep_set.add( ret );
}
//TODO: make sure that this doesn't affect the representatives in the equality engine
// in other words, we need to be sure that all representatives of the equality engine
use smart splitting heuristic for uf strong solver
option ufssModelInference --uf-ss-model-infer bool :default false
use model inference method for uf strong solver
-
+option ufssSimpleCliques --uf-ss-simple-cliques bool :default false
+ add simple clique lemmas for uf strong solver
endmodule
while( clique.size()>size_t(d_cardinality+1) ){
clique.pop_back();
}
+ if( options::ufssSimpleCliques() ){
+ //add as lemma
+ std::vector< Node > eqs;
+ for( int i=0; i<(int)clique.size(); i++ ){
+ for( int j=0; j<i; j++ ){
+ eqs.push_back( clique[i].eqNode( clique[j] ) );
+ }
+ }
+ eqs.push_back( d_cardinality_literal[ d_cardinality ].notNode() );
+ Node lem = NodeManager::currentNM()->mkNode( OR, eqs );
+ out->lemma( lem );
+ return;
+ }
if( options::ufssModelInference() || Trace.isOn("uf-ss-cliques") ){
std::vector< Node > clique_vec;
clique_vec.insert( clique_vec.begin(), clique.begin(), clique.end() );