* Add option sygus-abort-size, which tells the enumerative SyGuS solver to abort when it reaches a given term size.
* Apply clang format.
if and how to apply fairness for sygus
option sygusFairMax --sygus-fair-max bool :default true
use max instead of sum for multi-function sygus conjectures
+option sygusAbortSize --sygus-abort-size=N int :default -1
+ tells enumerative sygus to only consider solutions up to term size N (-1 == no limit, default)
endmodule
option ufssTotalitySymBreak --uf-ss-totality-sym-break bool :default false
apply symmetry breaking for totality axioms
option ufssAbortCardinality --uf-ss-abort-card=N int :default -1
- tells the uf strong solver a cardinality to abort at (-1 == no limit, default)
+ tells the uf strong solver to only consider models that interpret uninterpreted sorts of cardinality at most N (-1 == no limit, default)
option ufssExplainedCliques --uf-ss-explained-cliques bool :default false
use explained clique lemmas for uf strong solver
option ufssSimpleCliques --uf-ss-simple-cliques bool :default true
if( options::sygusFair()!=SYGUS_FAIR_NONE ){
std::map< unsigned, Node >::iterator it = d_lits.find( s );
if( it==d_lits.end() ){
+ if (options::sygusAbortSize() != -1 &&
+ static_cast<int>(s) > options::sygusAbortSize()) {
+ Message() << "Maximum term size (" << options::sygusAbortSize()
+ << ") for enumerative SyGuS exceeded." << std::endl;
+ exit(1);
+ }
Assert( !d_this.isNull() );
Node c = NodeManager::currentNM()->mkConst( Rational( s ) );
Node lit = NodeManager::currentNM()->mkNode( DT_SYGUS_BOUND, d_this, c );
}while( increment );
//check for abort case
- if( options::ufssAbortCardinality()==d_aloc_cardinality ){
- Message() << "Maximum cardinality reached." << std::endl;
+ if (options::ufssAbortCardinality() != -1 &&
+ d_aloc_cardinality >= options::ufssAbortCardinality()) {
+ Message() << "Maximum cardinality (" << options::ufssAbortCardinality()
+ << ") for finite model finding exceeded." << std::endl;
exit( 1 );
}else{
if( applyTotality( d_aloc_cardinality ) ){