}
Node SygusExtension::getRelevancyCondition( Node n ) {
+ if (!options::sygusSymBreakRlv())
+ {
+ return Node::null();
+ }
std::map< Node, Node >::iterator itr = d_rlv_cond.find( n );
if( itr==d_rlv_cond.end() ){
Node cond;
- if( n.getKind()==APPLY_SELECTOR_TOTAL && options::sygusSymBreakRlv() ){
+ if (n.getKind() == APPLY_SELECTOR_TOTAL)
+ {
TypeNode ntn = n[0].getType();
const DType& dt = ntn.getDType();
Node sel = n.getOperator();
for (const Node& lem : it->second)
{
Node slem = lem.substitute(x, t, cache);
- slem = nm->mkNode(OR, rlv, slem);
+ if (!rlv.isNull())
+ {
+ slem = nm->mkNode(OR, rlv, slem);
+ }
lemmas.push_back(slem);
}
}
regress1/sygus/issue3944-div-rewrite.smt2
regress1/sygus/issue3947-agg-miniscope.smt2
regress1/sygus/issue4009-qep.smt2
+ regress1/sygus/issue4025-no-rlv-cond.smt2
regress1/sygus/large-const-simp.sy
regress1/sygus/let-bug-simp.sy
regress1/sygus/list-head-x.sy
--- /dev/null
+(set-logic ALL)
+(set-option :sygus-inference true)
+(set-option :sygus-sym-break false)
+(set-option :sygus-sym-break-lazy false)
+(set-option :sygus-sym-break-rlv false)
+(set-info :status sat)
+(declare-fun s () String)
+(assert (distinct s ""))
+(check-sat)