/** get next decision request */
Node StrongSolverTheoryUF::getNextDecisionRequest(){
//request the combined cardinality as a decision literal, if not already asserted
- int comCard = 0;
- Node com_lit;
- do {
- com_lit = d_com_card_literal.find( comCard )!=d_com_card_literal.end() ? d_com_card_literal[comCard] : Node::null();
- if( d_com_card_assertions.find( com_lit )==d_com_card_assertions.end() ){
- Trace("uf-ss-dec") << "Decide on combined cardinality : " << com_lit << std::endl;
- return com_lit;
- }
- comCard++;
- }while( !com_lit.isNull() );
+ if( options::ufssFairness() ){
+ int comCard = 0;
+ Node com_lit;
+ do {
+ com_lit = d_com_card_literal.find( comCard )!=d_com_card_literal.end() ? d_com_card_literal[comCard] : Node::null();
+ if( !com_lit.isNull() && d_com_card_assertions.find( com_lit )==d_com_card_assertions.end() ){
+ Trace("uf-ss-dec") << "Decide on combined cardinality : " << com_lit << std::endl;
+ return com_lit;
+ }
+ comCard++;
+ }while( !com_lit.isNull() );
+ }
//otherwise, check each individual sort
for( std::map< TypeNode, SortModel* >::iterator it = d_rep_model.begin(); it != d_rep_model.end(); ++it ){
Node n = it->second->getNextDecisionRequest();